01
设备树的前世今生
为什么需要设备树?从板级文件到设备树的演进史,设备树在Linux内核中的角色定位。
演进史内核角色
02
设备树基础语法(上)
节点与属性的定义,根节点、别名节点、标签(label)的使用,&引用语法。
节点引用
03
设备树基础语法(下)
标准属性详解(compatible、reg、interrupts等),地址编码与ranges映射。
标准属性地址映射
04
GPIO控制器
GPIO控制器的设备树绑定,gpio-controller与#gpio-cells,描述一个GPIO按键。
GPIO按键
05
I2C控制器
I2C控制器描述,clock-frequency设置,挂载从设备(温度传感器),reg地址分配。
I2C传感器
06
SPI控制器
SPI控制器绑定,cs-gpios片选,SPI从设备(Flash)的reg与模式配置。
SPIFlash
07
MMC/SDIO控制器
MMC控制器节点,bus-width、non-removable、cap-sd-highspeed,eMMC与SD卡区别。
MMCeMMC
08
LCD/显示控制器
显示控制器描述,panel-timing时序,backlight背光,framebuffer与DRM框架。
显示DRM
09
音频设备
音频Codec绑定,DAI链路配置,simple-audio-card框架的使用。
音频Codec
10
USB控制器
USB控制器节点,dr_mode配置,usb-phy引用,usb hub描述。
USBOTG
11
PCIe控制器
PCIe控制器描述,bus-range、interrupt-map中断映射,MSI中断配置。
PCIeMSI
12
时钟与复位控制器
时钟控制器与#clock-cells,时钟消费者,复位控制器与#reset-cells。
时钟复位
13
电源管理
电源域描述,regulator框架(fixed/gpio-regulator),系统休眠与唤醒。
电源域regulator
14
DMA控制器
DMA控制器绑定,dma-cells与dma-names,DMA引擎通道请求描述。
DMA通道
15
PWM控制器
PWM控制器描述,#pwm-cells配置,PWM背光与PWM风扇典型应用。
PWM背光
16
ADC/触摸屏
ADC控制器节点,io-channel-cells,电阻/电容触摸屏设备树描述。
ADC触摸
17
网络设备(MAC/PHY)
以太网MAC描述,PHY节点(phy-handle、phy-mode),固定PHY配置。
以太网PHY
18
看门狗(Watchdog)
看门狗控制器绑定,timeout-sec属性,系统复位与喂狗机制。
看门狗复位
19
RTC(实时时钟)
RTC控制器描述,start-year属性,后备电池与系统时间同步。
RTC时间
20
NVMEM(非易失性存储器)
NVMEM框架绑定,nvmem-cells与nvmem-cell-names,eFuse与OTP读取。
NVMEMeFuse
21
FPGA管理器
FPGA重配置描述,fpga-region节点,firmware-name属性,PR支持。
FPGA重配置
22
IOMMU/SMMU
IOMMU绑定,iommu-cells与iommus属性,DMA地址翻译与设备隔离。
IOMMUSMMU
23
中断控制器(GIC/INTC)
GIC描述,interrupt-cells、interrupt-parent详解,多级中断级联。
GIC中断
24
多核CPU拓扑
CPU节点描述,cpu-map与cpu-cores拓扑,big.LITTLE表示,cpu-idle-states。
多核拓扑
25
内存节点与保留内存
memory节点,reserved-memory保留内存,CMA配置,DMA内存池。
内存CMA
26
Chosen节点与内核参数
chosen节点作用,bootargs内核参数,stdout-path控制台,initrd起始地址。
chosenbootargs
27
Overlay(设备树叠加层)
Overlay语法与编译,target与__overlay__关键字,运行时动态加载/卸载。
Overlay动态
28
编译与反编译
DTC编译器使用,dtc -I dts -O dtb编译,dtc -I dtb -O dts反编译,fdtdump工具。
DTC反编译
29
Bootloader中的设备树
U-Boot对设备树处理(fdt命令),启动流程传递(bootm、booti),fdt_addr_r与fdt_high。
U-Boot启动
30
内核中的设备树解析
OF API详解(of_find_node_by_name等),设备树与platform_driver匹配,与ACPI对比。
OF API匹配