我们正在启动我们的自定义
STM32MP157AAB3 板,我们在 linux 中遇到一些错误,因为它连接到 SDMMC1 接口。
以下是我们的设置:
- 硬件
- SDMMC1 连接到 uSD 连接器,PE9 用作卡检测
- SDMMC2 连接到 4GB eMMC
- SDMMC3 连接到自定义连接器(主要用于 WiFi 模块)
- 软件
- OpenSTLinux-2.1.0
- 使用从 EVKs dts 派生的用户代码从 STM32CubeMX 工具开始创建的自定义设备树
- tf-a和u-boot通过SDMMC1读取
- 内核通过 tftp 加载
- RFS 通过 NFS 挂载
当我们插入 uSD 卡时,内核会定期打印此错误:
[134.448880]mmci-pl18x 58005000.sdmmc:错误-110请求状态
但是该设备是可用的。
使用几个 uSD 卡(不同制造商的)我们看到一些在插入时被检测到并且卷被自动安装,一些被检测到(内核创建设备)但没有执行其他操作(尝试手动安装卷卡住工具),甚至没有检测到其他一些。在最后 2 种情况下,总线似乎被卡住了,因为在重新启动之前没有检测到其他 uSD(甚至是前者)。
所以我们在 SDMMC3 总线上进行了一些测试,手动将 uSD 连接器连接到自定义连接器的对应部分(长度不匹配且没有阻抗匹配,这可能是一种降级配置),dts 绑定是相同的,除了缺少卡检测. 将任何 uSD 卡连接到此总线会导致正确的检测和卷安装,没有总线卡住或错误打印。
对于 SDMMC1 总线,在插入 uSD 时删除 dts 中的卡检测信号会导致检测循环:
[39.036173]mmc0:地址为59b4的新高速SDHC卡
[39.052012]mmcblk0:mmc0:59b4 USDU1 14.9 GiB
[39.078961]mmcblk0:p1
[40.009720]mmc0:卡59b4已移除
[40.131304]mmc0:地址为59b4的新高速SDHC卡
[40.150951]mmcblk0:mmc0:59b4 USDU1 14.9 GiB
[40.161140]mmcblk0:p1
[40.532040]mmc0:卡59b4已移除
[40.631149]mmc0:地址为59b4的新高速SDHC卡
[40.648180]mmcblk0:mmc0:59b4 USDU1 14.9 GiB
[40.657286]mmcblk0:p1
[ 40.659641] debugfs:目录“mmcblk0”与父“块”已经存在!
[ 41.129170] FAT-fs (mmcblk0p1): 卷未正确卸载。某些数据可能已损坏。请运行 fsck。
[ 42.483563] FAT-fs (mmcblk0p1): 卷未正确卸载。某些数据可能已损坏。请运行 fsck。
[43.769061]mmc0:卡59b4已移除
[43.899232]mmc0:地址为59b4的新高速SDHC卡
[43.915101]mmcblk0:mmc0:59b4 USDU1 14.9 GiB
[43.925600]mmcblk0:p1
[ 44.000230] FAT-fs (mmcblk0p1): FAT 读取失败 (blocknr 584)
[44.270267]mmc0:卡59b4已移除
关于此行为是否存在任何已知问题?
这可能是硬件问题还是软件问题?