2

来自 YAFFS2 源 (yaffs_ecc.c):“ECC 可以纠正 256 字节数据页中的单个位错误。”

但是有些闪存需要 ECC 代码,例如,必须纠正每 540 字节 8 位,或每 528 字节 4 位等。

YAFFS 的 ECC 算法可以纠正超过 1 个错误吗?请给我关于ECC算法实现的链接,它可以纠正1个以上的错误并且工作速度最快。

4

1 回答 1

1

YAFFS 是基于 Nand 的文件系统。文件系统是基于nand flash的架构设计的。

YAFFS 的 ECC 算法可以纠正超过 1 个错误吗?

不,它不能纠正超过 1 位的错误。

根据每一页的 nand 架构,维护一个 ECC,它可以处理高达 1 位的错误。如果 ECC 显示超过 2 位错误,则其不可纠正的错误和页面被标记为坏块。

即使您尝试在 yaffs 中实现 ECC 算法,闪存也无法处理纠错。闪存中将保留备用区域以存储 ECC 位,并且存储此数据的字节数有限。

为了修改文件系统,您可以查看您尝试实现的闪存的数据表。而且大部分flash都有内部ECC生成控制器,即硬件控制器。

可以纠正每 540 字节 8 位吗?

为闪存实现这样的算法太复杂了。

下面是一些用于闪存的 ECC 算法

  1. 汉明算法
  2. 里德-所罗门算法
  3. Bose-Chaudhuri-Hocquenghem (BCH) 算法

有可能使用 BCH 算法纠正更多错误,该算法主要在硬件控制器中实现

于 2015-09-29T15:14:24.380 回答