当前维护的产品遇到了flash中的配置全乱的情况,这让我想起之前对flash操作遇到的问题,以及原因:
1.低电压的情况下,写flash可能会异常(对于电池供电的设备会出现此问题)
2.写flash的时候,设备突然断电。
3.写入flash的数据校验机制太少,写入偶现的错误也一起写进去了。
解决方法:
1.操作flash前对电压进行判断,低于某个电压,无法写flash.
2.数据写入后,立即读出进行对比。
3.写入的值需要自带CRC校验。
4.如果读flash出现数据异常,比如CRC校验不通过,一定要打印出日志,否则没有这些日志,很难排查问题。
5.程序中需要带读取flash内容的指令,后期出现问题好进行分析。
6.如果数据异常,使用默认参数,这样客户还可以正常使用。
7.每条配置最好能够分开CRC校验,这样读取一片,有一个异常,也认为出错,给出提示,使用默认值。