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

使用 Yocto 构建 DTB

DTB 会在完整的 Yocto 镜像构建过程中自动构建。若要在 DTS 更改后 仅重新构建设备树而不进行完整的镜像重建:
  1. 进入 kas shell:
  1. 强制内核 recipe 重新编译(以拾取 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.bin 和 dtb.bin, 以保持内核和设备树同步。有关完整的增量烧录流程,请参阅 安装和引导内核。

在启动时验证 DTB 选择

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