|
我在2440的开发板上使用SD卡用作U盘,在我的电脑上可以看到<可移动磁盘>,也可以读写文件,但经常写一部分就出错,比如同时写200多个文件,写了几十个或100多个文件时(已经写进去的文件是好的,可以用读卡器读到),就出现错误。
程序仿真出现如下的情况:
wt_cnt=0x00;
while(wt_cnt<512*block)
{
status=rSDIFSTA;
if((status&0x2000)==0x2000)
{
dat = *Rx_buffer++<<24;
dat = dat|*Rx_buffer++<<16;
dat = dat|*Rx_buffer++<<8;
dat = dat|*Rx_buffer++;
rSDIDAT = dat;
wt_cnt = wt_cnt + 4;
status = rSDIFSTA;
}
}
0x5a000000 00000011 00000003 00084400 00000259
0x5a000010 00000019 00000900 31202020 10E7C037
0x5a000020 D5008C27 007FFFFF 00000200 00133040
0x5a000030 00000000 00000010 00000040 00000000
0x5a000040 00000000 00000000 00000000 00000000
出现的情况:写0x40个数据块时,SDIDCNT(0X5A000030)已经计数到0,SDIDSTA(0x5a000034)也检测
到数据结束,但是wt_cnt只计数到0x00004040(40个数据块应该为0x00008000),然后就
在这进行死循环,不知为什么wt_cnt没有计数到0x00008000?
|
|