我有一个连接到 Raspberry 的 GPIO 线的实验硬件,并且已经创建了相关的 dts 文件。在 Raspbian 中,内核模块和 dtbo(覆盖)运行良好,即可以控制硬件。
现在我尝试使用 Jumpnowtek 的 meta-rpi 层 [x] 将其移植到 Yocto 2.7.1。内核模块移植是成功的(至少,我在编译过程中没有收到任何抱怨),但我无法将 dts 文件添加到系统中,这样它会自动编译到 dtbo 并添加到 /boot /覆盖 - 目录。
[x] https://jumpnowtek.com/rpi/Raspberry-Pi-Systems-with-Yocto.html
我创建了一个 linux-raspberrypi_4.19.bbappend 配方,如下所示:
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
SRC_URI += "file://newlayer.dts"
RPI_KERNEL_DEVICETREE_OVERLAYS_append = " overlays/newlayer.dtbo "
do_compile_prepend() {
sed -i '/dtbo-$(CONFIG_ARCH_BCM2835) += \\/a newlayer.dtbo \\' ${S}/arch/${ARCH}/boot/dts/overlays/Makefile
cp ${WORKDIR}/newlayer.dts ${S}/arch/${ARCH}/boot/dts/overlays/
}
当我执行“bitbake console-image”时,出现以下错误:
| make[3]: *** No rule to make target 'arch/arm/boot/dts/overlays/newlayer.dtbo'. Stop.
| make[2]: *** [arch/arm/Makefile:345: overlays/newlayer.dtbo] Error 2
| make[1]: *** [Makefile:146: sub-make] Error 2
| make: *** [Makefile:24: __sub-make] Error 2
| ERROR: oe_runmake failed
| WARNING: exit code 1 from a shell command.
如果我不添加“RPI_KERNEL_DEVICETREE_OVERLAYS_append”行,我不会收到任何错误消息,但也不会编译 dts 文件。看来,就是提到变量控制的内容,哪些dts文件会被编译。
欢迎任何帮助。