c - YAFFS 文件系统是否支持每 256 字节页面超过 1 位的 ECC?

标签 c algorithm flash-memory

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

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

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

最佳答案

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

YAFFS 的 ECC 算法能否纠正超过 1 个错误?

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

根据 nand 架构,每一页都维护一个 ECC,它最多可以处理 1 位错误。如果 ECC 显示超过 2 位的错误,那么它是不可纠正的错误,页面被标记为坏 block 。

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

为了修改文件系统,您可以查看您正在尝试实现的闪存的数据表。大多数闪存都有内部 ECC 生成 Controller ,即硬件 Controller 。

每540字节能纠正8位吗?

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

这里是一些用于闪存的ECC算法

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

There is possibity of correcting more errors using BCH algorithm this algorithm is implemented mostly in hardware controller

关于c - YAFFS 文件系统是否支持每 256 字节页面超过 1 位的 ECC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32845891/

相关文章:

algorithm - 什么是 "term-vector algorithm"?

java - 递归以获取数组中的所有变体总和

linux - dd命令是否会跳转emmc的坏 block ?

c++ - 实现质数计数器

C字符串函数错误

c - 使用 extconf.rb 设置预处理器定义

c - 没有循环的递归冒泡排序

c - 将小块数据写入闪存页面

删除后无法写入闪存

python - 如何在 Python 中使用具有复杂类型的 C 函数?