内核设备树Overlay动态加载实战

📚 共计 30 章节
01
Overlay概念与背景
为什么需要动态加载?传统设备树的局限性。
基础原理
02
内核配置与编译
开启Device Tree Overlay支持,编译dtc工具。
环境编译
03
DT Overlay语法基础
/plugin/、target、__overlay__、fragment。
语法dts
04
编写第一个Overlay
点亮一个GPIO LED,手动加载与卸载。
实战GPIO
05
Overlay的编译与反编译
dtc -@ 选项,fdtdump查看。
工具调试
06
configfs接口详解
/sys/kernel/config/device-tree/overlays
内核接口
07
手动加载Overlay
echo 1 > status,cat dtbo > path。
操作命令行
08
手动卸载Overlay
echo 0 > status,rmdir操作。
操作清理
09
自动加载机制
udev规则与systemd服务触发。
自动化系统
10
Overlay中的资源冲突
I2C地址、GPIO号、中断号重叠。
排错冲突
11
动态GPIO复用
在Overlay中配置pinctrl,避免引脚冲突。
pinctrl复用
12
I2C设备动态挂载
通过Overlay挂载温度传感器。
I2C外设
13
SPI设备动态挂载
通过Overlay挂载ADC芯片。
SPIADC
14
多个Overlay叠加
顺序加载与依赖关系管理。
进阶依赖
15
Overlay的卸载顺序
反向卸载与资源释放。
资源生命周期
16
内核日志分析
dmesg中Overlay加载成功/失败信息。
调试日志
17
调试技巧
使用configfs查看已加载Overlay列表。
调试configfs
18
常见错误1
__symbols__节点缺失导致target找不到。
错误符号
19
常见错误2
phandle值冲突与重映射。
错误phandle
20
常见错误3
__overlay__节点语法错误。
错误语法
21
U-Boot与Overlay
在U-Boot阶段加载Overlay。
bootloaderuboot
22
设备树插件与内核模块配合
先加载模块还是先加载Overlay?
模块协同
23
Overlay中的时钟与电源管理
动态控制外设时钟。
时钟电源
24
Overlay中的中断路由
动态注册中断控制器。
中断irq
25
Overlay与FPGA
动态加载FPGA bitstream后挂载设备树。
FPGAbitstream
26
实战1:树莓派GPIO扩展板
树莓派GPIO扩展板Overlay编写。
实战树莓派
27
实战2:BeagleBone Black PRU
BeagleBone Black的PRU Overlay加载。
实战PRU
28
实战3:Xilinx Zynq FPGA重配置
Xilinx Zynq的FPGA Overlay动态重配置。
实战Zynq
29
性能考量
Overlay加载时间对系统启动的影响。
性能启动
30
总结与最佳实践
Overlay设计规范与项目模板。
总结规范