Skip to main content
每个 Qualcomm® Linux 单板的设备树源文件都位于 arch/arm64/boot/dts/qcom/ 中,并遵循 SoC/板级两层结构。以下内容提供平台详情、对应的设备树,以及平台调试(bring-up)中常见的定制模式。

设备树源码位置

所有 Qualcomm® DTS 和 DTSI 文件都位于内核源码树的以下路径下:
文件命名约定遵循与 Yocto 机器配置相同的 <SoC>-<board>-<variant> 模式。有关按目标平台分类的 DTS 文件列表,请参阅下方的按目标平台分类的平台 DTS 文件

定位目标平台的 DTS 文件

conf/machine/<SoC>-<board>-<variant>.conf 中的 KERNEL_DEVICETREE 变量选择要构建和打包的 DTB:
表:Qualcomm 设备树源码 — Dragonwing RB3 Gen 2
在内核 v6.19 及更高版本中,SoC DTSI 名称已更新为实际的 SoC 名称:sc7280.dtsikodiak.dtsiqcs8300.dtsimonaco.dtsiqcs615.dtsitalos.dtsi
带有 el2 后缀的设备树文件支持 Linux 在异常级别 2(EL2)运行以用于 KVM。仅当 Linux 必须作为 KVM hypervisor 运行时,才使用 EL2 专用的 DTB。

常见定制模式

设备树的常见定制方式如下所示。

启用或禁用外设节点

要启用一个在 SoC DTSI 中已声明但被禁用的节点:
要禁用由 SoC DTSI 启用的节点,将其 status 标记为 disabled:

添加新的外设

要在板级 DTS 中添加新的设备节点或扩展现有的总线节点,请遵循相应的设备树绑定指南。例如,为 i2c 设备添加以下内容:
始终在设备节点中包含所需的 clockpinctrlpower-domain 引用。缺少依赖项会在启动时导致 probe 延迟(probe deferral)。

将新的 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 分区:
下次启动时,UEFI 会从 FIT 镜像中选择 <SoC>-my-board.dtb 更多信息请参阅 The Devicetree SpecificationLinux and the Devicetree