Flash数据丢失,说好的数据去哪了?
芯片贴板后跑不起来?Flash里面的数据在使用过程中莫名改变或不翼而飞?程序丢失可能无法正常运行,从而造成整个系统崩溃,下面我们来看看是什么原因让数据异常变化。
1、用户代码对Flash的误操作不当引起程序丢失或被错误改写
说好的数据,哪里去了?
例如,在有对Flash写入或擦除操作的代码中,如果用户误调用了写入或擦除函数或者由于程序跑飞而恰好执行了Flash擦除或写入函数,这自然会导致数据丢失或改变。针对以上情况,可以在程序中设置多个允许操作的变量,当执行写入或擦除操作时,对这些变量进行判断,只有条件全部满足时,才执行相应的操作。在一些不需要进行擦除或写入操作的系统中,对存储区进行写保护或擦除保护设置,能有效的防止数据被意外修改。做到了写入或擦除的可控性,基本可以避免此种情况发生。
图1 Flash保护
2、电源失效
图2 电源噪声严重
电源电压的异常可能会导致系统单片机系统工作异常的现象,如输出电压小于单片机系统工作所需的最小电压,输出电压不干净,噪音严重等,这些很容易引起单片机内部电路的逻辑紊乱,Flash的读写信号处于不稳定状态。可能产生满足Flash的写操作,从而给系统带来严重的损害。针对以上情况,可以在系统中加入电源监控芯片或使能MCU本身的电源监控电路,在电源异常的情况下禁止对Flash区域操作。
3、系统时钟不稳定
无论对于内部Flash还是外部Flash,系统时钟的不稳定,都将导致MCU得不到可靠的工作时序信号,从而在读写Flash时产生不可预料的后果。
4、环境干扰
环境干扰的可能原因很多,如生产过程中的高温焊接、静电、使用环境的温湿度,强磁场等,都可能影响到Flash或整个系统的稳定。环境干扰的因素很多,在此不展开讨论。
- I2C总线中上拉电阻、电源电压、总线电容三者之间的函数关(12-15)
- I2C总线中上拉电阻、电源电压、总线电容三者之间的(09-12)
- MSP430G2553单片机超低功耗的研究与设计(07-17)
- 怎样才能知道单片机是否还能用?(03-04)
- VxWorks中怎么从Flash BOOT(11-15)
- DSP和Flash接口技术的实现(08-15)