![Linux SD 卡启动时出现 mmc0 警告](https://linux22.com/image/145712/Linux%20SD%20%E5%8D%A1%E5%90%AF%E5%8A%A8%E6%97%B6%E5%87%BA%E7%8E%B0%20mmc0%20%E8%AD%A6%E5%91%8A.png)
我在 debian linux(内核 4.18.8)启动我的 microchip sama5d3 板时收到以下警告:
mmc0: unrecognised SCR structure version 4
mmc0: error -22 whilst initialising SD card
喷出大约 30 次后,我得到以下信息,Linux 启动完成
mmc0: host does not support reading read-only switch, assuming write-enable
mmc0: new SDHC card at address 0007
mmcblk0: mmc0:0007 SD4GB 3.71 GiB
我尝试了几种不同的 SD 卡并得到相同的结果,唯一的变化是版本号。
我在网上找到了以下内容https://groups.google.com/forum/#!topic/beagleboard/A4zfNvyMmVI:
SCR是MMC/SD标准定义的寄存器,数据应该通过数据总线读取,而不是像大多数预定义寄存器那样通过cmd总线读取。 TI HSMMC 驱动程序的 omap_hsmmc_request 函数尝试通过 DMA 读入 SCR 数据,这总是返回垃圾。有时SCR检查会通过,因为垃圾数据恰好是有效的SCR数据
Linux 内核只是检查 SCR 版本是否不为 0,如果是,则会产生错误。
我的mmc0的dts文件如下:
mmc0: mmc@f0000000 {
pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3>;
status = "okay";
slot@0 {
reg = <0>;
bus-width = <8>;
};
};
答案1
更新到内核 4.20 不再出现该错误。我无法准确确定哪个内核提交修复了它。有一些可能发挥了作用,但我无法确定是否完全合适。