📘 设备树语法精讲 · 内核解析
🎯 30章 从入门到实战
🧩 点击目录跳转对应章节 (01.html ~ 30.html)
⚡ DTS/DTB/DTBO
🐧 内核源码
🧪 实战案例
01
设备树起源:为什么需要设备树?从板级文件到设备树的演进历史。
📜 演进史
02
设备树基础概念:DTS、DTC、DTB、DTBO文件格式与关系。
📁 格式关系
03
设备树语法精讲(一):节点(node)与属性(property)的定义规则。
🌳 节点属性
04
设备树语法精讲(二):标准属性之compatible、model、status。
🏷️ 标准属性
05
设备树语法精讲(三):地址编址之reg、#address-cells、#size-cells。
📍 地址编址
06
设备树语法精讲(四):中断连接之interrupt-parent、interrupts、interrupt-controller。
⚡ 中断
07
设备树语法精讲(五):GPIO与pinctrl之gpios、pinctrl-names、pinctrl-0。
🔌 GPIO/pinctrl
08
设备树语法精讲(六):时钟与复位之clocks、clock-names、resets。
⏱️ 时钟复位
09
设备树语法精讲(七):电源管理之power-domains、supply。
🔋 电源管理
10
设备树语法精讲(八):DMA与IOMMU之dmas、iommus。
🧠 DMA/IOMMU
11
设备树语法精讲(九):热插拔与别名之aliases、chosen、hotpluggable。
🔌 热插拔/别名
12
设备树语法精讲(十):绑定文档与YAML格式。
📄 YAML绑定
13
设备树覆盖(Overlay):DTBO的生成、加载与动态设备管理。
🧩 Overlay
14
设备树编译与反编译:dtc命令详解、反编译技巧。
⚙️ dtc
15
内核解析设备树(一):DTB的加载与解压过程。
📥 加载解压
16
内核解析设备树(二):unflatten_device_tree()函数深度解析。
🔍 unflatten
17
内核解析设备树(三):of_node与property结构体详解。
🧱 结构体
18
内核解析设备树(四):of_match_table与platform驱动匹配机制。
🔗 驱动匹配
19
内核解析设备树(五):of_irq_parse_one()中断解析流程。
⚡ 中断解析
20
内核解析设备树(六):of_get_address()与地址转换。
📐 地址转换
21
内核解析设备树(七):of_clk_get()时钟获取与框架。
⏰ 时钟框架
22
内核解析设备树(八):of_gpio_count()与GPIO子系统。
🔩 GPIO子系统
23
内核解析设备树(九):of_pinctrl_get()与pinctrl框架。
🧵 pinctrl
24
内核解析设备树(十):of_parse_phandle()与phandle解析。
🔗 phandle
25
内核解析设备树(十一):of_find_node_by_path()节点查找API。
🔍 节点查找
26
内核解析设备树(十二):of_property_read_string()属性读取API。
📖 读取属性
27
内核解析设备树(十三):of_reserved_mem与预留内存。
🧠 预留内存
28
内核解析设备树(十四):设备树与ACPI的对比与选择。
⚖️ 对比ACPI
29
实战案例(一):从零编写一个I2C设备树节点。
🧪 I2C实战
30
实战案例(二):调试设备树——常用技巧与常见错误。
🐛 调试技巧