最近又从头调试了下8位的HWECC,最终发现S5PV210的8位HWECC的确是可以用的,可是,运用yaffs2文件体系的时分的时分仍然会出问题,这是因为yaffs2文件体系与mtd层的oob布局抵触导致的。
当咱们运用8位HWECC时,会生成52字节的ECC校验数据并写入oob,而yaffs2本身也有28字节的数据写日oob,也就是说,至少需求28+52=80字节的oob空间,而对于咱们的nand flash,页巨细为2048字节,oob空间为64字节,显着空间缺乏,从而导致了咱们前面看到的问题,所以,选用8位HWECC时应该选用不运用oob空间的文件体系,如jffs2,可是jffs2文件体系在挂载时比较慢,感觉上不如yaffs2轻盈。
yaffs2文件体系的oob布局如下:
- 字节0:坏块符号
- 字节1:保存
- 2-0x27:给上层运用(yaffs)
- 0x28-0x3F:ECC
有了上面这个布局,编写nand驱动时分就可以确认一个最佳ECC计划了,只需ECC校验数据存储在0x28~0x3F内就可以。