OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5974|回复: 2

H743 NANDFlash 硬件ECC使用的什么算法?

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2020-5-28
在线时间
5 小时
发表于 2021-9-24 12:10:09 | 显示全部楼层 |阅读模式
1金钱
H743手册中描述ECC基于BCH8编码算法,正点原子开发指南中说是Hamming码,到底是哪个?还是说一回事?
我使用Hamming码进行软件编码得到的结果与硬件ECC得到的结果并不一致,BCH8编码不知道怎么实现。
另外根据我网上找到的资料,BCH编码一般用于多bit纠错,但H743确实是1bit纠错,困惑。
有了解的同学话麻烦解答下,或者能提供BCH(1bit纠错)的算法我去验证一下,感谢!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2021-9-25 00:14:16 | 显示全部楼层
这个没研究,不过建议你直接用就好了,写和读都用同一个硬件,就没问题了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2020-5-28
在线时间
5 小时
 楼主| 发表于 2021-10-15 17:14:30 | 显示全部楼层
又研究了下,是我自己搞错了,结果是一致的,只是校验结果位排列不同。

PS:分享一下自己了解到的一些内容
同样的ECC校验有不同的实现方法或者说理解角度,校验结果也有各种排列方式,刚开始研究可能会造成困惑。介绍一下我遇到的3种实现:
  • ECC校验原理 这篇文章介绍的比较详细,分行校验与列校验(网上大多介绍文章都分行列),每1个字节为一行,共有8列,且预计算0~255每个值的行列极性以优化计算时间,文中ECC结果排列为行校验在低位列校验在高位
  • 正点原子开发指南中的介绍是把所有数据直接排一行,按只有行校验计算ECC,最终ECC结果低位即相当于上面的列校验,高位相当于上面的行校验,H743硬件ECC结果与此相同
  • LevelX中的ECC计算是每2个字节为一行,共有16列,没有使用预计算极性表加速(不过16bit的表也太大了),结果排列与H743硬件同,只是整体偏移了2位


关于ECC纠错,本质都一样,但实现也有不同的方式(正点原子、LevelX以及我下面介绍的方法各不相同,但本质都是上面链接文章最后提到的判决过程),介绍一下我认为比较好的一种方式

  • 前提是ECC使用上面介绍的正点原子/H743硬件ECC方式排列
  • 新旧ECC相等的话说明没有错误,否则二者进行异或,注意ECC有效bit数为2log2(数据总bit数),例如256byte为2log2(256*8)=22bit、512byte为24bit
  • 异或结果的bit0~1、bit2~3...以此类推全是01b或10b的话说明有1个bit翻转,异或结果奇数bit组成的数即为翻转bit的总索引
  • 其他情况则表示无法纠正的错误

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 20:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表