求助!U-boot 添加SD卡读写
本帖最后由 Junior513 于 2012-12-7 08:36 编辑我用TQ2440,在U-boot上面添加了SD卡的驱动,但是发现在读卡的时候sdifsta 响应有问题,必须在读取sdifsta 和 sdidat 之间加入延时,否者读取sdiftsa时会一直出错,显示没有数据,这样就会导致原本SD卡读取数据速度很慢,请问个位大神,怎么解决呢?我添加的SD卡驱动部分没有使用DMA
if(data->flags & MMC_DATA_READ){
while(data_size)
{
for (k = 0; k < count;) {
if(readl(&host->reg->sdidsta)&0x60)
{
writel(0x3<<0x5,&host->reg->sdidsta);//清除超时标志和 CRC 错误标志
return 0;
}
status = readl(&host->reg->sdifsta);
udelay(1000);
if((status&0x1000)==0x1000)
{
*buf= __be32_to_cpu(readl(&host->reg->sdidat));
buf++;
k++;
data_size -= 4;
}
}
}
writel(readl(&host->reg->sdidcon)&(~(7<<12)),&host->reg->sdidcon);
writel(readl(&host->reg->sdifsta)&(0x200),&host->reg->sdifsta);
writel(0x10,&host->reg->sdidsta);
return 0;
2440本来读写SD卡都不快。加上你没有使用DMA,那速度就完全靠CPU的处理了,CPU有时间读就快,CPU没时间读就慢。 Ok,谢谢,请问有没有加入DMA的参考代码?
页:
[1]