Yocto定制设备树

3

我正在尝试将自定义设备树添加到我的yocto build中。

输入dts目录位于:arch/arm/boot/dts/

输出DTB目录位于:build/tmp/deploy/images/machine-name

我已将自定义DTS文件添加到输入dts目录中,并在makefile中包含它,但是在我进行bitbake之后,我没有在输出DTB目录中看到任何生成的文件。

任何帮助都将不胜感激。

此外,我在解决如何从设备树中删除功能方面遇到了问题。如果我想要删除i2c,我该怎么做?我知道我可以编辑我的DTS文件,但我希望它被构建到配方中,这样当您运行一次bitbake时,它会自动禁用/删除任何外围设备/驱动程序。

谢谢!


你需要创建一个配方,该配方将添加您自己的文件并进行编译。然后,您需要创建一个使用您的设备树的自有机器。这不是一个基本过程,不像您手动构建设备树blob那样,可以参考这里的描述:http://www.wiki.xilinx.com/Build+Device+Tree+Blob - h0ch5tr4355
1
meta-phytec正在进行这个项目:https://git.phytec.de/ - Fabian Knapp
1个回答

2

简短回答:

对于简单的更改,建议使用设备树覆盖(device tree overlays)(如果支持)。

参见:rpi: 设备树、覆盖和参数


如果您不想仅扩展或修补设备树,而是使用完整的文件,则可以使用配方工具为您的内核配方创建简单的bbappend蓝图。
recipetool appendsrcfile -wm colibri-imx7 ../layers/meta-mylayer/ virtual/kernel your.dts  'arch/${ARCH}/boot/dts/your.dts'

which looks like this:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
PACKAGE_ARCH = "${MACHINE_ARCH}"

# adding your device tree to the kernel sources
SRC_URI += "file://imx7d-colibri-emmc-mydevie.dts;subdir=git/arch/${ARCH}/boot/dts"

# compile your device tree
SRC_URI += "file://0001-compile-my-devicetree.patch"

# make dt available for kernel build things.
KERNEL_DEVICETREE_append = " imx7d-colibri-emmc-mydevice-v3.dtb "

需要对Makefile进行补丁才能在标准构建链中编译新文件。
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index b0e966d..9bbd52c 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -568,6 +568,7 @@ dtb-$(CONFIG_SOC_IMX7D) += \
    imx7d-cl-som-imx7.dtb \
    imx7d-colibri-emmc-eval-v3.dtb \
    imx7d-colibri-eval-v3.dtb \
+   imx7d-colibri-emmc-mydevice.dtb \
    imx7d-nitrogen7.dtb \
    imx7d-pico-pi.dtb \
    imx7d-sbc-imx7.dtb \

现在您可以在uboot提示符下选择设备树blob。
setenv fdt_board=mydevice
printenv
boot

或者对uboot进行修补,以使用blob作为默认值。

为什么你的.dts文件在此处的/dts末尾? - Raulp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接