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 */
    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 文件的加载。

4

3 回答 3

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

完整的过程在这里描述

于 2013-10-15T14:57:38.957 回答
3

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

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

于 2013-07-22T09:36:04.697 回答
0

这对我有用

来自@craig-mcqueen提供的链接并使用此设备树覆盖示例

/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
于 2017-06-02T14:44:43.480 回答