Я уже искал в Интернете, но не смог найти ответ, поэтому я пытаюсь здесь в качестве последней надежды. У меня есть BeagleBone Black и я хочу загрузиться с MMC независимо от того, вставлена ли SD-карта или нет. Без вставленной SD-карты MMC - это / dev / mmcblk0. Проблема в том, что с вставленной SD-картой MMC становится / dev / mmcblk1. Мой оригинальный файл uEnv.txt выглядит следующим образом.
uname_r=4.1.36-bone24
dtb=am335x-boneblack-emmc-overlay.dtb
optargs="consoleblank=0"
Если вставлена SD-карта, она нормально загружается с / dev / mmcblk1p2. Если SD-карта не вставлена, она все еще пытается загрузиться с / dev / mmcblk1p2, но не может, потому что MMC становится /dev/mmcblk0.
Мой uEnv.txt для загрузки без SD-карты выглядит следующим образом, и этоМожно загружаться из MMC.
uname_r=4.1.36-bone24
dtb=am335x-boneblack-emmc-overlay.dtb
optargs="consoleblank=0"
mmcdev=0
mmcpart=2
Теперь я попытался добавить заявление If Else в файл uEnv.txt, как я обнаружил в своем исследовании в Интернете.
uname_r=4.1.36-bone24
dtb=am335x-boneblack-emmc-overlay.dtb
optargs="consoleblank=0"
mmcdev=0 //this gets executed because root changes from /dev/mmcblk1p2 to /dev/mmcblk0p2
if mmc rescan; then mmcdev=1;fi
mmcpart=2
Но этоКажется, что это утверждение IF не влияет вообще. Но я знаю, что uEnv.txt читается, иначе он не будет пытаться начать с /dev/mmcblk0p2.
Как я могу добиться, чтобы BBB всегда загружался из MMC с или без вставленной SD-карты?
Вот выходные данные отладки u-boot с последним uEnv.txt без вставленной SD-карты.
U-Boot 2016.03-dirty (Oct 03 2019 - 12:55:58 +0200)
Watchdog enabled
I2C: ready
DRAM: 512 MiB
Reset Source: Power-on reset has occurred.
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
Using default environment
Net: <ethaddr> not set. Validating first E-fuse MAC
Could not get PHY for cpsw: addr 0
cpsw, usb_ether
Press SPACE to abort autoboot in 2 seconds
Card did not respond to voltage select!
gpio: pin 56 (gpio 56) value is 0
gpio: pin 55 (gpio 55) value is 0
gpio: pin 54 (gpio 54) value is 0
gpio: pin 53 (gpio 53) value is 1
Card did not respond to voltage select!
Card did not respond to voltage select!
switch to partitions #0, OK
mmc1(part 0) is current device
Scanning mmc 1:1...
gpio: pin 56 (gpio 56) value is 0
gpio: pin 55 (gpio 55) value is 0
gpio: pin 54 (gpio 54) value is 0
gpio: pin 53 (gpio 53) value is 1
switch to partitions #0, OK
mmc1(part 0) is current device
gpio: pin 54 (gpio 54) value is 1
Checking for: /uEnv.txt ...
Checking for: /boot.scr ...
Checking for: /boot/boot.scr ...
Checking for: /boot/uEnv.txt ...
gpio: pin 55 (gpio 55) value is 1
136 bytes read in 19 ms (6.8 KiB/s)
Loaded environment from /boot/uEnv.txt
debug: [dtb=am335x-boneblack-emmc-overlay.dtb] ...
Using: dtb=am335x-boneblack-emmc-overlay.dtb ...
Checking if uname_r is set in /boot/uEnv.txt...
gpio: pin 56 (gpio 56) value is 1
Running uname_boot ...
loading /boot/vmlinuz-4.1.36-bone24 ...
6383816 bytes read in 373 ms (16.3 MiB/s)
loading /boot/dtbs/4.1.36-bone24/am335x-boneblack-emmc-overlay.dtb ...
53230 bytes read in 45 ms (1.1 MiB/s)
debug: [console=ttyO0,115200n8 consoleblank=0 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait] ...
debug: [bootz 0x82000000 - 0x88000000] ...
Kernel image @ 0x82000000 [ 0x000000 - 0x6168c8 ]
## Flattened Device Tree blob at 88000000
Booting using the fdt blob at 0x88000000
Loading Device Tree to 8fff0000, end 8fffffed ... OK
Starting kernel ...
Вот выходные данные отладки u-boot с последним uEnv.txt иSD-карта вставлена.
U-Boot 2016.03-dirty (Oct 12 2016 - 15:19:30 +0200)
Watchdog enabled
I2C: ready
DRAM: 512 MiB
Reset Source: Global warm SW reset has occurred.
Reset Source: Power-on reset has occurred.
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
Using default environment
Net: <ethaddr> not set. Validating first E-fuse MAC
Could not get PHY for cpsw: addr 0
cpsw, usb_ether
Press SPACE to abort autoboot in 2 seconds
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
gpio: pin 56 (gpio 56) value is 0
gpio: pin 55 (gpio 55) value is 0
gpio: pin 54 (gpio 54) value is 0
gpio: pin 53 (gpio 53) value is 1
switch to partitions #0, OK
mmc0 is current device
gpio: pin 54 (gpio 54) value is 1
Checking for: /uEnv.txt ...
Checking for: /boot.scr ...
Checking for: /boot/boot.scr ...
Checking for: /boot/uEnv.txt ...
** Invalid partition 2 **
** Invalid partition 3 **
** Invalid partition 4 **
** Invalid partition 5 **
** Invalid partition 6 **
** Invalid partition 7 **
switch to partitions #0, OK
mmc1(part 0) is current device
Scanning mmc 1:1...
gpio: pin 56 (gpio 56) value is 0
gpio: pin 55 (gpio 55) value is 0
gpio: pin 54 (gpio 54) value is 0
gpio: pin 53 (gpio 53) value is 1
switch to partitions #0, OK
mmc1(part 0) is current device
gpio: pin 54 (gpio 54) value is 1
Checking for: /uEnv.txt ...
Checking for: /boot.scr ...
Checking for: /boot/boot.scr ...
Checking for: /boot/uEnv.txt ...
gpio: pin 55 (gpio 55) value is 1
136 bytes read in 19 ms (6.8 KiB/s)
Loaded environment from /boot/uEnv.txt
debug: [dtb=am335x-boneblack-emmc-overlay.dtb] ...
Using: dtb=am335x-boneblack-emmc-overlay.dtb ...
Checking if uname_r is set in /boot/uEnv.txt...
gpio: pin 56 (gpio 56) value is 1
Running uname_boot ...
loading /boot/vmlinuz-4.1.36-bone24 ...
6383816 bytes read in 372 ms (16.4 MiB/s)
loading /boot/dtbs/4.1.36-bone24/am335x-boneblack-emmc-overlay.dtb ...
53230 bytes read in 44 ms (1.2 MiB/s)
debug: [console=ttyO0,115200n8 consoleblank=0 root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait] ...
debug: [bootz 0x82000000 - 0x88000000] ...
Kernel image @ 0x82000000 [ 0x000000 - 0x6168c8 ]
## Flattened Device Tree blob at 88000000
Booting using the fdt blob at 0x88000000
Loading Device Tree to 8fff0000, end 8fffffed ... OK
Starting kernel ...
Основным отличием является то, что у меня много «Неверных разделов» и что файл uEnv.txt считывается дважды.