关于光盘上面 uboot1.1.6那个nandflash坏块检查的地方
if(1){int col, page;
col = i & NAND_BLOCK_MASK_LP;
page = i / NAND_SECTOR_SIZE_LP;
/* 鍙戝嚭READ0鍛戒护 */
write_cmd(0x00);
*p = 5;
for(j=0; j<10; j++);
*p = 8;
for(j=0; j<10; j++);
*p = page & 0xff; /* Row Address A12~A19 */
for(j=0; j<10; j++);
*p = (page >> 8) & 0xff; /* Row Address A20~A27 */
for(j=0; j<10; j++);
if (b128MB == 0)
*p = (page >> 16) & 0x03; /* Row Address A28~A29 */
for(j=0; j<10; j++);
write_cmd(0x30);
wait_idle();
dat = read_data();
nand_deselect_chip();
if(dat != 0xff)
i += 131072; // 1 Block = 2048*64= 131072
我看了datasheet上面说大叶检查是列地址2048,而现在你用的
*p = 5;
for(j=0; j<10; j++);
*p = 8;
这个地址是2053,应该是spare data的第6个地址,这不是小叶的检查方式么,不知道我理解的对不对,请大神指点一下。 这个地方和我们的设置有关,理论上可以将判断坏块的区域放到任意地方。比如wince就是这样,它用oob空间来做标志,判断是坏块还是保留块,然后坏块标志的位置就变化了。 亚瑟王 发表于 2013-1-14 11:12 static/image/common/back.gif
这个地方和我们的设置有关,理论上可以将判断坏块的区域放到任意地方。比如wince就是这样,它用oob空间来做 ...
nand_select_chip();
for(i=start_addr; i < (start_addr + size);)
{
/* Check Bad Block */
if(1){
int col, page;
col = i & NAND_BLOCK_MASK_LP;
page = i / NAND_SECTOR_SIZE_LP;
/* 鍙戝嚭READ0鍛戒护 */
write_cmd(0x00);
*p = 5;
for(j=0; j<10; j++);
*p = 8;
for(j=0; j<10; j++);
*p = page & 0xff; /* Row Address A12~A19 */
for(j=0; j<10; j++);
*p = (page >> 8) & 0xff; /* Row Address A20~A27 */
for(j=0; j<10; j++);
if (b128MB == 0)
*p = (page >> 16) & 0x03; /* Row Address A28~A29 */
for(j=0; j<10; j++);
write_cmd(0x30);
wait_idle();
dat = read_data();
/* 鍙栨秷鐗囬 亚瑟王 发表于 2013-1-14 11:12 static/image/common/back.gif
这个地方和我们的设置有关,理论上可以将判断坏块的区域放到任意地方。比如wince就是这样,它用oob空间来做 ...
我一楼那个i += 131072;这个地方,我i认为执行玩检测坏块后应该加上一个continue这个关键词,如果不加,按照程序的意思就是第一次检测到坏块,i += 131072;就直接执行下一个块,而下一个块并没有检测好坏,如果加了continue的话,就退出本次循环检测i += 131072;后的这个块,不知道我这样理解对不对。 happain 发表于 2013-1-16 01:03 static/image/common/back.gif
我一楼那个i += 131072;这个地方,我i认为执行玩检测坏块后应该加上一个continue这个关键词,如果不加,按 ...
这个流程我记得调试的时候是没有发现问题的,建议你把上下联系起来看一下。
如果是坏块就跳过这个块。 亚瑟王 发表于 2013-1-17 10:46 static/image/common/back.gif
这个流程我记得调试的时候是没有发现问题的,建议你把上下联系起来看一下。
如果是坏块就跳过这个块。
你说的我明白,如果是坏块就跳过这个块,但是你确定现在这个是坏块了,下一个坏块不检测就用么?
是不是我对条块理解的不对啊,
页:
[1]