设备树源码位置
所有 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 延迟(probe deferral)。
将新的 DTB 添加到内核构建
要将新的平台设备树集成到内核构建中,请在 QualcommMakefile 中添加一个条目:
将 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。
