版本 sdk6
偶然情况下发现uboot中使用下面2种方式烧录uboot.img
1,nandecc hw 2
2,nandecc sw
发现MLO读取uboot时候,竟然都不会报ecc错误
MLO中使用BCH8,就是说nandecc sw烧写uboot的时候,应该会有ecc错误的,但是没有。
所以就去看ecc校准的代码,这里就牵扯到了ELM
校准代码中,ecc_code oob中存储的ecc数据,ecc_calc 读取nandflash中数据的时候,新生成的ecc
这里仅仅就是判断了一下ecc_code是不是都是0xff,然后就丢弃了,
主要操作是将ecc_calc转换后填入了ELM_SYNDROME_FRAGMENT_x寄存器中
最后经过ELM_ERROR_LOCATION_x寄存器就可以知道错误的bit及位置。
在不需要oob中ecc数据的情况下,ELM是怎么知道数据有bit错误的呢?
Thanks!
Jian Zhou:
你那个版本的U-boot应该是比较老的,SW应该是空设置:
processors.wiki.ti.com/…/AM335x_U-Boot_User's_Guide