操作系统混淆 eMMC 设备与 SD 卡设备 - 如何使用 udev 修复

操作系统混淆 eMMC 设备与 SD 卡设备 - 如何使用 udev 修复

Busybox Linux 在 NXP 的 ARM Cortex A7 处理器上运行。

该板有一个SD卡插槽以及一个eMMC可用于存储的芯片。设备正在从 NOR 闪存启动。

奇怪的是,当插入 SD 卡时,我们无法安装eMMC驱动器,并且出现分区丢失错误。重新启动后问题就消失了。移除 SD 卡也会出现同样的问题,但这次我们无法挂载分区eMMC并出现挂载失败错误。

因此,这让我们认为eMMC在安装失败时该设备与 SD 卡混淆了eMMC

如果您在失败的情况下运行udevadm info -a -n /dev/mmcblk2mmcblk2是设备),我们会得到:eMMC

ATTRS{type}=="SD"

但是当安装工作时,我们会得到报告:

ATTRS{type}=="MMC"

因此我们怀疑操作系统混淆了 SD 卡设备和设备MMC

我可以强迫吗ATTRS{type}=="MMC"

如果是这样我会怎么做?

或者有更好的替代方法来解决这个问题吗?

补充笔记

dmesg when we can't mount eMMC partition 1
[    1.981630] mmc2: MAN_BKOPS_EN bit is not set
[    1.996222] usb 2-1: new high-speed USB device number 3 using ci_hdrc
[    2.003347] mmc2: new DDR MMC card at address 0001
[    2.004444] mmcblk2: mmc2:0001 R1J57L 13.8 GiB 
[    2.006353] mmcblk2boot0: mmc2:0001 R1J57L partition 1 16.0 MiB
[    2.006672] mmcblk2boot1: mmc2:0001 R1J57L partition 2 16.0 MiB
[    2.006912] mmcblk2rpmb: mmc2:0001 R1J57L partition 3 128 KiB
[    2.010135]  mmcblk2: p1

挂载 eMMC 时的 dmesg 有效:

[    1.852533] mmc2: new DDR MMC card at address 0001
[    1.853202] mmcblk2: mmc2:0001 R1J57L 13.8 GiB 
[    1.853364] mmcblk2boot0: mmc2:0001 R1J57L partition 1 16.0 MiB
[    1.853544] mmcblk2boot1: mmc2:0001 R1J57L partition 2 16.0 MiB
[    1.853697] mmcblk2rpmb: mmc2:0001 R1J57L partition 3 128 KiB
[    1.856437]  mmcblk2: p1

区别在于,在非工作 get 中: mmc2: MAN_BKOPS_EN 位未设置。 BKOPS 是后台操作 - 一项 eMMC 性能功能。不知道如何与这个问题联系起来。

lsblk:

NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk2rpmb  179:32   0  128K  0 disk 
mmcblk2boot0 179:16   0   16M  1 disk 
mmcblk2boot1 179:24   0   16M  1 disk 
mmcblk0      179:0    0  3.8G  0 disk 
`-mmcblk0p1  179:1    0  3.8G  0 part 
mmcblk2      179:8    0 13.8G  0 disk 
`-mmcblk2p1  179:9    0 13.8G  0 part 

mmcblk2 是 eMMC,mmcblk0 是 SD 卡。

在 SD 卡 mmcblk0 上运行 udevadm info。

udevadm info -a -n /dev/mmcblk0
ATTRS{type}=="SD"

相关内容