Возникла проблема при загрузке UART для Debian Beaglebone - PullRequest
1 голос
/ 02 мая 2019

У меня проблема с загрузкой порта uart для Beaglebone Debian.

Ниже приведены мои конфигурации:

У меня beaglebone с ОС Debian.У меня есть SD-карта с 4 разделами.

Раздел 1 (mmcblk0p1) содержит следующие конфигурации загрузчика: -

  1. / boot / dtbs / 4.14.71-ti-r80 / am335x-bonegreen-wireless.dtb
  2. / boot / vmlinuz-4.14.71-ti-r80
  3. / boot / uEnv.txt
  4. / boot / initrd.img-4.14.71-ti-r80
  5. / lib / firmware / BB-UART4-00A0.dtbo
  6. / lib / firmware / BB-UART1-00A0.dtbo
  7. / lib /firmware / BB-I2C2-00A0.dtbo
  8. / lib / firmware / AM335X-PRU-UIO-00A0.dtbo
  9. / lib / firmware / BB-BBGW-WL1835-00A0.dtbo
  10. / lib / firmware / BB-BONE-eMMC1-01-00A0.dtbo
  11. / lib / firmware / BB-ADC-00A0.dtbo
  12. / uEnv.txt

Раздел 2 (mmcblk0p2) содержит ОС Debian.

Раздел 3 (mmcblk0p3) содержит другую ОС Debian.

Раздел 4 (mmcblk0p4) решает, из какого раздела делатьboot?

/ uEnv.txt из mmcblk0p1 считывает из mmcblk0p4 и решает, с какого раздела загрузиться.

Это мой / uEnv.txt:

rdaddr=0x88080000

initrd_high=0xffffffff
fdt_high=0xffffffff

loadxrd=echo debug: [/boot/initrd.img-${uname_r}] ... ; load mmc 0:1 ${rdaddr} /boot/initrd.img-${uname_r}; setenv rdsize ${filesize}
loaduEnvtxt=load mmc 0:1 ${loadaddr} /boot/uEnv.txt ; env import -t ${loadaddr} ${filesize};
check_dtb=if test -n ${dtb}; then setenv fdtfile ${dtb};fi;
check_uboot_overlays=if test -n ${enable_uboot_overlays}; then setenv enable_uboot_overlays ;fi;

loadall=run loaduEnvtxt; run check_dtb; run check_uboot_overlays; run loadxrd;

rootpart=0:2
flagpart=0:4
bootdir=/boot
bootfile=vmlinuz-4.14.71-ti-r80
console=ttyO0,115200n8
fdtaddr=0x88000000
fdtfile=am335x-bonegreen-wireless.dtb
loadaddr=0x82000000
mmcroot=/dev/mmcblk0p2 ro
mmcrootfstype=ext4 rootwait

mmcargs=setenv bootargs console=${console} ${optargs} ${cape_disable} ${cape_enable} root=${mmcroot} rootfstype=${mmcrootfstype} ${cmdline}

loadfdt=echo debug: [/boot/dtbs/${uname_r}/${fdtfile}] ... ;load mmc 0:1 ${fdtaddr} /boot/dtbs/${uname_r}/${fdtfile}

loadimage=echo debug: [/boot/vmlinuz-${uname_r}] ... ; load mmc 0:1 ${loadaddr} /boot/vmlinuz-${uname_r}

boot_three=setenv rootpart 0:3; setenv mmcroot /dev/mmcblk0p3 ro

findroot=\
    if test -e mmc $flagpart three; then \
        if test -e mmc $flagpart three_ok; then \
            run boot_three; \
        elif test ! -e mmc $flagpart three_tried; then \
            fatwrite mmc $flagpart $loadaddr three_tried 4; \
            run boot_three; \
        fi; \
    elif test -e mmc $flagpart two; then \
        if test ! -e mmc $flagpart two_ok; then \
            if test -e mmc $flagpart two_tried; then \
                run boot_three; \
            else \
                fatwrite mmc $flagpart $loadaddr two_tried 4; \
            fi; \
        fi; \
    fi;
uenvcmd=\
    run loadall; \
    run findroot; \
    echo Using root partition ${rootpart}; \
    if run loadfdt; then \
        echo Loaded ${fdtfile}; \
        if run loadimage; then \
            run mmcargs; \
            bootz ${loadaddr} - ${fdtaddr}; \
        fi; \
    fi;

В /boot/uEnv.txt Я включил следующие настройки:

uname_r=4.14.71-ti-r80
enable_uboot_overlays=1
uboot_overlay_addr0=/lib/firmware/BB-UART4-00A0.dtbo
uboot_overlay_addr1=/lib/firmware/BB-UART1-00A0.dtbo
uboot_overlay_addr2=/lib/firmware/BB-I2C2-00A0.dtbo
uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-14-TI-00A0.dtbo
enable_uboot_cape_universal=1
cmdline=coherent_pool=1M net.ifnames=0 quiet

Мои журналы загрузки:

U-Boot SPL 2018.09-00002-g0b54a51eee (Sep 10 2018 - 19:41:39 -0500)
Trying to boot from MMC2
Loading Environment from EXT4...
** Unable to use mmc 0:1 for loading the env **


U-Boot 2018.09-00002-g0b54a51eee (Sep 10 2018 - 19:41:39 -0500), Build: jenkins-github_Bootloader-Builder-65

CPU  : AM335X-GP rev 2.1
I2C:   ready
DRAM:  512 MiB
No match for driver 'omap_hsmmc'
No match for driver 'omap_hsmmc'
Some drivers were not found
Reset Source: Power-on reset has occurred.
RTC 32KCLK Source: External.
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
Loading Environment from EXT4...
** Unable to use mmc 0:1 for loading the env **
Board: BeagleBone Black
<ethaddr> not set. Validating first E-fuse MAC
BeagleBone Black:
Model: SeeedStudio BeagleBone Green Wireless:
BeagleBone: cape eeprom: i2c_probe: 0x54:
BeagleBone: cape eeprom: i2c_probe: 0x55:
BeagleBone: cape eeprom: i2c_probe: 0x56:
BeagleBone: cape eeprom: i2c_probe: 0x57:
Net:   eth0: MII MODE
Could not get PHY for cpsw: addr 0
cpsw, usb_ether
Press SPACE to abort autoboot in 2 seconds
board_name=[A335BNLT] ...
board_rev=[GW1A] ...
switch to partitions #0, OK
mmc0 is current device
SD/MMC found on device 0
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
60067 bytes read in 6 ms (9.5 MiB/s)
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 ...
2628 bytes read in 2 ms (1.3 MiB/s)
gpio: pin 55 (gpio 55) value is 1
Loaded environment from /uEnv.txt
Importing environment from mmc ...
Checking if uenvcmd is set ...
gpio: pin 56 (gpio 56) value is 1
Running uenvcmd ...
2113 bytes read in 3 ms (687.5 KiB/s)
debug: [/boot/initrd.img-4.14.71-ti-r80] ...
4799493 bytes read in 303 ms (15.1 MiB/s)
Using root partition 0:2
debug: [/boot/dtbs/4.14.71-ti-r80/am335x-bonegreen-wireless.dtb] ...
60067 bytes read in 8 ms (7.2 MiB/s)
Loaded am335x-bonegreen-wireless.dtb
debug: [/boot/vmlinuz-4.14.71-ti-r80] ...
10416640 bytes read in 652 ms (15.2 MiB/s)
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Using Device Tree in place at 88000000, end 88011aa2

Starting kernel ...

[    0.000749] timer_probe: no matching timers found
[    0.783193] wkup_m3_ipc 44e11324.wkup_m3_ipc: could not get rproc handle
[    1.073624] omap_voltage_late_init: Voltage driver support not added
[    1.080550] PM: Cannot get wkup_m3_ipc handle

Вопрос:

Теперь, когда я загружаюсь в раздел и проверяю наличие порта UART, я не могу их найти.

ls -l /dev/ttyO*
lrwxrwxrwx 1 root root 5 Nov  3  2016 /dev/ttyO0 -> ttyS0
lrwxrwxrwx 1 root root 5 Nov  3  2016 /dev/ttyO2 -> ttyS2

Ожидаемый вывод:

lrwxrwxrwx 1 root root 5 Nov  3  2016 /dev/ttyO0 -> ttyS0
lrwxrwxrwx 1 root root 5 Nov  3  2016 /dev/ttyO1 -> ttyS1
lrwxrwxrwx 1 root root 5 Nov  3  2016 /dev/ttyO2 -> ttyS2
lrwxrwxrwx 1 root root 5 Nov  3  2016 /dev/ttyO3 -> ttyS3
lrwxrwxrwx 1 root root 5 Nov  3  2016 /dev/ttyO4 -> ttyS4
lrwxrwxrwx 1 root root 5 Nov  3  2016 /dev/ttyO5 -> ttyS5
...