设备树源文件位置
所有 Qualcomm® DTS 和 DTSI 文件位于内核源码树的以下目录下:<SoC>-<board>-<variant> 模式。有关各目标平台的 DTS 文件列表,请参阅下方的定位目标平台的 DTS 文件。
定位目标平台的 DTS 文件
conf/machine/<SoC>-<board>-<variant>.conf 中的 KERNEL_DEVICETREE 变量决定构建和打包哪些 DTB:
- QCS6490
- IQ-9075
- IQ-8275
- IQ-615
表:Qualcomm 设备树源 — Dragonwing™ RB3 Gen 2
在内核 v6.19 及更高版本中,SoC DTSI 名称已更新以反映实际的 SoC 名称:
sc7280.dtsi → kodiak.dtsi、qcs8300.dtsi → monaco.dtsi、qcs615.dtsi → talos.dtsi。el2 的设备树文件支持 Linux 在异常级别 2(EL2)运行以用于 KVM。仅当 Linux 必须作为 KVM 虚拟机监控器(hypervisor)运行时,才使用 EL2 专用的 DTB。
常见定制模式
以下列出使用设备树进行的常见定制。启用或禁用外设节点
要启用在 SoC DTSI 中已声明但被禁用的节点:添加新外设
要在开发板 DTS 中添加新的设备节点或扩展现有的总线节点,请遵循相应的设备树绑定指南。例如,为一个 i2c 设备添加以下内容:clock、pinctrl 和 power-domain 引用。缺少依赖项会导致启动时探测(probe)被推迟。
将新的 DTB 加入内核构建
要将新平台的设备树集成到内核构建中,请在 Qualcomm 的Makefile 中添加一个条目:
将 DTB 加入机器配置
更新meta-qcom/conf/machine/qcs6490-rb3gen2-core-kit.conf 以包含新的设备树 blob:
所有受支持 SoC 的机器配置文件位于
meta-qcom/conf/machine/*.conf。配置 DTB 启动选择
默认情况下(QCOM_DTB_DEFAULT = "multi-dtb"),构建会生成一个包含所有 DTB 的 FIT 镜像。启动时,UEFI 通过将开发板的硬件 compatible 字符串与 fit-dtb-compatible.inc 中的条目进行比对来选择匹配的 DTB。有关更多信息,请参阅 设备树架构。
在以下场景中,基于 FIT 的选择无法工作:
- 您的开发板的 compatible 字符串在
FIT_DTB_COMPATIBLE中没有匹配的条目。 - 您正在移植一块新开发板,且固件元数据在
qcom-metadata.dtb中未描述您的 compatible 字符串。 - 您需要无条件强制使用某个特定 DTB,而不管固件报告什么。
meta-qcom/conf/machine/my-board.conf)中重写 QCOM_DTB_DEFAULT:
qcs6490-my-board 是 DTB 的主干名(stem),即去掉 .dtb 扩展名的文件名。将 QCOM_DTB_DEFAULT 设置为 “multi-dtb” 以外的任何值都会禁用 FIT 镜像生成;构建只会为指定的 DTB 生成单个 VFAT 镜像。
构建成功后,以下 DTB 相关文件会出现在 build/tmp/deploy/images/<MACHINE>/ 目录下:
表:设置 QCOM_DTB_DEFAULT 时的构建产物
在迭代式移植期间,如需仅更新 DTB 分区:
<SoC>-my-board.dtb。
有关更多信息,请参阅
The Devicetree Specification 和
Linux and the Devicetree。
