来自 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算法
- 汉明算法
- 里德-所罗门算法
- 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/