设备树兼容性设计 · 最佳实践
🎒 30章 · 完整目录
📚 从入门到未来趋势 · 友好色系
⭐ 点击卡片跳转对应章节
01
📌
设备树基础概念
入门
什么是设备树、为什么需要设备树、设备树与ACPI的区别
02
🌱
设备树语法入门
节点/属性
节点(node)、属性(property)、标签(label)、路径(path)的规则
03
📄
设备树源文件(.dts/.dtsi)
结构
文件结构、include机制、宏定义的使用
04
⚙️
设备树编译器(DTC)
编译/反编译
编译流程、反编译技巧、常用编译选项
05
📘
设备树绑定(Binding)
文档
什么是绑定、绑定文档格式、如何编写绑定
06
🔗
兼容性设计原则
命名/优先级
兼容性字符串命名规范、匹配优先级、通配符使用
07
⏰
中断控制器
interrupt
interrupt-parent、interrupts属性、中断映射与级联
08
🔌
GPIO控制器
gpio
gpio-controller、gpio-specifier、GPIO hogging
09
⏱️
时钟与复位
clocks/resets
clocks、clock-names、resets属性设计
10
🧠
DMA与IOMMU
dmas/iommus
dmas、iommus属性、流ID(Stream ID)配置
11
🔋
电源管理
power
power-domains、regulator、operating-points-v2
12
🧩
pinctrl
引脚控制
pinctrl-names、pinctrl-0、引脚复用与配置
13
🗺️
内存映射
reg/ranges
reg属性、ranges属性、dma-ranges属性
14
🏷️
别名与chosen
aliases/chosen
aliases节点、chosen节点、bootargs传递
15
🔀
设备树overlay
动态加载
overlay语法、target引用、运行时加载与卸载
16
📅
版本兼容
新旧内核
新旧内核dts差异、向后兼容策略、deprecated属性处理
17
🛳️
设备树与U-Boot
fdt
U-Boot对设备树的处理、fdt命令、环境变量传递
18
🐧
设备树与Linux内核
of API
内核解析流程、of_系列API、设备树与驱动匹配
19
🔍
调试技巧
编译/运行时
编译错误排查、运行时验证、/sys/firmware/devicetree
20
⚡
性能优化
精简节点
减少节点数量、合理使用标签、避免冗余属性
21
🔒
安全考虑
敏感信息
敏感信息泄露风险、只读属性保护、校验机制
22
🌍
多平台支持
单dts多板
单dts支持多板型、条件编译、Kconfig与设备树联动
23
🤝
设备树与ACPI共存
混合系统
混合系统设计、设备树转ACPI的注意事项
24
🧪
测试方法
单元/模拟
单元测试框架、模拟器验证、硬件回环测试
25
📝
文档化
注释/版本
自动生成文档、注释规范、版本管理
26
👁️
代码审查
检查清单
常见错误模式、审查清单、自动化检查工具
27
📡
设备树与固件接口
UEFI/ATF
UEFI设备树协议、ATF传递设备树、SCMI与设备树
28
📟
RISC-V应用
CLINT/PLIC
RISC-V设备树规范、CLINT/PLIC中断描述
29
🖥️
ARM64应用
GIC/PSCI
GICv3/v4中断描述、PSCI电源管理、SMMU配置
30
🚀
未来趋势
YAML/Rust
YAML绑定、设备树schema、设备树与Rust生态