前提是,硬件对imx6ul板子做了个性化的修改,整体还是保留的,变化并不大。
问题的出现比较偶然,之前一直用的是金士顿的SD卡,没用出现什么问题。在解决了SD卡系统升级问题后,都是好的,后来重新购买了SD卡,新SD卡是闪迪的,发现日志不再记录了,/dev/下mmc设备都无法识别。通过不记日志发现了这个问题,插上金士顿的卡,就没用问题,目前发现只有闪迪的卡有问题。
闪迪SD卡一插到开发板报错:mmc0: error -110 whilst initialising SDcard
初始化失败了
从百度上查找这个问题,有的说是硬件问题,电压不对,或者少焊了元器件,有的说是,告诉卡初始化延迟不够,还有的说cmd重发次数不够,按照网上的提示修改后,均为解决这个问题。
在内核驱动详细查看报这个错的地方。
/Linux-3.14.38/drivers/mmc/core/sd.c文件中,函数mmc_attach_sd()报错,是其下的mmc_sd_get_cid()函数下初始化默认SD卡电压位1.8v,如下
err=mmc_set_signal_voltage(host,MMC_SIGNAL_VOLTAGE_180, pocr); 需要将宏改为MMC_SIGNAL_VOLTAGE_330,将系统默认的电压改为3.3v,则sd卡识别成功。 具体为什么其他SD卡用默认1.8v没有问题,只有闪迪的不行。上边这种修改方式,确实解决了我们遇到的问题。
|