SmartSnippets DA1459x SDK
ad_nvms.h
Go to the documentation of this file.
1 
44 #ifndef AD_NVMS_H_
45 #define AD_NVMS_H_
46 
47 #if dg_configNVMS_ADAPTER
48 
49 #include <stdlib.h>
50 #include <stdint.h>
51 #include <stdbool.h>
52 #include "ad_flash.h"
53 #include "partition_def.h"
54 #include "sdk_defs.h"
55 
56 /*
57  * DEFINES
58  ****************************************************************************************
59  */
60 
61 typedef void *nvms_t;
62 
66 void ad_nvms_init(void);
67 
78 
84 size_t ad_nvms_get_size(nvms_t handle);
85 
96 int ad_nvms_read(nvms_t handle, uint32_t addr, uint8_t *buf, uint32_t len);
97 
111 int ad_nvms_write(nvms_t handle, uint32_t addr, const uint8_t *buf, uint32_t size);
112 
125 bool ad_nvms_erase_region(nvms_t handle, uint32_t addr, size_t size);
126 
145 size_t ad_nvms_get_pointer(nvms_t handle, uint32_t addr, size_t size, const void **ptr);
146 
155 size_t ad_nvms_erase_size(nvms_t handle);
156 
160 struct partition_t;
161 
165 typedef struct driver_t {
166  bool (* bind)(struct partition_t *part);
167  size_t (* get_size)(struct partition_t *part);
168  int (* read)(struct partition_t *part, uint32_t addr, uint8_t *buf, uint32_t size);
169  int (* write)(struct partition_t *part, uint32_t addr, const uint8_t *buf, uint32_t size);
170  bool (* erase)(struct partition_t *part, uint32_t addr, uint32_t size);
171  size_t (* get_ptr)(struct partition_t *part, uint32_t addr, uint32_t size, const void **ptr);
172  void (* flush)(struct partition_t *part, bool free_mem);
174 
178 typedef struct partition_t {
179  struct partition_t *next;
181  void *driver_data;
183 } partition_t;
184 
191 size_t ad_nvms_get_partition_count(void);
192 
199 bool ad_nvms_get_partition_info(size_t index, partition_entry_t *info);
200 
229 bool ad_nvms_no_cache_flushing(nvms_t handle, uint32_t base, uint32_t size);
230 
236 __STATIC_INLINE void ad_nvms_mandatory_cache_flushing(void)
237 {
239 }
240 
253 void ad_nvms_flush(nvms_t handle, bool free_mem);
254 
255 #endif /* dg_configNVMS_ADAPTER */
256 
257 #endif /* AD_NVMS_H_ */
258 
ad_nvms_get_pointer
size_t ad_nvms_get_pointer(nvms_t handle, uint32_t addr, size_t size, const void **ptr)
Get direct read buffer pointer.
ad_nvms_init
void ad_nvms_init(void)
Initialize NVMS adapter.
ad_nvms_get_size
size_t ad_nvms_get_size(nvms_t handle)
Get partition size.
partition_t::driver
const partition_driver_t * driver
Definition: ad_nvms.h:180
partition_t
struct partition_t partition_t
Partition structure for RAM.
ad_nvms_erase_size
size_t ad_nvms_erase_size(nvms_t handle)
Get partition erase size.
sdk_defs.h
Central include header file with platform definitions.
ad_flash.h
Flash adapter API.
driver_t
Partition driver functions.
Definition: ad_nvms.h:165
partition_t
Partition structure for RAM.
Definition: ad_nvms.h:178
ad_nvms_flush
void ad_nvms_flush(nvms_t handle, bool free_mem)
Flush all data buffered in RAM to partition.
ad_nvms_write
int ad_nvms_write(nvms_t handle, uint32_t addr, const uint8_t *buf, uint32_t size)
Writes data to partition.
ad_flash_skip_cache_flushing
void ad_flash_skip_cache_flushing(uint32_t base, uint32_t size)
Control cache flushing on modifications to a specified flash region.
partition_t::next
struct partition_t * next
Definition: ad_nvms.h:179
AD_FLASH_ALWAYS_FLUSH_CACHE
#define AD_FLASH_ALWAYS_FLUSH_CACHE
Special base address used to return to the default cache flushing mode.
Definition: ad_flash.h:223
partition_entry_t
Partition entry.
Definition: partition_def.h:57
ad_nvms_get_partition_count
size_t ad_nvms_get_partition_count(void)
Get partition count.
partition_def.h
Partition table entry definition.
nvms_partition_id_t
nvms_partition_id_t
NVMS Partition IDs.
Definition: partition_def.h:40
ad_nvms_no_cache_flushing
bool ad_nvms_no_cache_flushing(nvms_t handle, uint32_t base, uint32_t size)
Control cache flushing on modifications (writes or erases) to a partition.
ad_nvms_erase_region
bool ad_nvms_erase_region(nvms_t handle, uint32_t addr, size_t size)
Erase partition region.
ad_nvms_get_partition_info
bool ad_nvms_get_partition_info(size_t index, partition_entry_t *info)
Get partition info.
ad_nvms_mandatory_cache_flushing
__STATIC_INLINE void ad_nvms_mandatory_cache_flushing(void)
Definition: ad_nvms.h:236
ad_nvms_open
nvms_t ad_nvms_open(nvms_partition_id_t id)
Open partition to read/write access.
partition_driver_t
struct driver_t partition_driver_t
Partition driver functions.
ad_nvms_read
int ad_nvms_read(nvms_t handle, uint32_t addr, uint8_t *buf, uint32_t len)
Read partition data.
partition_t::data
partition_entry_t data
Definition: ad_nvms.h:182