🌱
驱动架构·进阶
30章 完整版
⚡ 总线 · 设备树 · 中断 · DMA · 性能
01
驱动模型总览
Linux设备驱动模型核心概念,总线、设备、驱动三者的关系,以及platform总线的工作原理。
02
字符设备驱动进阶
深入理解file_operations结构体,实现阻塞与非阻塞IO,以及poll机制的应用。
03
设备树详解
设备树的语法、编译与解析,如何在驱动中获取设备树节点信息。
04
中断子系统
Linux中断处理机制,顶半部与底半部(tasklet、workqueue、 threaded IRQ)的设计与选择。
05
并发与竞态控制
自旋锁、互斥锁、读写锁、RCU机制的使用场景与性能对比。
06
内核内存管理
kmalloc、vmalloc、dma_alloc_coherent的区别,以及内存泄漏的排查方法。
07
时间管理与内核定时器
jiffies、HZ、高精度定时器(hrtimer)的使用,以及内核延时函数的区别。
08
同步机制进阶
完成量(completion)、信号量(semaphore)与等待队列(wait_queue)的深度剖析。
09
DMA引擎驱动
DMA控制器驱动框架,scatter-gather传输,以及DMA映射与一致性。
10
Regmap API
Regmap框架的设计思想,如何简化I2C/SPI设备的寄存器读写操作。
11
IIO子系统
工业输入输出框架,ADC/DAC驱动的实现,以及triggered buffer模式。
12
Input子系统
输入设备驱动框架,按键、触摸屏驱动的实现,以及事件上报机制。
13
RTC驱动
实时时钟驱动框架,与用户空间hwclock的交互,以及电源管理回调。
14
PWM驱动
PWM控制器驱动框架,背光调节与电机控制的应用实例。
15
GPIO子系统
gpiolib框架,GPIO作为中断源、输出控制、输入检测的完整实现。
16
SPI驱动
SPI控制器驱动与设备驱动,SPI协议的自定义与性能优化。
17
I2C驱动
I2C总线驱动与设备驱动,SMBus协议支持,以及多主设备冲突处理。
18
UART驱动
串口驱动框架,线路规程(line discipline)的实现,以及DMA传输优化。
19
USB设备驱动
USB核心框架,urb传输机制,以及批量传输与中断传输的实现。
20
PCIe驱动
PCIe配置空间访问,BAR空间映射,MSI/MSI-X中断的使用。
21
MMC/SD卡驱动
MMC子系统框架,SD卡协议栈,以及eMMC驱动的实现要点。
22
NAND Flash驱动
MTD子系统,NAND控制器驱动,以及坏块管理与ECC校验。
23
FrameBuffer驱动
显示子系统框架,Framebuffer的实现,以及双缓冲技术。
24
ALSA音频驱动
ALSA架构,Codec驱动与Platform驱动的配合,以及DMA音频传输。
25
V4L2视频驱动
Video for Linux 2框架,摄像头驱动的实现,以及buffer管理机制。
26
电源管理
Runtime PM框架,系统休眠与唤醒流程,以及设备电源域的管理。
27
时钟框架
CCF(Common Clock Framework),时钟树的构建与动态调频。
28
pinctrl与pinctrl子系统
引脚复用与配置,pinctrl与GPIO的交互。
29
驱动调试技术
printk使用技巧,ftrace追踪,kprobe动态插桩,以及kgdb调试。
30
驱动性能优化
中断负载均衡,DMA卸载,cache一致性维护,以及profiling工具的使用。