最近又重新调试了下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内就可以。
本文作者:girlkoo