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

[复制链接]
2194|1
 楼主| youki1234 发表于 2009-5-29 21:12 | 显示全部楼层 |阅读模式
擦除后用U-BOOT&nbsp;(nand&nbsp;bad)看没有一个坏块,但只要写一点数据(不管是用U-BOOT写还是用ADS),写的那一块就被标记为坏块了。cpu为2440,nand为K9F1208<br />下面是我写FLASH的代码,大家看看有没有什么问题:<br /><br />int&nbsp;nand_write_PAGE(U32&nbsp;ADDR)<br />{<br />??int&nbsp;i=0;<br />??int&nbsp;j=0;<br />??int&nbsp;k=0;<br />??int&nbsp;s=0;<br />??int&nbsp;blocksize=512;<br />??int&nbsp;buf[512];<br />??int&nbsp;oobbuf[16];<br />??<br />??oobbuf[5]=0xff;<br />??<br />??for(i=0;i&ltblocksize;i++)<br />??{<br />??&nbsp;?&nbsp;buf=i;<br />??}<br />??<br />??<br />??NAND_ENABLE_CE(0);<br />??<br />??<br />??&nbsp;WRITE_NAND_COMMAND(0x00);&nbsp;///写00命令,定位到前半区<br />??&nbsp;WRITE_NAND_COMMAND(0x80);&nbsp;///写80命令<br />???<br />??&nbsp;WRITE_NAND_ADDRESS(ADDR);<br />??&nbsp;WRITE_NAND_ADDRESS(((ADDR&gt&gt9)&0xff));<br />??&nbsp;WRITE_NAND_ADDRESS(((ADDR&gt&gt17)&0xff));<br />??&nbsp;WRITE_NAND_ADDRESS(((ADDR&gt&gt25)&0xff));<br /><br />???<br />??for(j=0;j&ltblocksize;j++)<br />??&nbsp;{<br />??&nbsp;?&nbsp;?WRITE_NAND(buf[j]);<br />??&nbsp;}<br />???<br />?for(k=0;k&lt16;k++)<br />??&nbsp;?{<br />??&nbsp;?&nbsp;?&nbsp;?WRITE_NAND(oobbuf[k],0);//写OOB区,第6位为ff<br />??&nbsp;?&nbsp;}<br />??&nbsp;??<br />??&nbsp;WRITE_NAND_COMMAND(0x10,0);&nbsp;///写10命令<br />???<br />??&nbsp;for(s=0;s&lt10;s++);&nbsp;?//tWB=100ns;<br />??<br />??&nbsp;NAND_WAIT_READY(0);<br />???<br />???<br />??&nbsp;if(READ_NAND()&0x1)&nbsp;?&nbsp;?&nbsp;//write&nbsp;error<br />??&nbsp;?{<br />??&nbsp;?&nbsp;?&nbsp;?pp=1000;&nbsp;?&nbsp;//&nbsp;出错设个标记位,方便ADS调试的时候看。<br />??&nbsp;?&nbsp;?&nbsp;?&nbsp;NAND_DISABLE_CE(0);<br />??&nbsp;?&nbsp;?&nbsp;?return&nbsp;0;<br />??&nbsp;?}else{<br />??&nbsp;?&nbsp;?&nbsp;?&nbsp;?NAND_DISABLE_CE(0);<br />??&nbsp;?&nbsp;?&nbsp;?return&nbsp;1;<br />??&nbsp;?}
centimetre 发表于 2009-5-30 09:58 | 显示全部楼层

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

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

257

主题

283

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部