相信做嵌入式开发的都知道数据的非易失性保存,通常就是Flash,但是通常会有数据的丢失,但是,我一直在考虑到底是什么导致了数据的丢失。在Flash的相关操作,主要是写和擦处,应该说读的时候造成数据丢失的概率要小些,而写和擦处的时候,都是在Flash内部状态机启动响应的动作的,我们只是把数据写到Flash的预存(姑且这么称呼),然后就是数据的Flash的自行启动内部的状态机了,我们只要保证外在的电平就可以了,我觉得这样数据丢失的很没有道理,除非自己在程序的运行中,无意中促成了Flash的操作电平,而且同时地址又选在Flash对应区域,此时,八成是要丢失数据的。
但是,在正常的状态,应该不会丢失数据的呀!个人觉得,在写或者擦处Flash的时候,把所有的中断都关了,可能会好点吧!不知道各位在实际中怎么动作的!
请教了,你怎么防止数据丢失的,当然程序跑飞造成的Flash误操作就又另当别论了!谢谢先!
正常情况下,是不会的!但是异常情况太多!!!
还有就是Flash的擦写次数,经常擦写同一个地方会有问题。
嵌入式是可以随时关电的,
如下方法:
1、让用户手动控制存储数据;
2、加电容,保证存储完成;
3、日志型文件系统;修改数据前,先把以前的数据复制到安全的地方,并标记,这样即使存储数据时中断,也可以恢复之前的数据;
4、楼上所说的Flash的寿命也是需要考虑的问题,不过短期不会出现;