各位高手:
大家好!最近遇到一个问题,想向大家请教。使用Nand Flash存储内核,但是发现运行一段时间,内核启动时就会上报如下错误,导致不能启动:
UncompressingLinux………………………………………………………………………………..
crc error
— System halted
这个问题重烧内核可以解决,但这也不是解决问题的根本方法。
引导程序(armubl-03.20.00.14)中支持对Nand Flash数据进行硬件校验,经过验证,4比特以下错误是可以纠正的。将内核每页数据读取出来,发现和预先写入数据是相同的,但是在校验环节,NANDFSR寄存器上报ECC_STATE为1,表示Errors cannot be corrected (5 or more)。
使用的镁光16比特Flash芯片,页数据大小2048字节,OOB大小64字节,读取每页的ECC,发现所有ECC都变成了FF,通常报错ECC_STATE为1,竟然偶然上报ECC_STATE为2(Error correction complete(errors on bit 8 or 9)),寄存器NANDFSR的ECC_ERRNUM值为3(4 errors found),我真的很无奈,因为此时OOB打印出来仍然是全FF。
关于读取OOB,我使用了三个程序,UBL、NandWriter和uBoot,确实都是FF,而读取其它板子的,确实是正常的。同时板子Flash极易出现比特翻转,大概运行一个月,就会开始出现,使用ECC校验可以解决;但是随后越来越多,最终ECC校验失效,这些问题的出现会不会和板子的硬件电路、时钟配置有关?
请问各位高手有没有遇到过这个问题,明明数据正确,偏偏校验不能通过,请不吝赐教、不胜感激!
Chris Meng:
Peter,
请问你使用的是哪款芯片?
user3877487:
回复 Chris Meng:
您好,我使用OMAPL138,DA850
user3877487:
原来是我的Spare Data完全变成了FF,所以数据正确,却不能校验通过了,不知是真的Spare变成了FF,还是根本读不出来,还需要进一步验证。