Yocto自定义设备树

时间:2018-08-20 19:08:31

标签: tree device yocto bitbake

我正在尝试在yocto版本中添加自定义设备树。

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

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

我将我的自定义DTS文件添加到了输入dts目录中,并将其包含在makefile中,但是当我进行位烘烤后,我在输出DTB目录中看不到任何生成的文件。

任何帮助将不胜感激。

此外,我在解决如何从设备树中删除功能时遇到问题。如果我想删除i2c,我将如何处理?我知道我可以编辑我的DTS文件,但是我希望将其内置到配方中,因此,当您运行bitbake一次时,它会自动禁用/删除任何外围设备/设备/驱动程序。

谢谢!

1 个答案:

答案 0 :(得分:1)

简短答案:

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

请参阅:rpi: Device Trees, overlays, and parameters


如果您不只是扩展或修补设备树,而是使用完整的文件,则可以使用配方工具为内核配方创建一个简单的bbappend蓝图

recipetool appendsrcfile -wm colibri-imx7 ../layers/meta-mylayer/ virtual/kernel your.dts  'arch/${ARCH}/boot/dts/your.dts'

如下所示:

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用作默认值