Nand ECC学习

 Nand ECC校验和纠错原理及2.6.27内核ECC代码分析.pdf    samsung_ecc_algorithm_for_256b.pdf    samsung_ecc_algorithm_for_512b.pdf  

内核代码已经实现了256Byte/3Byte和512Byte/3Byte ECC算法,现在芯片定义要搞204Byte/nByte,还不知道算法怎样实现。

Google下找过Samsung的两个官方文档:
samsung_ecc_algorithm_for_256b.pdf samsung_ecc_algorithm_for_512b.pdf
看完有后感觉有些细节实现地方还没描述出来。

再看一下内核源码:http://lxr.linux.no/#linux+v2.6.21/drivers/mtd/nand/nand_ecc.c
基本搞明白流程了,但行极性生成还是有点困惑。

最后在找 wwxbei在uc上发表的 [原创]Nand ECC校验和纠错原理及2.6.27内核ECC代码分析
读完后有种豁然开朗感觉,thanks wwxbei!

归纳起来:
nand flash读写可能会出现个别bit错误,通过ECC算法纠正1bit错误、检测错2bit错误。
3bit以上的错误ECC算法就管不了了。纠正1bit错误方法自然是找到哪一行、哪一列。
以256Byte/22bit为例。将256Byte数据看成一个256行8列的bit矩阵,256行用8bit、8列用3bit,一共要11bit来定位某一个bit在矩阵中的位置。ECC算法总每一个行列位置实际用到是一对可以表示极性的数据来,因此ECC数据量是11bit * 2 = 22bit。
同理512Byte/24bit,12bit * 2 = 24bit。

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(3022) | 评论(0) | 转发(0) |
0

上一篇:soft lockup

下一篇:Mips cache lock

给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值