Ale*_*ian 5 linux embedded yocto
我正在尝试将一些二进制文件部署到 RPi CM3 的 Yocto 映像中的 /boot ,但它将它们部署到错误的位置。
do_install() {
install -d ${D}/boot/overlays
install -m 0664 ${WORKDIR}/*.dtb ${D}/boot/overlays/
install -m 0664 ${WORKDIR}/*.dtbo ${D}/boot/overlays/
}
Run Code Online (Sandbox Code Playgroud)
这些文件部署到最终映像的 / 分区中的 /boot,但不部署到 /boot 分区。所以它们在启动时不可用。
我已经用谷歌搜索并研究了 Poky 发行版的内核配方(和类),但我没有找到它使用的机制如何确保将文件部署到引导映像(而不是部署到根映像中的 /boot 目录) )。
任何帮助表示赞赏:)
在我的 local.conf 中,我做了:
IMAGE_BOOT_FILES_append = " \
overlays/3dlab-nano-player.dtbo \
overlays/adau1977-adc.dtbo \
...
"
Run Code Online (Sandbox Code Playgroud)
在我的 rpi3-overlays.bb
do_deploy() {
install -d ${DEPLOYDIR}/${PN}
install -m 0664 ${WORKDIR}/*.dtb ${DEPLOYDIR}/${PN}
install -m 0664 ${WORKDIR}/*.dtbo ${DEPLOYDIR}/${PN}
touch ${DEPLOYDIR}/${PN}/${PN}-${PV}.stamp
}
Run Code Online (Sandbox Code Playgroud)
使用此映像构建,但文件仍未部署在 /boot 分区中。使用 RPI_KERNEL_DEVICETREE_OVERLAYS 我得到一个构建错误,因为内核配方试图构建 dtbo 文件,如 dts 文件。
小智 1
在过去的几天里,我一直在解决将文件部署到分区的问题/boot,并提出了一个解决方案。以下说明适用于Yocto Kirkstone 4.0.1。
如果使用,linux-raspberrypi请将其作为依赖项添加到您的配方中,与dtc-native设备树文件的编译相同。
DEPENDS:append = " linux-raspberrypi"
DEPENDS:append = " dtc-native"
Run Code Online (Sandbox Code Playgroud)
准备您的配方,以便将文件部署到${DEPLOYDIR}存储最终映像文件的目录。从类继承,添加任务deploy很重要。下面的函数假设所有文件都已编译并准备好部署。deployaddtaskdo_deploy
inherit deploy
do_deploy() {
install -m 0664 ${S}/adau1977-adc.dtbo ${DEPLOYDIR}/adau1977-adc.dtbo
}
addtask deploy after do_compile
Run Code Online (Sandbox Code Playgroud)
要将文件刻录到分区上的指定目录/boot,请使用以下变量的合成IMAGE_BOOT_FILES:
IMAGE_BOOT_PARTITION:append = " file_name_in_deploydir;path/on/boot/filename.extension"
Run Code Online (Sandbox Code Playgroud)
例如
IMAGE_BOOT_PARTITION:append = " adau1977-adc.dtbo;overlays/adau1977-adc.dtbo"
Run Code Online (Sandbox Code Playgroud)
把这一行放入你的local.conf
这应该有效!