This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

NandFlash中数据放生变化,启动时内核数据校验出错,设备无法启动



  

问题描述:
       设备采用美光的NandFlash 512M大小作为存储介质,生产好一批机器,放在库房
过一段时间拿出来,就有个别机器会开不出来,查看调试信息,发现NandFLASH
中存储内核系统的数据区内容发生变化,导致校验位错误。有个别机器拿到客户那里
也发生开机开不出来的问题。重新烧写片子后,又可以正常启动,反复重启也能正常工作。
     
        原来,偶尔碰到过这个开不出来的现象,没在意, 那么现在用户那里碰到这个问题,就得尽快找到原因了。
        问题的根本现象是,Flash中的数据发生变化了,启动时,内核数据校验出错。

 

Net:   cpsw
Hit any key to stop autoboot:  0
Card did not respond to voltage select!
Booting from nand ...
HW ECC BCH8 Selected

NAND read: device 0 offset 0x280000, size 0x360000
 3538944 bytes read: OK
## Booting kernel from Legacy Image at 80007fc0 ...
   Image Name:   Linux-3.2.0
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3328824 Bytes = 3.2 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... Bad Data CRC
ERROR: can't get kernel image!
U-Boot#

       我前天回到公司,拿出20台机器,测试,目前这个问题还没重现。

        这批设备,当时是先烧写好Flash的内容,再去回流焊的,当时焊接回来后,里面的数据被破坏了,就重新烧写并测试后入库了。
不知道这个过程,对芯片质量有无影响。

        问题:
        那么是什么原因导致设备放置一段时间后,并重新开机时,内核数据存储区的数据发生变化?
        如果是软件逻辑问题,应该是具有普遍性,或者规律性,应该能反复重现, 况且,
软件是在内存运行,对外部数据的修改是在文件系统数据区的,手也伸不到内核存储区。
        如果是FLASH质量问题,那么概率好像高了些?