分析:1、检查一下FLASH的读写速度是否与CPU匹配,当读写刚好临界,可能会产生无法预知的操作。 (软件问题)
2、碰上过FLASH写入程序后,在某次上电时 数据被意外改写的故障,后来发现是在上电时,由 于FLASH的写信号在跳变,刚好满足FLASH的写命令,使得FLASH被改写。
解决办法:A、 使用带有上电电压检测功能得FLASH,上电电压不足时,FLASH处于复位状态;
B、 改变FLASH写、片选电路得设计,保证在上电CPU没有完成复位时,这个信号被锁定在无效状态下。(硬件问题)
3、有可能是悬空脚的问题,有产品在使用一段时间后会出现FLASH被修改的情况,将WR脚置高 就好了
4、些系统中,CPU和FLASH使用了不同的复位电路,即使使用了相同的复位电路,也有可能FLASH 和CPU完成复位的时间不一样,这其中就要考虑CPU完成复位的时间到程序执行从FLASH读取程序到SDRAM的时间间隔中,FLASH是否能够完成复位
5、 a、比较出错FLASH内的程序代码与原代码是否一致(其中包括BOOTROM的程序,并且 BOOTROM程序优先比较)
b、如果代码一致,则原因在于CPU的上电时序与系统的MEMORY等时序不一致
c、如果代码不一致,有情况A:程序都在一个地方被改,情况
B:程序被改的地方随机。对于情况A,是软件原因。对于情况B,原因在整个系统上电或复位过程的一些关键信号时序状态不匹配. d、用仿真器的话注意仿真器的不同配置。
|