|
linux-2.6.20.x 以上版本对SD卡有较好支持,可以支持1.0及2.0 SD卡的协议,所以linux2.6.2x 以上的版本都支持大容量(>=4G)的SD卡,而linux-2.6.1x 对SD卡的支持只能到 2G,大于2G的SD就无法识别. 发送CMD8,检查卡是否SD2.0。SD1.1是不支持CMD8的,因此在SD2.0 Spec中提出了先发送CMD8,如响应为无效命令,则卡为SD1.1,否则就是SD2.0(请参考SD2.0 Spec)。CMD8在SD1.1上是没有的. 在 mmc.c 文件中主要加入了这两个函数: mmc_read_switch_caps(host); mmc_process_ext_csds(host); 在读大容量的SD卡时用到 将linux-2.6.2x 以上版本SD卡的驱动植入 linux-2.6.18中,插入SD卡,检测容量及一些相关信息没有问题,但mount SD卡时有错误,提示 kernel debug error driver/mmc/mmc.c 111! BUG_ON(mrq->data->blksz > host->max_blk_size); BUG_ON(mrq->data->blocks > host->max_blk_count); BUG_ON(mrq->data->blocks * mrq->data->blksz > host->max_req_size); 屏蔽掉上面3行语句.问题解决! 但第二次插入SD卡时就没有任何反应!肯定是 remove 的时候出了问题,将 mmc_block.c文件中mmc_blk_remove 函数中的 mmc_cleanup_queue(&md->queue); 去掉,加入以下一行: md->disk->queue = NULL; SD卡的问题解决 |
微信公众号
手机版
这是分享
F7是可以跑的
你共享例程,我买块F7的板子来,看看效果
这叫分享
我是其他芯片上做的