如果頁面大於512字節,
badblockpos = 0;
bad block bytes = 2;
如果頁面小於512字節,
badblockpos = 5;
bad block bytes = 1;
讀取每個塊的前兩頁的OOB區中從badblockpos開始的最後壹個badblockbytes字節是否為0xff,
如果是,那麽塊是好的,否則塊是壞的[gliethttp_20080523]!
UINT_T create_bbt
{
UINT _ T Retval
p _ flash properties _ T pFlashP = getflash properties(fbt);
UINT_T BlkSize,BlkNum
UINT _ T flash _ addr
#定義頁面大小(2048)
#定義頁面備用大小(64)
#定義塊大小(64 *頁面大小)
#定義tmp _ buffer _ addr(0x 80200000-page _ size-page _ spare _ size)
#定義tmp _ spare _ buffer _ addr(tmp _ buffer _ addr+page _ size)
int i,j;
char * bbpos
bb pos =(char *)(tmp _ spare _ buffer _ addr+0);
BlkSize = pFlashP->。BlockSize
blk num = pFlashP-& gt;數字塊;
for(I = 0;我& ltBlkNumi++)
{
flash _ addr = i * BlkSize
for(j = 0;j & lt2;j++)
{
retval = xdfc _ read((UINT _ T *)tmp _ buffer _ addr,flash_addr + j*page_size,page_size,(UINT_T *)tmp_spare_buffer_addr,GetNANDProperties());
如果(返回)
{
goto _ _ create _ bbt _ mark
}
if(bbpos[0]!= 0x ff)goto _ _ create _ bbt _ mark;
if(bbpos[1]!= 0x ff)goto _ _ create _ bbt _ mark;
}
繼續;
__create_bbt_mark:
重定位塊(I & amp;GetFMProperties()-& gt;BBT,fbt);
}
}