Junior513 发表于 2012-12-7 08:23:40

求助!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;







亚瑟王 发表于 2012-12-7 19:50:27

2440本来读写SD卡都不快。加上你没有使用DMA,那速度就完全靠CPU的处理了,CPU有时间读就快,CPU没时间读就慢。

Junior513 发表于 2012-12-12 16:33:14

Ok,谢谢,请问有没有加入DMA的参考代码?
页: [1]
查看完整版本: 求助!U-boot 添加SD卡读写