FLASH读SPARE的问题

andylao62 2010-09-10 02:58:12
我的FLASH是K9F1208,在读写数据(没有SPARE)的时候完全正确(这个驱动已经用了几年了),但现在要读取SPARE数据,当只读前面的15个字节的SPARE时,DATA和SPARE都正确,但当要读第16位字节的SPARE,就出现问题。
出现的问题现象:
ReadPage(150*32+1,RAM+512,SPARE);
if(SPARE[5]!=0xff)
while(1);
ReadPage(151*32,RAM+512*2,SPARE);

if(SPARE[5]!=0xff)
while(1);
ReadPage(151*32+1,RAM+512*3,SPARE);

if(SPARE[5]!=0xff)
while(1);
ReadPage(152*32,RAM+512*4,SPARE);

if(SPARE[5]!=0xff)
while(1);
ReadPage(152*32+1,RAM+512*5,SPARE);

if(SPARE[5]!=0xff)
while(1);
ReadPage(153*32,RAM+512*6,SPARE);

if(SPARE[5]!=0xff)
while(1);
ReadPage(153*32+1,RAM+512*7,SPARE);
假设连续读几个块和扇区的数据时,分两种情况:
全速运行:
当不读取SPARE的第16数据时,数据就完全正确;而读取第16位SPARE数据时,就会出现错误,也就是说会停留在while(1)这里,而此时的DATA和SPARE数据均为0;
单步运行:
如果ReadPage(152*32+1,RAM+512*5,SPARE);在这里设断点,相当于一次读一个扇区的数据,数据就完全正确,就算是读取SPARE的第16位数据也正确。
void ReadPage(U32 addr, U8 *buf,U8 *spare)
{
U16 i;
U32 Mecc, Secc,tspare;
NFChipEn();
WrNFCmd(READCMD0);
WrNFAddr(0);
WrNFAddr(addr);
WrNFAddr(addr>>8);
if(NandAddr)
WrNFAddr(addr>>16);
InitEcc();
for(i=0; i<10; i++);
WaitNFBusy();
for(i=0; i<512; i++)
buf[i] = RdNFDat();


SEccLock();
spare[0]=RdNFDat();
spare[1]=RdNFDat();
spare[2]=RdNFDat();
spare[3]=RdNFDat();
//tspare=RdNFDat32(); // read 4~7
spare[4]=RdNFDat();
spare[5]=RdNFDat();
spare[6]=RdNFDat();
spare[7]=RdNFDat();
///Secc=RdNFDat32();
//rNFSECCD=((Secc&0xff00)<<8)|(Secc&0xff);
spare[8]=RdNFDat();
spare[9]=RdNFDat();
spare[10]=RdNFDat();
spare[11]=RdNFDat();
//tspare=RdNFDat32(); // read 12~15
spare[12]=RdNFDat();
spare[13]=RdNFDat();
spare[14]=RdNFDat();
spare[15]=RdNFDat();//如果把这句语句屏蔽掉,数据就完全正确

NFChipDs();

}
...全文
142 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
andylao62 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 foxxml 的回复:]
既然你这个驱动用了很久,不倾向于怀疑驱动本身的问题,还是要看裸读回来是什么东西。,看样子你这个程序好像是2410里面自带的驱动,没有看过,不大了解细节。帮不了你更多。
[/Quote]
呵呵,终于看到有来这讨论了
foxxml 2010-09-18
  • 打赏
  • 举报
回复
既然你这个驱动用了很久,不倾向于怀疑驱动本身的问题,还是要看裸读回来是什么东西。,看样子你这个程序好像是2410里面自带的驱动,没有看过,不大了解细节。帮不了你更多。
andylao62 2010-09-17
  • 打赏
  • 举报
回复
没人解释吗?

1,068

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧