如果页大于512字节,
badblockpos = 0
badblockbytes = 2
如果页小于512字节,
badblockpos = 5
badblockbytes = 1
读取每个block的前两页OOB区域的第badblockpos开始的后badblockbytes字节是否为0xff,
如果是,那么说明该block是好的,否则该block是坏块[gliethttp_20080523]!
UINT_T create_bbt(FlashBootType_T fbt)
{
UINT_T Retval
P_FlashProperties_T pFlashP = GetFlashProperties(fbt)
UINT_T BlkSize,BlkNum
UINT_T flash_addr
#define page_size (2048)
#define page_spare_size (64)
#define block_size (64*page_size)
#define tmp_buffer_addr (0x80200000 - page_size - page_spare_size)
#define tmp_spare_buffer_addr (tmp_buffer_addr + page_size)
int i,j
char *bbpos
bbpos = (char*)(tmp_spare_buffer_addr + 0)
BlkSize = pFlashP->BlockSize
BlkNum = pFlashP->NumBlocks
for(i = 0i <BlkNumi++)
{
flash_addr = i * BlkSize
for(j = 0j <2j++)
{
Retval = xdfc_read((UINT_T *)tmp_buffer_addr, flash_addr + j*page_size, page_size, (UINT_T *)tmp_spare_buffer_addr, GetNANDProperties())
if(Retval)
{
goto __create_bbt_mark
}
if(bbpos[0] != 0xff)goto __create_bbt_mark
if(bbpos[1] != 0xff)goto __create_bbt_mark
}
continue
__create_bbt_mark:
RelocateBlock( i, &GetFMProperties()->BBT, fbt )
}
}
1.在插入U盘或硬盘之前,在命令行窗口运行:fdisk -l 命令,系统将显示目前所能识别到的硬件存储设备 内容如: sda sda1 sda2 sdb sdb1 sdb2 等信息,其中,sda与sdb表示目前系统有两个硬盘,后面带有数字表示各个硬盘下的各区目录 硬盘或存储设备一般都是以sd开头. 2.插入U盘或硬盘,再次运行fdisk -l 命令,系统将再次显示目前所能识别到的硬件存储设备,比较两次输出的不各,将发现第二次运行时会增加一些内容, 系统将在原来的基础上增加显示:sdc,等内容,表示新插入的U盘或移动硬盘是挂靠在系统的sdc下. 3.运行mount,如: #mkdir /mnt/usb #mount /dev/sdc /mnt/usb 4.运行完毕,可以直接在/mnt/usb目录下对U盘或移动硬盘的数据进行访问或 *** 作 5.想断开U盘或移动硬盘之前,运行umount命令,保证数据不会造成丢失,命令如下: #umount /dev/sdc欢迎分享,转载请注明来源:内存溢出
评论列表(0条)