一 问题描述
CPU :AM3354BZCZ
NandFlash: MT29F2G08ABAGA
Uboot: u-boot 2017.01 (TI 官网下载)
AM3354使用NandFlash启动模式,NandFlash的0~2M存储区域作为MLO分区。
现在有一块板子上的NandFlash MLO存储区域中出现了BitFlip现象,给板子上电后,调试串口不输出任何信息,怀疑MLO程序跑飞。
二、问题分析
使用uboot (ti 官网 uboot 2017.01)中nand read命令读取MLO分区数据,发现在NandFlash的第18个Page的(512+359)字节处出现一个Bit位的反转情况,可以使用ECC BCH8矫正。如下图所示(实际读写过程记录在uboot-nand-read.log文件中,uboot-nand-read.log在帖子下方):
三、BootRom启动测试
从AM335x and AMIC110 Sitara™ Processors Technical Reference Manual手册上我们可以看到,BootRom通过SYSBOOT[9]引脚状态来控制ECC的配置。
现在我们是电路设计将SYSBOOT[9]引脚拉高,禁止了BootRom的ECC纠错功能,BootRom从NandFlash中读取到错误的MLO,所以板子启动后MLO跑飞,调试串口没有输出任何信息。
但是,我们发现这个问题后,将SYSBOOT[9]引脚拉低,使能了BootRom的ECC纠错功能,但是板子仍不能启动,调试串口一直打印CCCCCCCC。
同时,我们将一块能正常启动的板子的SYSBOOT[9]引脚拉低,板子仍可正常启动。