用的是NXP的设备,LPC1765,Cortext-M3架构,跑ucos系统。
关于FLASH存储和读取的问题一直困扰我半年多了,一直没有很好的解决,最近在项目收官之际,专心去调试解决FLASH问题。
具体如下,有220字节的数据需要存入FLASH,使用16位CRC校验,之前考虑的机制是,计算好CRC后,写FLASH,然后读FLASH,检验读出来的数据CRC是否校验通过,如果不通过,反复地写FLASH,直到读出来的数据校验成功为止。
现在的问题是,我发现我成功写入FLASH后(确认读出来的数据CRC正确),我重启设备,重启后设备读取FLASH,这个时候有可能会出现CRC校验失败的情况,考虑了很多情况,代码进行了多次修改调试都不行。
后来考虑使用2块FLASH内存,其中一块专门用作备份,就是担心在写FLASH时设备掉电时使用的,写FLASH时主FLASH和备份FLASH同时写,当时考虑到如果出现掉电情况,至少有一块FLASH的内容是完整的,这样的话设备重启后不至于参数会被初始化(这是很危险的情况),但是实际测试后也不理想,主要原因还是上面提到的问题。
|