2013-07-21 8 views
4

У меня есть дерево устройства наложение:В - Автоматически загружать дерево устройств наложения на ботинке

/dts-v1/; 
/plugin/; 

/{ 
    compatible = "ti,beaglebone", "ti,beaglebone-black"; 
    part-number = "mousetraps"; 
    version = "00A1"; 

    /* https://github.com/derekmolloy/boneDeviceTree/blob/master/docs/BeagleboneBlackP9HeaderTable.pdf */ 
    [email protected] { 
      target = <&am33xx_pinmux>; 
      __overlay__ { 
        mousetrap_pins: pinmux_mousetrap_pins { 
          pinctrl-single,pins = < 
            0x070 0x2f /* P9_11 30 INPUT MODE7 none */ 
            0x074 0x2f /* P9_13 31 INPUT MODE7 none */ 
            0x040 0x2f /* P9_15 48 INPUT MODE7 none */ 
            0x15c 0x2f /* P9_17 05 INPUT MODE7 none */ 
          >; 
        }; 
      }; 
    }; 

    [email protected] { 
      target = <&ocp>; 
      __overlay__ { 
        test_helper: helper { 
          compatible = "bone-pinmux-helper"; 
          pinctrl-names = "default"; 
          pinctrl-0 = <&mousetrap_pins>; 
          status = "okay"; 
        }; 
      }; 
    }; 
}; 

, который я могу успешно загрузить с:

echo mousetraps:00A1 >/sys/devices/bone_capemgr.8/driver/bone_capemgr.8/slots ; dmesg | grep bone 

Как я могу настроить В/ангстремы до загрузить его автоматически при загрузке?

В частности, как я могу подключить файл dtbo к обычному механизму загрузки Tree Tree? Я знаю, что я могу добавить эхо в сценарий linux init, но похоже, что должно быть что-то, что запускает загрузку файлов dtbo.

ответ

3

Один из способов сделать это было бы, чтобы скопировать dtbo в /lib/firmware и изменять capemgr.extra_override параметр в ядре bootargsuEnv.txt), чтобы указать на файл dtbo. Этот метод также требует внесения изменений в файл /arch/arm/boot/dts/am335-bone-common.dtsi. Подробности в этом discussion.

Обратите внимание, что загрузка оверлей дерева устройств из файловой системы, по-видимому, связана с последними ядрами (из официального репозитория) на черном beaglebone. Чтобы преодолеть это, описан альтернативный способ составления наложения here.

+0

Что касается проблемы с загрузкой наложения дерева устройства во время загрузки - см. [FBTFT BeagleBone Black-Enable overlay при загрузке] (https://github.com/notro/fbtft/wiki/BeagleBone-Black#enable-overlay -при-ботинки). –

3

вы можете добавить аргумент в uEnv.txt , который относится к новому накладкой, как предложено ранее добавить следующую строку в конце uEnv.txt

nano /mnt/boot/uEnv.txt 

#add this to the end of the single line of uEnv.txt: 

capemgr.enable_partno=mousetraps 

the full process is described here

+1

Одна вещь, вы не должны забывать, при использовании Debian мне нужно добавить параметр в файл capemgr: 'нано/и т.д./по умолчанию/capemgr' И тогда в вашей ситуации, добавьте: ' CAPE = мышеловки: 00A1' Пс. На beaglebone версия часто: «00A0». – danger89

0

Это работал для меня с

  • BeagleBone Черный Rev C
  • Debian 8.7 2017-03-19 4GB SD IoT от latest-images
  • Kernel 4.4.68-ти-R106

С link provided по @ Craig-Маккуина и с помощью этого device tree overlay example

В файле /boot/uboot/uEnv.txt (DM-GPIO-Test это имя моего накладкой):

cmdline=coherent_pool=1M cape_universal=enable bone_capemgr.enable _partno=DM-GPIO-Test noapic 

Создать /etc/initramfs-tools/hooks/dtbo

#!/bin/sh 
set -e 
. /usr/share/initramfs-tools/hook-functions 

# Copy Device Tree fragments 
mkdir -p "${DESTDIR}/lib/firmware" 
cp -p /lib/firmware/*.dtbo "${DESTDIR}/lib/firmware/" 

сделать его исполняемым:

sudo chmod +x /etc/initramfs-tools/hooks/dtbo 

Резервное Initrd:

sudo cp /boot/initrd.img-4.4.68-ti-r106 /boot/initrd.img-4.4.68-ti-r106.bak 

Update Initrd:

/opt/scripts/tools/developers/update_initrd.sh 

Reboot

sudo reboot 

Убедитесь, что он был загружен:

[email protected]:/home/debian# cat /sys/devices/platform/bone_capemgr/slots 
0: PF---- -1 
1: PF---- -1 
2: PF---- -1 
3: PF---- -1 
4: P-O-L- 0 Override Board Name,00A0,Override Manuf,DM-GPIO-Test