简短回答:
对于简单的更改,建议使用设备树覆盖(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}"
SRC_URI += "file://imx7d-colibri-emmc-mydevie.dts;subdir=git/arch/${ARCH}/boot/dts"
SRC_URI += "file://0001-compile-my-devicetree.patch"
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作为默认值。