关于S3C2440 u-boot支持nand hw ecc

转载地址:https://blog.csdn.net/taot2009/article/details/79660469

https://blog.csdn.net/hurry_liu/article/details/8741565 ---这篇文章(文章1)讲的很详细。

http://www.xuebuyuan.com/zh-hant/916448.html ----这篇文章(文章2)也讲的差不多。

文章1和文章2的描述是一样的,只是代码内容不一样。

一开始我是看到了文章1,按照那个代码来修改自己的代码,结果还是不成功,总是在读取的时候出现如下错误。

S3C NAND: ECC uncorrectable errordetected. Not correctable.

NAND read from offset 0 failed -74

 

后来看了s3c2440芯片资料,https://download.csdn.net/download/zengsongbin/2354802, 其中第6章,按照文章1的描述,对应了解了NFMECCD0, NFESTAT0, NFMECC0 这几个寄存器的功能。

1,在写入和读出数据完成时,如果没有锁定NFMECC0寄存器将会更新,为写入或读出的数据的ecc code。

2,写入数据时,只需要读出,NFMECC0,然后存放到spare区。

3,读出数据时,需要将第2步存放到spare区的ecc code读取出来,然后写入NFMECCD0。

在做第3步时,

3.1 NFMECC0中的值是读取之后,计算的读出数据的ecc code。

3.2 nand controller会将写入NFMECCD0的值,与NFMECC0中的值进行比较来计算校验结果,并将结果存入NFESTAT0。

发现关键的操作就在于读取NFMECC0的值,如果读取正确了,校验流程应该是没有问题了。

对比文章1和文章2,在函数中s3c2440_nand_calculate_ecc中,读取NFMECC0方式不一样。

改用文章2的方式,就可以正确读取nand数据了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值