Skip to main content
修改 DTS 文件后,重新构建受影响的 DTB,将其部署到目标设备,并确认启动时加载了正确的设备树。

使用 Yocto 构建 DTB

DTB 会作为完整 Yocto 镜像构建的一部分自动构建。要在更改 DTS 后仅重新构建设备树而无需完整重建镜像:
  1. 进入 kas shell:
  1. 强制内核配方重新编译(以拾取 DTS 更改):
  1. 重新构建设备镜像,将更新后的 DTB 重新打包到 dtb.bin 中:
输出的 DTB 文件位于 tmp/deploy/images/<machine>/dtbs/ 下。

将 DTB 部署到设备

完整 Yocto 构建后,刷写完整镜像以更新包括 DTB 分区在内的所有分区:

独立构建 DTB(不使用 Yocto)

使用 kmake 独立工作流时,可通过以下命令仅构建设备树:
生成的 .dtb.dtbo 文件位于 ../kobj/arch/arm64/boot/dts/qcom/ 中。

将多个 dtb 打包为 FIT 镜像

要将它们打包成可刷写的 dtb.bin FIT 镜像,请使用 qcom-dtb-metadata 仓库中的 make_fitimage.sh(需要 kmake-image Docker 工具链):

将 dtb 打包为单一默认镜像

要将您的 dtb 作为单一且默认的设备树 blob 打包,以便 UEFI 在启动时选取,请使用 generate_boot_bins.sh 打包 dtb.bin,并显式传入您的 dtb。
有关完整的独立构建设置说明,请参阅不使用 Yocto 构建内核 有关 kmake-image 实用程序,请参阅其项目自述文件

将 DTB 部署到设备

使用打包多个 dtb 的 make_fitimage.sh 或打包单个 dtb 的 generate_boot_bins.sh 生成 dtb.bin 后:
在内核或 DTS 更改后,请同时刷写 efi.bindtb.bin,以保持内核与设备树同步。有关完整的增量刷写流程,请参阅安装并启动内核

验证启动时的 DTB 选择

设备重启后,确认加载了预期的设备树。 检查已加载的 compatible 字符串:
输出应与您开发板 DTS 的 compatible 字符串匹配。例如,对于 QCS6490 RB3 Gen 2:
在运行时检查完整的设备树:
从 dmesg 检查开发板型号:
如果选择了错误的 DTB 或设备无法启动,请参阅常见 DT 问题与修复