18#if VSF_HAL_USE_FLASH == ENABLED
24#define vsf_real_flash_t VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_t)
25#define vsf_real_flash_capability VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_capability)
26#define vsf_real_flash_get_configuration VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_get_configuration)
27#define vsf_real_flash_erase_all VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_all)
28#define vsf_real_flash_erase_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_one_sector)
29#define vsf_real_flash_erase_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_multi_sector)
30#define vsf_real_flash_write_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_write_one_sector)
31#define vsf_real_flash_write_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_write_multi_sector)
32#define vsf_real_flash_read_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_read_one_sector)
33#define vsf_real_flash_read_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_read_multi_sector)
35#ifndef VSF_FLASH_CFG_REIMPLEMENT_API_GET_CONFIGURATION
36# define VSF_FLASH_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
39#ifndef VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY
40# define VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
43#ifdef VSF_FLASH_CFG_IMP_REMAP_PREFIX
44# undef VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY
45# define VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
46# undef VSF_FLASH_CFG_REIMPLEMENT_API_GET_CONFIGURATION
47# define VSF_FLASH_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
50#if VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
51# ifndef VSF_FLASH_CFG_CAPABILITY_IRQ_MASK
52# define VSF_FLASH_CFG_CAPABILITY_IRQ_MASK VSF_FLASH_IRQ_ALL_BITS_MASK
54# ifndef VSF_FLASH_CFG_CAPABILITY_BASE_ADDRESS
55# define VSF_FLASH_CFG_CAPABILITY_BASE_ADDRESS 0
57# ifndef VSF_FLASH_CFG_CAPABILITY_MAX_SIZE
58# error "Please define flash size macro 'VSF_FLASH_CFG_CAPABILITY_MAX_SIZE' in source files"
60# ifndef VSF_FLASH_CFG_CAPABILITY_ERASE_SECTORE_SIZE
61# define VSF_FLASH_CFG_CAPABILITY_ERASE_SECTORE_SIZE 4096
63# ifndef VSF_FLASH_CFG_CAPABILITY_WRITE_SECTORE_SIZE
64# define VSF_FLASH_CFG_CAPABILITY_WRITE_SECTORE_SIZE 512
66# ifndef VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_WRITE
67# define VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_WRITE 0
69# ifndef VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_READ
70# define VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_READ 1
81#if VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
85 .irq_mask = VSF_FLASH_CFG_CAPABILITY_IRQ_MASK,
87 .max_size = VSF_FLASH_CFG_CAPABILITY_MAX_SIZE,
88 .erase_sector_size = VSF_FLASH_CFG_CAPABILITY_ERASE_SECTORE_SIZE,
89 .write_sector_size = VSF_FLASH_CFG_CAPABILITY_WRITE_SECTORE_SIZE,
90 .none_sector_aligned_write = VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_WRITE,
91 .none_sector_aligned_read = VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_READ,
96 return flash_capability;
100#if VSF_FLASH_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
113#if VSF_FLASH_CFG_ERASE_ONE_SECTOR_TEMPLATE == ENABLED
127#if VSF_FLASH_CFG_ERASE_MULTI_SECTOR_TEMPLATE == ENABLED
128# error not supported yet
131#if VSF_FLASH_CFG_ERASE_ALL_TEMPLATE == ENABLED
132vsf_err_t vsf_real_flash_erase_all(vsf_real_flash_t *real_flash_ptr)
141 return vsf_real_flash_erase_multi_sector(real_flash_ptr, 0, flash_capability.
max_size);
145#if VSF_FLASH_CFG_WRITE_ONE_SECTOR_TEMPLATE == ENABLED
154 return vsf_real_flash_write_multi_sector(real_flash_ptr,
offset, buffer,
size);
158#if VSF_FLASH_CFG_WRITE_MULTI_SECTOR_TEMPLATE == ENABLED
159# error not supported yet
162#if VSF_FLASH_CFG_READ_ONE_SECTOR_TEMPLATE == ENABLED
171 return vsf_real_flash_read_multi_sector(real_flash_ptr,
offset, buffer,
size);
175#if VSF_FLASH_CFG_READ_MULTI_SECTOR_TEMPLATE == ENABLED
176# error not supported yet
181#undef VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY
182#undef VSF_FLASH_CFG_REIMPLEMENT_API_GET_CONFIGURATION
183#undef VSF_FLASH_CFG_CAPABILITY_IRQ_MASK
184#undef VSF_FLASH_CFG_CAPABILITY_BASE_ADDRESS
185#undef VSF_FLASH_CFG_CAPABILITY_MAX_SIZE
186#undef VSF_FLASH_CFG_CAPABILITY_ERASE_SECTORE_SIZE
187#undef VSF_FLASH_CFG_CAPABILITY_WRITE_SECTORE_SIZE
188#undef VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_WRITE
189#undef VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_READ
191#undef vsf_real_flash_t
192#undef vsf_real_flash_erase_all
193#undef vsf_real_flash_erase_one_sector
194#undef vsf_real_flash_erase_multi_sector
195#undef vsf_real_flash_write_one_sector
196#undef vsf_real_flash_write_multi_sector
197#undef vsf_real_flash_read_one_sector
198#undef vsf_real_flash_read_multi_sector
199#undef vsf_real_flash_capability
200#undef vsf_real_flash_get_configuration
204#ifdef VSF_FLASH_CFG_IMP_REMAP_PREFIX
205# define vsf_imp_flash_t VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_t)
206# define vsf_imp_flash_init VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_init)
207# define vsf_imp_flash_fini VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_fini)
208# define vsf_imp_flash_enable VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_enable)
209# define vsf_imp_flash_disable VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_disable)
210# define vsf_imp_flash_capability VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_capability)
211# define vsf_imp_flash_status VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_status)
212# define vsf_imp_flash_irq_enable VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_irq_enable)
213# define vsf_imp_flash_irq_disable VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_irq_disable)
214# define vsf_imp_flash_erase_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_one_sector)
215# define vsf_imp_flash_erase_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_multi_sector)
216# define vsf_imp_flash_erase VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_multi_sector)
217# define vsf_imp_flash_erase_all VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_all)
218# define vsf_imp_flash_write_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_write_one_sector)
219# define vsf_imp_flash_write_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_write_multi_sector)
220# define vsf_imp_flash_write VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_write_multi_sector)
221# define vsf_imp_flash_read_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_read_one_sector)
222# define vsf_imp_flash_read_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_read_multi_sector)
223# define vsf_imp_flash_read VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_read_multi_sector)
224# define vsf_imp_flash_get_configuration VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_get_configuration)
226# define vsf_remap_flash_t VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_t)
227# define vsf_remap_flash_init VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_init)
228# define vsf_remap_flash_fini VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_fini)
229# define vsf_remap_flash_enable VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_enable)
230# define vsf_remap_flash_disable VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_disable)
231# define vsf_remap_flash_capability VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_capability)
232# define vsf_remap_flash_status VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_status)
233# define vsf_remap_flash_irq_enable VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_irq_enable)
234# define vsf_remap_flash_irq_disable VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_irq_disable)
235# define vsf_remap_flash_erase_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_erase_one_sector)
236# define vsf_remap_flash_erase_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_erase_multi_sector)
237# define vsf_remap_flash_erase VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_erase_multi_sector)
238# define vsf_remap_flash_erase_all VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_erase_all)
239# define vsf_remap_flash_write_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_write_one_sector)
240# define vsf_remap_flash_write_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_write_multi_sector)
241# define vsf_remap_flash_write VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_write_multi_sector)
242# define vsf_remap_flash_read_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_read_one_sector)
243# define vsf_remap_flash_read_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_read_multi_sector)
244# define vsf_remap_flash_read VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_read_multi_sector)
245# define vsf_remap_flash_get_configuration VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_get_configuration)
247# define VSF_FLASH_CFG_IMP_REMAP_FUNCTIONS \
248 vsf_err_t vsf_imp_flash_init(vsf_imp_flash_t *flash_ptr, vsf_flash_cfg_t *cfg_ptr) \
250 VSF_HAL_ASSERT(flash_ptr != NULL); \
251 return vsf_remap_flash_init((vsf_remap_flash_t *)flash_ptr, cfg_ptr); \
253 void vsf_imp_flash_fini(vsf_imp_flash_t *flash_ptr) \
255 VSF_HAL_ASSERT(flash_ptr != NULL); \
256 vsf_remap_flash_fini((vsf_remap_flash_t *)flash_ptr); \
258 fsm_rt_t vsf_imp_flash_enable(vsf_imp_flash_t *flash_ptr) \
260 VSF_HAL_ASSERT(flash_ptr != NULL); \
261 return vsf_remap_flash_enable((vsf_remap_flash_t *)flash_ptr); \
263 fsm_rt_t vsf_imp_flash_disable(vsf_imp_flash_t *flash_ptr) \
265 VSF_HAL_ASSERT(flash_ptr != NULL); \
266 return vsf_remap_flash_disable((vsf_remap_flash_t *)flash_ptr); \
268 void vsf_imp_flash_irq_enable(vsf_imp_flash_t *flash_ptr, vsf_flash_irq_mask_t irq_mask) \
270 VSF_HAL_ASSERT(flash_ptr != NULL); \
271 vsf_remap_flash_irq_enable((vsf_remap_flash_t *)flash_ptr, irq_mask); \
273 void vsf_imp_flash_irq_disable(vsf_imp_flash_t *flash_ptr, vsf_flash_irq_mask_t irq_mask) \
275 VSF_HAL_ASSERT(flash_ptr != NULL); \
276 vsf_remap_flash_irq_disable((vsf_remap_flash_t *)flash_ptr, irq_mask); \
278 vsf_flash_status_t vsf_imp_flash_status(vsf_imp_flash_t *flash_ptr) \
280 VSF_HAL_ASSERT(flash_ptr != NULL); \
281 return vsf_remap_flash_status((vsf_remap_flash_t *)flash_ptr); \
283 vsf_flash_capability_t vsf_imp_flash_capability(vsf_imp_flash_t *flash_ptr) \
285 VSF_HAL_ASSERT(flash_ptr != NULL); \
286 return vsf_remap_flash_capability((vsf_remap_flash_t *)flash_ptr); \
288 vsf_err_t vsf_imp_flash_erase_one_sector(vsf_imp_flash_t *flash_ptr, uint_fast32_t offset) \
290 VSF_HAL_ASSERT(flash_ptr != NULL); \
291 return vsf_remap_flash_erase_one_sector((vsf_remap_flash_t *)flash_ptr, offset); \
293 vsf_err_t vsf_imp_flash_erase_multi_sector(vsf_imp_flash_t *flash_ptr, uint_fast32_t offset, uint_fast32_t size) \
295 VSF_HAL_ASSERT(flash_ptr != NULL); \
296 return vsf_remap_flash_erase_multi_sector((vsf_remap_flash_t *)flash_ptr, offset, size); \
298 vsf_err_t vsf_imp_flash_erase_all(vsf_imp_flash_t *flash_ptr) \
300 VSF_HAL_ASSERT(flash_ptr != NULL); \
301 return vsf_remap_flash_erase_all((vsf_remap_flash_t *)flash_ptr); \
303 vsf_err_t vsf_imp_flash_write_one_sector(vsf_imp_flash_t *flash_ptr, uint_fast32_t offset, uint8_t* buffer, uint_fast32_t size) \
305 VSF_HAL_ASSERT(flash_ptr != NULL); \
306 return vsf_remap_flash_write_one_sector((vsf_remap_flash_t *)flash_ptr, offset, buffer, size); \
308 vsf_err_t vsf_imp_flash_write_multi_sector(vsf_imp_flash_t *flash_ptr, uint_fast32_t offset, uint8_t* buffer, uint_fast32_t size) \
310 VSF_HAL_ASSERT(flash_ptr != NULL); \
311 return vsf_remap_flash_write_multi_sector((vsf_remap_flash_t *)flash_ptr, offset, buffer, size); \
313 vsf_err_t vsf_imp_flash_read_one_sector(vsf_imp_flash_t *flash_ptr, uint_fast32_t offset, uint8_t* buffer, uint_fast32_t size) \
315 VSF_HAL_ASSERT(flash_ptr != NULL); \
316 return vsf_remap_flash_read_one_sector((vsf_remap_flash_t *)flash_ptr, offset, buffer, size); \
318 vsf_err_t vsf_imp_flash_read_multi_sector(vsf_imp_flash_t *flash_ptr, uint_fast32_t offset, uint8_t* buffer, uint_fast32_t size) \
320 VSF_HAL_ASSERT(flash_ptr != NULL); \
321 return vsf_remap_flash_read_multi_sector((vsf_remap_flash_t *)flash_ptr, offset, buffer, size); \
324 vsf_err_t vsf_imp_flash_get_configuration(vsf_imp_flash_t *flash_ptr, vsf_flash_cfg_t *cfg_ptr) \
326 VSF_HAL_ASSERT(flash_ptr != NULL); \
327 return vsf_remap_flash_get_configuration((vsf_remap_flash_t *)flash_ptr, cfg_ptr); \
333#define VSF_HAL_TEMPLATE_IMP_NAME _flash
334#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _FLASH
336#if !defined(VSF_FLASH_CFG_IMP_PREFIX) && !defined(VSF_FLASH_CFG_IMP_DEVICE_PREFIX)
337# error "Please define VSF_FLASH_CFG_IMP_PREFIX in flash driver"
340#if !defined(VSF_FLASH_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_FLASH_CFG_IMP_DEVICE_UPCASE_PREFIX)
341# error "Please define VSF_FLASH_CFG_IMP_UPCASE_PREFIX in flash driver"
344#ifndef VSF_FLASH_CFG_IMP_COUNT_MASK_PREFIX
345# define VSF_FLASH_CFG_IMP_COUNT_MASK_PREFIX VSF_FLASH_CFG_IMP_UPCASE_PREFIX
348#ifdef VSF_FLASH_CFG_IMP_REMAP_FUNCTIONS
349# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_FLASH_CFG_IMP_REMAP_FUNCTIONS
354#undef VSF_FLASH_CFG_IMP_PREFIX
355#undef VSF_FLASH_CFG_IMP_COUNT_MASK_PREFIX
356#undef VSF_FLASH_CFG_IMP_UPCASE_PREFIX
357#undef VSF_FLASH_CFG_IMP_DEVICE_PREFIX
358#undef VSF_FLASH_CFG_IMP_DEVICE_UPCASE_PREFIX
359#undef VSF_FLASH_CFG_IMP_LV0
360#undef VSF_FLASH_CFG_IMP_REMAP_FUNCTIONS
361#undef VSF_FLASH_CFG_IMP_HAS_OP
362#undef VSF_FLASH_CFG_IMP_EXTERN_OP
364#undef vsf_imp_flash_t
365#undef vsf_imp_flash_init
366#undef vsf_imp_flash_fini
367#undef vsf_imp_flash_enable
368#undef vsf_imp_flash_disable
369#undef vsf_imp_flash_capability
370#undef vsf_imp_flash_status
371#undef vsf_imp_flash_irq_enable
372#undef vsf_imp_flash_irq_disable
373#undef vsf_imp_flash_erase_one_sector
374#undef vsf_imp_flash_erase_multi_sector
375#undef vsf_imp_flash_erase
376#undef vsf_imp_flash_erase_all
377#undef vsf_imp_flash_write_one_sector
378#undef vsf_imp_flash_write_multi_sector
379#undef vsf_imp_flash_write
380#undef vsf_imp_flash_read_one_sector
381#undef vsf_imp_flash_read_multi_sector
382#undef vsf_imp_flash_read
383#undef vsf_imp_flash_get_configuration
385#undef vsf_remap_flash_t
386#undef vsf_remap_flash_init
387#undef vsf_remap_flash_fini
388#undef vsf_remap_flash_enable
389#undef vsf_remap_flash_disable
390#undef vsf_remap_flash_capability
391#undef vsf_remap_flash_status
392#undef vsf_remap_flash_irq_enable
393#undef vsf_remap_flash_irq_disable
394#undef vsf_remap_flash_erase_one_sector
395#undef vsf_remap_flash_erase_multi_sector
396#undef vsf_remap_flash_erase
397#undef vsf_remap_flash_erase_all
398#undef vsf_remap_flash_write_one_sector
399#undef vsf_remap_flash_write_multi_sector
400#undef vsf_remap_flash_write
401#undef vsf_remap_flash_read_one_sector
402#undef vsf_remap_flash_read_multi_sector
403#undef vsf_remap_flash_read
404#undef vsf_remap_flash_get_configuration
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
#define NULL
Definition lvgl.h:26
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_flash.h:263
vsf_flash_size_t max_size
Definition vsf_template_flash.h:270
uint8_t none_sector_aligned_read
Definition vsf_template_flash.h:276
vsf_flash_size_t write_sector_size
Definition vsf_template_flash.h:272
vsf_flash_size_t base_address
Definition vsf_template_flash.h:269
vsf_flash_size_t erase_sector_size
Definition vsf_template_flash.h:271
uint8_t none_sector_aligned_write
Definition vsf_template_flash.h:275
Definition vsf_template_flash.h:239
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
uint64_t offset
Definition vsf_memfs.h:49
uint32_t size
Definition vsf_memfs.h:50
uint_fast32_t vsf_flash_size_t
Definition vsf_template_flash.h:220
#define VSF_ASSERT(...)
Definition vsf_usr_cfg.h:1