Dear 各位 TI 的 FAE :
我司最近的产品遇到了一个问题, 2000多台设备, 在运行了 1个月 到 1年不等的时间,出现了 10 多台设备系统无法启动的现象。
系统版本: uboot2011.09 + kernel 3.2.0
硬件 : AM3352 + 256MB DDR + 256 MB 29F2G8GABACA MT Nandflash
具体现象:系统在启动 u-boot的时候,nand read 了 kernel的镜像, bootm 命令执行的时候。
现象分析 :
1. 重新只更新了u-boot, 系统启动OK。
2. 我用 SD 卡做一个可以进入 u-boot shell 的脚本, 将 有问题的 系统的 U-BOOT 部分数据通过 nand read 命令读到 DDR, 通过 mw 命令显示 二进制数据,和正常的数据进行比较,发现没有问题。
我通过 1 , 推断是 u-boot 镜像损坏出现了问题, 但是 2 又告诉我 Nandflash 的数据没有损坏,这就很矛盾。
因为只更新了 u-boot了,系统就好了,也说明了 硬件没有损坏。
请问各位工程师有没有遇到类似的情况,供我参考?
Nancy Wang:
能否将有问题的系统启动信息贴出来看一下。
是否有可能是DDR稳定性造成的。
fulin chen:
回复 Nancy Wang:
您好,debug 信息如下:
U-Boot SPL 2011.09-00000-g6581db8 (Aug 03 2018 – 10:32:52)
Texas Instruments Revision detection unimplemented
Booting from NAND…U-Boot 2011.09-00000-g6581db8 (Aug 03 2018 – 10:32:52)
—1I2C:ready
DRAM:256 MiB
WARNING: Caches not enabled
this board is ECM_5206
zengjf :
NAND :HW ECC Hamming Code selected
256 MiB
MMC:OMAP SD/MMC: 0
*** Warning – bad CRC, using default environmentNet:cpsw
Hit any key to stop autoboot:0
Booting from nand …
HW ECC BCH8 SelectedNAND read: device 0 offset 0x280000, size 0x5000005242880 bytes read: OK
fulin chen:
回复 fulin chen:
在代码里面,是下面这个:
154"nand read ${loadaddr} ${nandsrcaddr} ${nandimgsize}; " \
155"bootm ${loadaddr}\0" \我也考虑过您说的这个情况, 然后我在 SD卡的 u-boot 里面, 手动执行这个命令,也是没有问题的。可以启动kernel。
fulin chen:
回复 Nancy Wang:
您好, Wang 工, 怎么样判断可能是 DDR 的问题导致。
现在我有一个问题是,重新烧录了同样的 u-boot镜像,系统就能正常运行了。如果是 DDR 坏了,应该是没有办法运行的才是。
我现在总是怀疑是 NandFlash 数据丢失了,但是我又没有确切的证据去证明它数据丢失了,因为我通过nand read 命令去读取,然后使用 mw 去打印内存的数据,然后和正常的文件进行比较,文件内容是一样的。
所以我就卡在了这里。
如果我找到了证据,我就能往下走了。
所以我寻求您的帮助。
Nancy Wang:
回复 fulin chen:
DDR能够正常读写吗?是否做过压力测试?如果都没有问题的话,那应该不是DDR的问题了。
看一下以下链接DDR配置部分的描述。
processors.wiki.ti.com/…/AM335x_board_bringup_tips
fulin chen:
回复 Nancy Wang:
我尝试修改了 DDR 里面的数据,确认是能修改。
在进入系统之后,我们也有用 memlunch 进行测试过DDR, DDR 压力测试是没有问题的。
fulin chen:
回复 Nancy Wang:
上午,我尝试将 MLO 单独更新,现象依然存在,之前也更新过 kernel, 想想依然存在,今天下午,我将这个启动有错误的 Nandflash 换到一个已经测试正常的产品上面,这个正常的产品现在也变成异常,我更加肯定是 Nandflash 部分关于 u-boot.img 部分出现了问题。