Busybox Linux 在 NXP 的 ARM Cortex A7 处理器上运行。
该板有一个SD卡插槽以及一个eMMC
可用于存储的芯片。设备正在从 NOR 闪存启动。
奇怪的是,当插入 SD 卡时,我们无法安装eMMC
驱动器,并且出现分区丢失错误。重新启动后问题就消失了。移除 SD 卡也会出现同样的问题,但这次我们无法挂载分区eMMC
并出现挂载失败错误。
因此,这让我们认为eMMC
在安装失败时该设备与 SD 卡混淆了eMMC
。
如果您在失败的情况下运行udevadm info -a -n /dev/mmcblk2
(mmcblk2
是设备),我们会得到: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"