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_erase_all VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_all)
27#define vsf_real_flash_erase_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_one_sector)
28#define vsf_real_flash_erase_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_multi_sector)
29#define vsf_real_flash_write_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_write_one_sector)
30#define vsf_real_flash_write_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_write_multi_sector)
31#define vsf_real_flash_read_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_read_one_sector)
32#define vsf_real_flash_read_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_read_multi_sector)
34#ifndef VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY
35# define VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
38#ifdef VSF_FLASH_CFG_IMP_REMAP_PREFIX
39# undef VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY
40# define VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
43#if VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
44# ifndef VSF_FLASH_CFG_CAPABILITY_IRQ_MASK
45# define VSF_FLASH_CFG_CAPABILITY_IRQ_MASK VSF_FLASH_IRQ_ALL_BITS_MASK
47# ifndef VSF_FLASH_CFG_CAPABILITY_BASE_ADDRESS
48# define VSF_FLASH_CFG_CAPABILITY_BASE_ADDRESS 0
50# ifndef VSF_FLASH_CFG_CAPABILITY_MAX_SIZE
51# error "Please define flash size macro 'VSF_FLASH_CFG_CAPABILITY_MAX_SIZE' in source files"
53# ifndef VSF_FLASH_CFG_CAPABILITY_ERASE_SECTORE_SIZE
54# define VSF_FLASH_CFG_CAPABILITY_ERASE_SECTORE_SIZE 4096
56# ifndef VSF_FLASH_CFG_CAPABILITY_WRITE_SECTORE_SIZE
57# define VSF_FLASH_CFG_CAPABILITY_WRITE_SECTORE_SIZE 512
59# ifndef VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_WRITE
60# define VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_WRITE 0
62# ifndef VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_READ
63# define VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_READ 1
74#if VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
78 .irq_mask = VSF_FLASH_CFG_CAPABILITY_IRQ_MASK,
80 .max_size = VSF_FLASH_CFG_CAPABILITY_MAX_SIZE,
81 .erase_sector_size = VSF_FLASH_CFG_CAPABILITY_ERASE_SECTORE_SIZE,
82 .write_sector_size = VSF_FLASH_CFG_CAPABILITY_WRITE_SECTORE_SIZE,
83 .none_sector_aligned_write = VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_WRITE,
84 .none_sector_aligned_read = VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_READ,
89 return flash_capability;
93#if VSF_FLASH_CFG_ERASE_ONE_SECTOR_TEMPLATE == ENABLED
107#if VSF_FLASH_CFG_ERASE_MULTI_SECTOR_TEMPLATE == ENABLED
108# error not supported yet
111#if VSF_FLASH_CFG_ERASE_ALL_TEMPLATE == ENABLED
112vsf_err_t vsf_real_flash_erase_all(vsf_real_flash_t *real_flash_ptr)
121 return vsf_real_flash_erase_multi_sector(real_flash_ptr, 0, flash_capability.
max_size);
125#if VSF_FLASH_CFG_WRITE_ONE_SECTOR_TEMPLATE == ENABLED
134 return vsf_real_flash_write_multi_sector(real_flash_ptr,
offset, buffer,
size);
138#if VSF_FLASH_CFG_WRITE_MULTI_SECTOR_TEMPLATE == ENABLED
139# error not supported yet
142#if VSF_FLASH_CFG_READ_ONE_SECTOR_TEMPLATE == ENABLED
151 return vsf_real_flash_read_multi_sector(real_flash_ptr,
offset, buffer,
size);
155#if VSF_FLASH_CFG_READ_MULTI_SECTOR_TEMPLATE == ENABLED
156# error not supported yet
161#undef VSF_FLASH_CFG_REIMPLEMENT_API_CAPABILITY
162#undef VSF_FLASH_CFG_CAPABILITY_IRQ_MASK
163#undef VSF_FLASH_CFG_CAPABILITY_BASE_ADDRESS
164#undef VSF_FLASH_CFG_CAPABILITY_MAX_SIZE
165#undef VSF_FLASH_CFG_CAPABILITY_ERASE_SECTORE_SIZE
166#undef VSF_FLASH_CFG_CAPABILITY_WRITE_SECTORE_SIZE
167#undef VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_WRITE
168#undef VSF_FLASH_CFG_CAPABILITY_NONE_SECTOR_ALIGNED_READ
170#undef vsf_real_flash_t
171#undef vsf_real_flash_erase_all
172#undef vsf_real_flash_erase_one_sector
173#undef vsf_real_flash_erase_multi_sector
174#undef vsf_real_flash_write_one_sector
175#undef vsf_real_flash_write_multi_sector
176#undef vsf_real_flash_read_one_sector
177#undef vsf_real_flash_read_multi_sector
178#undef vsf_real_flash_capability
182#ifdef VSF_DAC_CFG_IMP_REMAP_PREFIX
183# define vsf_imp_flash_t VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_t)
184# define vsf_imp_flash_init VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_init)
185# define vsf_imp_flash_fini VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_fini)
186# define vsf_imp_flash_enable VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_enable)
187# define vsf_imp_flash_disable VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_disable)
188# define vsf_imp_flash_capability VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_capability)
189# define vsf_imp_flash_status VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_status)
190# define vsf_imp_flash_irq_enable VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_irq_enable)
191# define vsf_imp_flash_irq_disable VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_irq_disable)
192# define vsf_imp_flash_erase_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_one_sector)
193# define vsf_imp_flash_erase_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_multi_sector)
194# define vsf_imp_flash_erase VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_multi_sector)
195# define vsf_imp_flash_erase_all VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_erase_all)
196# define vsf_imp_flash_write_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_write_one_sector)
197# define vsf_imp_flash_write_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_write_multi_sector)
198# define vsf_imp_flash_write VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_write_multi_sector)
199# define vsf_imp_flash_read_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_read_one_sector)
200# define vsf_imp_flash_read_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_read_multi_sector)
201# define vsf_imp_flash_read VSF_MCONNECT(VSF_FLASH_CFG_IMP_PREFIX, _flash_read_multi_sector)
203# define vsf_remap_flash_t VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_t)
204# define vsf_remap_flash_init VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_init)
205# define vsf_remap_flash_fini VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_fini)
206# define vsf_remap_flash_enable VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_enable)
207# define vsf_remap_flash_disable VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_disable)
208# define vsf_remap_flash_capability VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_capability)
209# define vsf_remap_flash_status VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_status)
210# define vsf_remap_flash_irq_enable VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_irq_enable)
211# define vsf_remap_flash_irq_disable VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_irq_disable)
212# define vsf_remap_flash_erase_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_erase_one_sector)
213# define vsf_remap_flash_erase_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_erase_multi_sector)
214# define vsf_remap_flash_erase VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_erase_multi_sector)
215# define vsf_remap_flash_erase_all VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_erase_all)
216# define vsf_remap_flash_write_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_write_one_sector)
217# define vsf_remap_flash_write_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_write_multi_sector)
218# define vsf_remap_flash_write VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_write_multi_sector)
219# define vsf_remap_flash_read_one_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_read_one_sector)
220# define vsf_remap_flash_read_multi_sector VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_read_multi_sector)
221# define vsf_remap_flash_read VSF_MCONNECT(VSF_FLASH_CFG_IMP_REMAP_PREFIX, _flash_read_multi_sector)
223# define VSF_FLASH_CFG_IMP_REMAP_FUNCTIONS \
224 vsf_err_t vsf_imp_flash_init(vsf_imp_flash_t *flash_ptr, vsf_flash_cfg_t *cfg_ptr) \
226 VSF_HAL_ASSERT(flash_ptr != NULL); \
227 return vsf_remap_flash_init((vsf_remap_flash_t *)flash_ptr, cfg_ptr); \
229 void vsf_imp_flash_fini(vsf_imp_flash_t *flash_ptr) \
231 VSF_HAL_ASSERT(flash_ptr != NULL); \
232 vsf_remap_flash_fini((vsf_remap_flash_t *)flash_ptr); \
234 fsm_rt_t vsf_imp_flash_enable(vsf_imp_flash_t *flash_ptr) \
236 VSF_HAL_ASSERT(flash_ptr != NULL); \
237 return vsf_remap_flash_enable((vsf_remap_flash_t *)flash_ptr); \
239 fsm_rt_t vsf_imp_flash_disable(vsf_imp_flash_t *flash_ptr) \
241 VSF_HAL_ASSERT(flash_ptr != NULL); \
242 return vsf_remap_flash_disable((vsf_remap_flash_t *)flash_ptr); \
244 void vsf_imp_flash_irq_enable(vsf_imp_flash_t *flash_ptr, vsf_flash_irq_mask_t irq_mask) \
246 VSF_HAL_ASSERT(flash_ptr != NULL); \
247 vsf_remap_flash_irq_enable((vsf_remap_flash_t *)flash_ptr, irq_mask); \
249 void vsf_imp_flash_irq_disable(vsf_imp_flash_t *flash_ptr, vsf_flash_irq_mask_t irq_mask) \
251 VSF_HAL_ASSERT(flash_ptr != NULL); \
252 vsf_remap_flash_irq_disable((vsf_remap_flash_t *)flash_ptr, irq_mask); \
254 vsf_flash_status_t vsf_imp_flash_status(vsf_imp_flash_t *flash_ptr) \
256 VSF_HAL_ASSERT(flash_ptr != NULL); \
257 return vsf_remap_flash_status((vsf_remap_flash_t *)flash_ptr); \
259 vsf_flash_capability_t vsf_imp_flash_capability(vsf_imp_flash_t *flash_ptr) \
261 VSF_HAL_ASSERT(flash_ptr != NULL); \
262 return vsf_remap_flash_capability((vsf_remap_flash_t *)flash_ptr); \
264 vsf_err_t vsf_imp_flash_erase_one_sector(vsf_imp_flash_t *flash_ptr, uint_fast32_t offset) \
266 VSF_HAL_ASSERT(flash_ptr != NULL); \
267 return vsf_remap_flash_erase_one_sector((vsf_remap_flash_t *)flash_ptr, offset); \
269 vsf_err_t vsf_imp_flash_erase_multi_sector(vsf_imp_flash_t *flash_ptr, uint_fast32_t offset, uint_fast32_t size) \
271 VSF_HAL_ASSERT(flash_ptr != NULL); \
272 return vsf_remap_flash_erase_multi_sector((vsf_remap_flash_t *)flash_ptr, offset, size); \
274 vsf_err_t vsf_imp_flash_erase_all(vsf_imp_flash_t *flash_ptr) \
276 VSF_HAL_ASSERT(flash_ptr != NULL); \
277 return vsf_remap_flash_erase_all((vsf_remap_flash_t *)flash_ptr); \
279 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) \
281 VSF_HAL_ASSERT(flash_ptr != NULL); \
282 return vsf_remap_flash_write_one_sector((vsf_remap_flash_t *)flash_ptr, offset, buffer, size); \
284 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) \
286 VSF_HAL_ASSERT(flash_ptr != NULL); \
287 return vsf_remap_flash_write_multi_sector((vsf_remap_flash_t *)flash_ptr, offset, buffer, size); \
289 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) \
291 VSF_HAL_ASSERT(flash_ptr != NULL); \
292 return vsf_remap_flash_read_one_sector((vsf_remap_flash_t *)flash_ptr, offset, buffer, size); \
294 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) \
296 VSF_HAL_ASSERT(flash_ptr != NULL); \
297 return vsf_remap_flash_read_multi_sector((vsf_remap_flash_t *)flash_ptr, offset, buffer, size); \
303#define VSF_HAL_TEMPLATE_IMP_NAME _flash
304#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _FLASH
306#if !defined(VSF_FLASH_CFG_IMP_PREFIX) && !defined(VSF_FLASH_CFG_IMP_DEVICE_PREFIX)
307# error "Please define VSF_FLASH_CFG_IMP_PREFIX in flash driver"
310#if !defined(VSF_FLASH_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_FLASH_CFG_IMP_DEVICE_UPCASE_PREFIX)
311# error "Please define VSF_FLASH_CFG_IMP_UPCASE_PREFIX in flash driver"
314#ifndef VSF_FLASH_CFG_IMP_COUNT_MASK_PREFIX
315# define VSF_FLASH_CFG_IMP_COUNT_MASK_PREFIX VSF_FLASH_CFG_IMP_UPCASE_PREFIX
318#ifdef VSF_FLASH_CFG_IMP_REMAP_FUNCTIONS
319# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_FLASH_CFG_IMP_REMAP_FUNCTIONS
324#undef VSF_FLASH_CFG_IMP_PREFIX
325#undef VSF_FLASH_CFG_IMP_COUNT_MASK_PREFIX
326#undef VSF_FLASH_CFG_IMP_UPCASE_PREFIX
327#undef VSF_FLASH_CFG_IMP_DEVICE_PREFIX
328#undef VSF_FLASH_CFG_IMP_DEVICE_UPCASE_PREFIX
329#undef VSF_FLASH_CFG_IMP_LV0
330#undef VSF_FLASH_CFG_IMP_REMAP_FUNCTIONS
331#undef VSF_FLASH_CFG_IMP_HAS_OP
332#undef VSF_FLASH_CFG_IMP_EXTERN_OP
334#undef vsf_imp_flash_t
335#undef vsf_imp_flash_init
336#undef vsf_imp_flash_fini
337#undef vsf_imp_flash_enable
338#undef vsf_imp_flash_disable
339#undef vsf_imp_flash_capability
340#undef vsf_imp_flash_status
341#undef vsf_imp_flash_irq_enable
342#undef vsf_imp_flash_irq_disable
343#undef vsf_imp_flash_erase_one_sector
344#undef vsf_imp_flash_erase_multi_sector
345#undef vsf_imp_flash_erase
346#undef vsf_imp_flash_erase_all
347#undef vsf_imp_flash_write_one_sector
348#undef vsf_imp_flash_write_multi_sector
349#undef vsf_imp_flash_write
350#undef vsf_imp_flash_read_one_sector
351#undef vsf_imp_flash_read_multi_sector
352#undef vsf_imp_flash_read
354#undef vsf_remap_flash_t
355#undef vsf_remap_flash_init
356#undef vsf_remap_flash_fini
357#undef vsf_remap_flash_enable
358#undef vsf_remap_flash_disable
359#undef vsf_remap_flash_capability
360#undef vsf_remap_flash_status
361#undef vsf_remap_flash_irq_enable
362#undef vsf_remap_flash_irq_disable
363#undef vsf_remap_flash_erase_one_sector
364#undef vsf_remap_flash_erase_multi_sector
365#undef vsf_remap_flash_erase
366#undef vsf_remap_flash_erase_all
367#undef vsf_remap_flash_write_one_sector
368#undef vsf_remap_flash_write_multi_sector
369#undef vsf_remap_flash_write
370#undef vsf_remap_flash_read_one_sector
371#undef vsf_remap_flash_read_multi_sector
372#undef vsf_remap_flash_read
vsf_err_t
Definition __type.h:42
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_flash.h:262
vsf_flash_size_t max_size
Definition vsf_template_flash.h:269
uint8_t none_sector_aligned_read
Definition vsf_template_flash.h:275
vsf_flash_size_t write_sector_size
Definition vsf_template_flash.h:271
vsf_flash_size_t base_address
Definition vsf_template_flash.h:268
vsf_flash_size_t erase_sector_size
Definition vsf_template_flash.h:270
uint8_t none_sector_aligned_write
Definition vsf_template_flash.h:274
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:219
#define VSF_ASSERT(...)
Definition vsf_usr_cfg.h:1