🐧 Linux驱动 · 架构设计
🎯 30章 · 从小白到高手
01
环境搭建
交叉编译链
内核源码树
NFS/TFTP
02
内核模块基础
加载/卸载
模块参数
符号导出
03
字符设备驱动框架
file_operations
设备号
cdev
04
设备号管理
静态/动态分配
查看已用
冲突处理
05
内存管理
kmalloc/kzalloc
vmalloc
内存池/DMA
06
并发控制
自旋锁
互斥锁
RCU
07
中断处理
上半部/下半部
tasklet
工作队列
08
时间管理
内核定时器
高精度定时器
jiffies/HZ
09
同步机制
等待队列
完成量
信号量/顺序锁
10
IO模型
阻塞/非阻塞
select/poll/epoll
异步通知
11
平台设备驱动
platform_driver
设备树匹配
资源获取
12
设备树基础
DTS语法
节点/属性
中断/时钟/GPIO
13
设备树实战
解析设备树
匹配驱动
of_函数
14
I2C子系统
核心层
总线/设备驱动
SMBus
15
SPI子系统
核心层
消息队列
设备/控制器驱动
16
USB子系统
核心结构
urb机制
Gadget驱动
17
PCI子系统
配置空间
BAR空间/DMA
MSI中断
18
Regmap框架
初始化/读写
缓存机制
多总线支持
19
Input子系统
核心层/事件层
设备驱动层
多点触摸
20
FrameBuffer驱动
Framebuffer核心
显存映射/ioctl
显示参数
21
DRM/KMS驱动
核心对象
CRTC/Encoder
GEM/Dumb Buffer
22
ALSA音频驱动
ALSA核心
PCM/控制接口
DMA缓冲区
23
V4L2视频驱动
V4L2核心
视频采集/输出
缓冲区管理
24
MTD子系统
MTD核心
NAND/SPI Flash
UBIFS
25
DMA引擎驱动
通道管理
描述符/回调
Scatter-Gather
26
时钟框架
提供者/消费者
时钟树管理
动态调频
27
电源管理
Runtime PM
系统休眠/唤醒
CPU空闲/频率
28
Pin Control子系统
引脚控制/复用
引脚配置
GPIO交互
29
GPIO子系统
GPIO操作/中断
模拟I2C/SPI
按键驱动
30
驱动调试技巧
printk/动态调试
ftrace/kprobe
kgdb