打印

谁弄过NAND FLASH 的坏块问题?碰到个很奇怪的问题,求救!!

[复制链接]
1661|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
youki1234|  楼主 | 2009-5-29 21:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
擦除后用U-BOOT (nand bad)看没有一个坏块,但只要写一点数据(不管是用U-BOOT写还是用ADS),写的那一块就被标记为坏块了。cpu为2440,nand为K9F1208
下面是我写FLASH的代码,大家看看有没有什么问题:

int nand_write_PAGE(U32 ADDR)
{
??int i=0;
??int j=0;
??int k=0;
??int s=0;
??int blocksize=512;
??int buf[512];
??int oobbuf[16];
??
??oobbuf[5]=0xff;
??
??for(i=0;i<blocksize;i++)
??{
?? ? buf=i;
??}
??
??
??NAND_ENABLE_CE(0);
??
??
?? WRITE_NAND_COMMAND(0x00); ///写00命令,定位到前半区
?? WRITE_NAND_COMMAND(0x80); ///写80命令
???
?? WRITE_NAND_ADDRESS(ADDR);
?? WRITE_NAND_ADDRESS(((ADDR>>9)&0xff));
?? WRITE_NAND_ADDRESS(((ADDR>>17)&0xff));
?? WRITE_NAND_ADDRESS(((ADDR>>25)&0xff));

???
??for(j=0;j<blocksize;j++)
?? {
?? ? ?WRITE_NAND(buf[j]);
?? }
???
?for(k=0;k<16;k++)
?? ?{
?? ? ? ?WRITE_NAND(oobbuf[k],0);//写OOB区,第6位为ff
?? ? }
?? ??
?? WRITE_NAND_COMMAND(0x10,0); ///写10命令
???
?? for(s=0;s<10;s++); ?//tWB=100ns;
??
?? NAND_WAIT_READY(0);
???
???
?? if(READ_NAND()&0x1) ? ? //write error
?? ?{
?? ? ? ?pp=1000; ? // 出错设个标记位,方便ADS调试的时候看。
?? ? ? ? NAND_DISABLE_CE(0);
?? ? ? ?return 0;
?? ?}else{
?? ? ? ? ?NAND_DISABLE_CE(0);
?? ? ? ?return 1;
?? ?}

相关帖子

沙发
centimetre| | 2009-5-30 09:58 | 只看该作者

你要分析一下你的oob标记和uboot的是否一致

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

257

主题

283

帖子

1

粉丝