1、问题现象
- 再掉电时调用Nvm_WriteAll()函数后,再重新上电,发现下电前更新得NvmBlock数据未被正确更新到Nvm中。
- 掉电时直接调用Nvm_WriteBlock()函数,可以正常更新指定得NvmBlock块。
2、排查
- NvM_InterWriteAll()函数有被正常执行。
- NvM_InterWriteAll()函数中调用得NvM_UpdateValidandChangeStatus(STD_ON,STD_ON)函数被屏蔽了,无法正常执行。
- NvM_UpdateValidandChangeStatus(STD_ON,STD_ON)作用:Update Validand Change Status。
- 当该函数不执行时,会直接跳过所有得NvmBlock块,更新标志直接被设置成OFF。
3、NvM_UpdateValidandChangeStatus(STD_ON,STD_ON)作用
- 该函数在写NvmBlock时用于更新对应得RAM状态,用于NVM识别是否需要更新NvmBlock。
- 该函数通过宏NVM_SET_RAM_BLOCK_STATUS_API 决定是否使用