운영 체제가 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/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"

관련 정보