请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C1292NCPDT 工具/软件:TI-RTOS
您好!
我将 tirtos_tivac_2_16_01_14和 TivaWare_C_Series-2.1.4.178用于工程。 我正在使用其中一个闪存段来存储应用的非易失性数据、该数据将从应用中的任务之一写入。 在我的应用中、此闪存读取和写入将很频繁。
在闪存写入一段时间后、整个闪存被损坏、并读取0xFFFFFFFF 的所有值。
我认为在闪存擦除和闪存写入之间可能会有任务切换、这会导致闪存数据损坏。 然后、我将闪存写入任务的优先级更改为更高并进行了检查、但问题仍然存在。 有人能不能建议这里发生了什么以及为什么它在几次写入后被破坏?
FlashProgram()和 FlashEras()是否被抢先? 如果是、我们如何阻止 TI RTOS 中的抢占?
请查找代码片段。
/*闪存写入*/
void flashWrite (boot_struct * stFlashData) { int ret; Semaphore_pend (Sem_flash_handle、BIOS_wait_forever); ret = FlashErase ((uint32_t) flash_common_memory_address); if (ret!= NULL) { System_printf ("闪存未成功擦除)(uint32_memory_address ); if}(unical_stret (unt)(unt)(unt)!(unsignal_handle )(unt)
/*闪存读取*/
boot_struct flashRead (boot_struct * stFlashData) { Semaphore_pend (Sem_flash_handle、BIOS_wait_forever); stFlashData =(boot_struct *) flash_common_memory_address); semaphore_post (Sem_flash_handle); return * stFlashData; }
此致
巴拉