nandflash中oob、ecc分析
1、为何需要分析? ????? 最近一直接触这类驱动,如果对它的原理不懂的话,驱动调试会很麻烦!!!!!! ? 2、ecc? ??????nand的纠错能力,目前有1位、4位和8位,也就是说在512字节中如果是4位的ecc那就可以纠正最多4个bit的错误,一般就是翻转的错误! ? 3、oob? ?????? 冗余区域,一般存放的是ecc纠错码,一般4位的ecc的纠错后需要的字节数为:4 bit ecc,per 512 bytes can creat 13 * 4 = 52 bit,52 / 8 = 7 bytes ,就是需要7个字节的空间 ????? 而我们目前的nandflash的页大小一般为2kb,也就是2kb/512bytes==4,也就是说至少需要4×7=28个ecc纠错的字节存放的地方 ???? oob分区一般已经由硬件厂商固定了,每512字节的oob大小为16字节,那么2kb的页就是64字节 ???? oob分区: struct nand_ecclayout _nand_oob_64 = { ?.eccbytes = 24,?? //ecc纠错需要的空间 ?.eccpos = {?????? //具体存放的位置 ???? 40,41,42,43,44,45,46,47, ???? 48,49,50,51,52,53,54,55, ???? 56,57,58,59,60,61,62,63}, ?.oobfree = { ??{.offset = 2,????? //偏移2位,这2位主要用来存放坏块标志,0xff ?? .length = 38}} //多余的部分,可以用来存放系统文件的标志,如yaffs! }; ? 3、现在nand和sdram一般都集成了! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |