一、设备树的典型文件类型
| 文件名后缀 | 含义 | 一般作用 |
|---|---|---|
.dts | Device Tree Source | 设备树源码,入口主文件,每种主板/机型一份 |
.dtsi | Device Tree Source Include | 公共部分,可以被多个 .dts 引用,类似 C 的 .h |
.dtb | Device Tree Blob | 编译输出的 二进制文件,内核真正使用的文件 |
二、目录结构和分层
设备树源文件通常位于内核源码目录下(以 泰山派3M 为例):
filetree
arch/
└── arm64/
└── boot/
└── dts/
└── rockchip/
├── rk3576.dtsi
├── tspi-3m-rk3576.dts
|── rk3576-pinctrl.dtsi
├── rockchip-pinconf.dtsi
└── ...(其它.dtsi/.dts/外设公共dtsi等)1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
- 每个SoC(芯片)有自己的
xxx.dtsi,比如rk3576.dtsi,描述SoC所有片上资源(CPU、片内外设等) - 每个主板/方案/项目有自己的
xxx.dts,比如tspi-3m-rk3576.dts,描述板级信息(电源、外部传感器、引脚复用等),一般包含自己的SoC dtsi文件
三、include 层次结构图
把具体的主板dts作为入口,系统会层层递归包含所有共用资源。
- 主板dts 作为顶层,
#include片上SoC、外设、各种通用模块的dtsi - 每个dtsi 还可继续
#include更底层的通用资源
四、经典dts/dtsi关系
tspi-3m-rk3576.dts头部这样写:
c
#include "rk3576.dtsi"
#include "rk3576-rk806.dtsi"1
2
2
- 其中
rk3576.dtsi定义所有SoC资源, rk3576-rk806.dtsi定义板级电源芯片809相关的资源- 其它都可以通过 include 串起来。
五、总结
- 主板.dts 是总入口:最终要被编译为 dtb,并传递给内核
- dtsi 文件保证资源可重用:不同主板可共用同一 SoC、同一外设的dtsi模板
- 所有#included都被递归合并到最终dtb中
六、常用文件分工总结表
| 文件名 | 主要内容/分工 | 用途/作用 |
|---|---|---|
| tspi-3m-rk3576.dts | 主板入口文件,项目描述、板卡硬件清单、外设引脚、模型和 compatible,所有硬件配置include的核心入口 | 编译为dtb,内核启动用 |
| rk3576.dtsi | SoC主芯片通用资源定义(CPU、中断控制器、片内外设等) | Board通用部分,被dts包含 |
| rk3576-linux.dtsi / rk3576-android.dtsi | 针对不同系统(Linux / Android)的定制资源配置 | 按系统switch不同配置 |
| rk3576-rk806.dtsi | 电源芯片PMIC相关配置信息 | 芯片级底层供电管理 |
| tspi-3m-rk3576-core.dtsi | 板级核心基础配置(时钟、复位、内核必需外设等) | 保证板子基本运行 |
| tspi-3m-rk3576-typec.dtsi | Type-C OTG相关配置 | Type-C接口 |
| tspi-3m-rk3576-usb-host.dtsi | USB 主机相关外设 | 板载USB HOST接口配置 |
| tspi-3m-rk3576-eth.dtsi | 板载以太网接口配置 | 网口/PHY/MDIO资源 |
| tspi-3m-rk3576-sdio-wifibt.dtsi | 板载WiFi/蓝牙模块 | SDIO无线模块/时钟配置 |
| tspi-3m-rk3576-rtc.dtsi | 实时时钟/RTC资源 | RTC芯片/外部时钟配置信息 |
| tspi-3m-rk3576-csi0.dtsi/csi1.dtsi/csi3.dtsi | 板载摄像头 MIPI-CSI通道配置 | 多路摄像头MIPI接口 |
| tspi-3m-rk3576-pcie.dtsi/sata.dtsi/ec20-4g.dtsi | 扩展接口三选一(PCIe、SATA、4G模组) | 板载MINI卡、存储、通信 |
| tspi-3m-rk3576-headset-onboard-mic.dtsi | 耳机及板载麦克风相关 | 音频输入输出 |
| tspi-3m-rk3576-hdmi.dtsi / ...-dp.dtsi | 板载HDMI、DP显示接口 | 板载视频输出接口分离管理 |
| tspi-3m-rk3576-dsi-cXXXXXXX.dtsi | 板载MIPI LCD 显示屏,按型号分文件 | 适配多种不同规格的MIPI屏幕 |
| leds 节点(在dts本体中) | 板载LED灯的软硬件描述,状态灯等 | GPIO-LED控制/系统提示灯 |
| ...(其它dtsi按需扩展) | 其它专业资源、板载模块、定制外设 | 灵活适配复杂应用 |
说明:
.dts为主控板/项目主入口,所有 include 的都在这汇合。.dtsi为可复用的片内/外设/接口/模块资源,根据平台、功能选择 include。- 这样拆分让不同硬件和定制需求可以批量适配、修改、共享和维护!
- 注释掉/解除注释某些 include,即可开关板载特定硬件,定制灵活性高。