yocto 构建中结合了用户 space 和设备树配方

user space and device tree recipe combined in yocto build

我正在尝试创建一个由依赖于特定外围接口 spi 的用户应用程序组成的食谱

我已经创建了相同的配方,但只有应用程序成为构建映像的一部分。

我该如何修改以及修改哪些内容以包含设备树?

MKI-33Axx.dts 是我的平台设备树,我的修改仅针对 spi 在此文件中,我希望拾取此文件而不是原始文件。

我读过 KERNEL_DEVICETREE_append 需要提供修改后的“dtb”文件而不是 dts file.Do 我必须单独编译设备树然后在构建映像后将其添加到映像中? 但是我对此仍然不清楚。 有人可以告诉我如何以及在哪里激活它吗? 这样我就可以将此设备树更改也附加到我的食谱中。

KERNEL_DEVICETREE变量用于指定需要生成并添加到boot分区的设备树文件,但是bootloader在启动时只会在RAM中加载其中一个。

例如,对于 U-boot,将使用开发板的 defconfig 文件中 DEFAULT_FDT_FILE 中指定的文件。但是您可以通过暂停 U-boot 并指定 DTB 文件来更改 DTB:

setenv fdt_file new_file.dtb (make sure of "fdt_file" var with "printenv")

您可以使用 recipetool 将新的设备树文件自动添加到您的 linux 配方中,查看我的回答

您不必单独编译 DTS,因为将它添加到 KERNEL_DEVICETREE 变量会导致它在启动分区中被传送。

对Linux内核的任何修改都可以添加到:

meta-custom/recipes-kernel/linux/linux-(PROVIDER)_%.append

可以在机器配置文件中找到 (PROVIDER),它是 virtual/kernel 配方的提供者。

您为 Linux 创建补丁,前往:

tmp/work/.../linux-(PROVIDER)/../git

进行编辑并:

git add modified_file
git commit -m "updates"
git format-patch -1

这将生成一个“updates.patch”文件,您可以将其添加到 linux-(PROVIDER)_%.append 文件中:

SRC_URI += "file://updates.patch"

确保将补丁文件复制到:

meta-custom/recipes-kernel/linux/files

现在,Linux 构建将触发并应用补丁。