BBB - 在引导时自动加载设备树覆盖

时间:2013-07-21 03:16:35

标签: beagleboard gpio angstrom-linux device-tree

我有一个设备树覆盖:

/dts-v1/;
/plugin/;

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

    /* https://github.com/derekmolloy/boneDeviceTree/blob/master/docs/BeagleboneBlackP9HeaderTable.pdf */
    fragment@0 {
            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 */
                            >;
                    };
            };
    };

    fragment@1 {
            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

如何配置BBB / Angstrom以在启动时自动加载?

更具体地说,如何将dtbo文件挂钩到正常的设备树加载机制?我知道我可以将echo添加到linux init脚本中,但似乎必须有一些东西会触发加载dtbo文件。

3 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是将dtbo复制到/lib/firmware并修改内核capemgr.extra_override中的bootargs参数(在 uEnv.txt )指向dtbo文件。此技术还需要修改/arch/arm/boot/dts/am335-bone-common.dtsi文件。此 discussion 中的详细信息。

请注意,从文件系统加载设备树覆盖图似乎是beaglebone black上最近的内核(来自官方存储库)的问题。为了解决这个问题,另一种编译叠加层的方法是 here

答案 1 :(得分: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

答案 2 :(得分:0)

这对我有用

  • BeagleBone Black rev C
  • Debian 8.7 2017-03-19来自latest-images
  • 的4GB SD IoT
  • 内核4.4.68-ti-r106

来自link provided @ craig-mcqueen并使用此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

更新initrd:

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

重新启动

sudo reboot

检查它是否已加载:

root@beaglebone:/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