Включение наложений дерева устройств для BeagleBone Black в ядре Debian 9.5 4.14-ti - PullRequest
0 голосов
/ 06 января 2019

У меня есть проект, использующий BeagleBone Black rev C с Debian 9.5 2018-10-07 4GB SD IOT, работающим на ядре 4.14.x-ti. Я настроил его так, чтобы он использовал am335x-boneblack.dtb, и я пытаюсь включить пользовательское наложение, которое требует несколько контактов для PRUSS.

Проблема в том, что как DTB, так и оверлей кажутся правильно загруженными при загрузке, но изменения оверлея, кажется, не применяются вообще.

Выводы, которые я хотел использовать, определены в pinmuxs в am335x-bone-common-universal-pins.dtsi, но, похоже, они фактически не используются никакими периферийными устройствами.

Менеджер накидок отключен в 4.14, поэтому его нельзя использовать для загрузки наложения.

Код / вывод

Связанные части /boot/uEnv.txt

dtb=am335x-boneblack.dtb
dtb_overlay=/lib/firmware/AM335X-PRU-STOPWATCH.dtbo
disable_uboot_overlay_emmc=1
disable_uboot_overlay_video=1
disable_uboot_overlay_audio=1
disable_uboot_overlay_wireless=1
disable_uboot_overlay_adc=1
uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-14-TI-00A0.dtbo
enable_uboot_cape_universal=0

AM335X-PRU-STOPWATCH.dtso составлено как /lib/firmware/AM335X-PRU-STOPWATCH.dtbo

/dts-v1/;
/plugin/;
/ {
    compatible = "ti,beaglebone", "ti,beaglebone-black";
    part-number = "AM335X-PRU-STOPWATCH";
    version = "00A0";
    exclusive-use = "P8.11", "P8.15", "P8.28", "P8.29";
    fragment@0 {
        target = <&pruss>;
        __overlay__ {
            pinctrl-names = "default";
            pinctrl-0 = <&pinmux_P8_11_pruout_pin>;
            pinctrl-1 = <&pinmux_P8_15_pruin_pin>;
            pinctrl-2 = <&pinmux_P8_28_pruout_pin>;
            pinctrl-3 = <&pinmux_P8_29_pruin_pin>;
            status = "okay";
        };
    };
};

/opt/scripts/tools/version.sh вывод

eeprom:[A335BNLT00C04816BBBK05FF]
model:[TI_AM335x_BeagleBone_Black]
dogtag:[BeagleBoard.org Debian Image 2018-10-07]
bootloader:[microSD-(push-button)]:[/dev/mmcblk0]:[U-Boot 2018.09-00002-g0b54a51
eee]:[location: dd MBR]
kernel:[4.14.79-ti-r87]
nodejs:[v6.14.4]
device-tree-override:[dtb=am335x-boneblack.dtb]
uboot_overlay_options:[enable_uboot_overlays=1]
uboot_overlay_options:[disable_uboot_overlay_emmc=1]
uboot_overlay_options:[disable_uboot_overlay_video=1]
uboot_overlay_options:[disable_uboot_overlay_audio=1]
uboot_overlay_options:[disable_uboot_overlay_wireless=1]
uboot_overlay_options:[disable_uboot_overlay_adc=1]
uboot_overlay_options:[uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-14-TI-
00A0.dtbo]
uboot_overlay_options:[enable_uboot_cape_universal=0]
uboot_overlay_options:[dtb_overlay=/lib/firmware/AM335X-PRU-STOPWATCH.dtbo]
pkg check: to individually upgrade run: [sudo apt install --only-upgrade <pkg>]
pkg:[bb-cape-overlays]:[4.4.20180928.0-0rcnee0~stretch+20180928]
pkg:[bb-wl18xx-firmware]:[1.20180517-0rcnee0~stretch+20180517]
pkg:[kmod]:[23-2rcnee1~stretch+20171005]
pkg:[librobotcontrol]:[1.0.3-git20181005.0-0rcnee0~stretch+20181005]
pkg:[firmware-ti-connectivity]:[20170823-1rcnee1~stretch+20180328]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev us
ers systemd-journal i2c bluetooth netdev cloud9ide gpio pwm eqep admin spi tisdk
 weston-launch xenomai]
cmdline:[console=ttyO0,115200n8 root=/dev/mmcblk0p1 ro rootfstype=ext4 rootwait
coherent_pool=1M net.ifnames=0 quiet]
dmesg | grep pinctrl-single
[    0.985371] pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
dmesg | grep gpio-of-helper
[    0.986573] gpio-of-helper ocp:cape-universal: ready

Ожидаемые результаты

Пин P8_11 как pr1_pru0_pru_r30_15 в режиме 5

Пин P8_15 как pr1_pru0_pru_r31_15 в режиме 6

Пин P8_28 как pr1_pru1_pru_r31_13 в режиме 6

Пин P8_29 как pr1_pru1_pru_r30_12 в режиме 5

Чтобы использовать их в pru0 и pru1 коде.

Фактические результаты

Пины имеют режимы по умолчанию.

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Я в конце концов добрался до первопричины проблемы. Если вы зададите любой пользовательский dtb в /boot/uEnv.txt, он отключит загрузку стандартного dtb (am335x-boneblack-uboot-univ.dtb, как оказалось) и всех настроек, указанных ниже в том же файле, включая rproc / uio PRU, custom и emmc /. видео / аудио оверлеи, если вы хотите их использовать. Что кажется вполне разумным в ретроспективе. Решение состоит в том, чтобы просто удалить dtb=name.

debug: [enable_uboot_overlays=1] ...
debug: [enable_uboot_cape_universal=1] ...
debug: [uboot_base_dtb_univ=am335x-boneblack-uboot-univ.dtb] ...
uboot_overlays: [uboot_base_dtb=am335x-boneblack-uboot-univ.dtb] ...
uboot_overlays: Switching too: dtb=am335x-boneblack-uboot-univ.dtb ...
loading /boot/dtbs/4.14.79-ti-r87/am335x-boneblack-uboot-univ.dtb ...
172977 bytes read in 77 ms (2.1 MiB/s)
uboot_overlays: [fdt_buffer=0x60000] ...
uboot_overlays: uboot loading of [/lib/firmware/BB-BONE-eMMC1-01-00A0.dtbo] disabled by /boot/uEnv.txt [disable_uboot_overlay_emmc=1]...
uboot_overlays: uboot loading of [/lib/firmware/BB-HDMI-TDA998x-00A0.dtbo] disabled by /boot/uEnv.txt [disable_uboot_overlay_video=1]...
uboot_overlays: uboot loading of [/lib/firmware/BB-ADC-00A0.dtbo] disabled by /boot/uEnv.txt [disable_uboot_overlay_adc=1]...
uboot_overlays: loading /lib/firmware/AM335X-PRU-RPROC-4-14-TI-00A0.dtbo ...
3513 bytes read in 232 ms (14.6 KiB/s)
uboot_overlays: [dtb_overlay=/lib/firmware/AM335X-PRU-STOPWATCH.dtbo] ...
uboot_overlays: loading /lib/firmware/AM335X-PRU-STOPWATCH.dtbo ...
0 голосов
/ 06 января 2019

Чтобы применить загрузочные оверлеи, дерево устройств должно быть скомпилировано с помощью dtc - @, к сожалению, Debian не устанавливает флаг. Я открыл отчет, но https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=910727. Может быть, вы хотите отправить письмо на 910727@bugs.debian.org, чтобы подтвердить, что эта функция необходима.

Пока это не исправлено, вам нужно будет скомпилировать свое собственное дерево устройств:

Похоже, вы не используете U-Boot магистрали. В основной линии U-Boot наложения могут быть применены с помощью команды fdt. Пакет flash-ядра Debian позволяет поместить необходимые команды в файл в /etc/flash-kernel/preboot.d/.

...