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一般都集成了!

 

 

posted @ 2013-08-09 23:02  坚固66  阅读(2802)  评论(1编辑  收藏  举报