🐧 驱动实战 · 30章
🎯 风格 · 硬核交互
1
Linux驱动开发环境搭建
交叉编译工具链配置、内核源码树构建、NFS与TFTP服务搭建
2
第一个内核模块
Hello World模块编写、Makefile、加载卸载、查看模块信息
3
字符设备驱动基础
设备号注册注销、file_operations、cdev、设备节点创建
4
驱动中的并发控制
自旋锁、信号量、互斥锁、原子操作
5
阻塞与非阻塞IO
等待队列、poll/select、异步通知(fasync)
6
设备树(Device Tree)基础
DTS语法、DTC编译、设备树匹配过程
7
GPIO驱动实战
GPIO子系统、gpio_request、基于设备树的GPIO驱动
8
LED驱动实战
完整LED字符驱动、ioctl控制、用户空间测试
9
按键驱动与中断
中断注册/释放、顶半部底半部、按键消抖
10
定时器与内核时间管理
内核定时器、高精度定时器(hrtimer)、jiffies与HZ
11
内存管理
kmalloc/vmalloc区别、GFP_KERNEL、DMA内存分配
12
I2C子系统驱动
I2C总线协议、适配器驱动、设备驱动、用户空间访问
13
SPI子系统驱动
SPI总线协议、设备驱动编写、数据传输流程
14
UART串口驱动
串口驱动框架、tty核心、自定义串口驱动
15
PWM驱动实战
PWM子系统、控制器驱动、背光/蜂鸣器驱动
16
ADC驱动实战
IIO子系统、ADC设备驱动、sysfs读取ADC值
17
DMA驱动实战
DMA引擎API、传输描述符、内存到外设DMA
18
RTC驱动实战
RTC子系统、设备驱动、设置与读取系统时间
19
看门狗(Watchdog)驱动
Watchdog子系统、喂狗操作、硬件看门狗实现
20
Input子系统驱动
Input核心层、事件处理层、按键输入设备驱动
21
FrameBuffer驱动
Framebuffer架构、LCD驱动、用户空间操作显存
22
USB设备驱动
USB子系统架构、设备枚举、USB鼠标驱动
23
PCIe设备驱动
PCIe配置空间、BAR空间映射、DMA传输
24
MMC/SD卡驱动
MMC子系统、SD卡协议、块设备驱动
25
NAND Flash驱动
MTD子系统、NAND控制器、UBIFS挂载
26
音频驱动(ALSA)
ALSA架构、Codec驱动、DMA音频数据传输
27
网络设备驱动
net_device、NAPI轮询、以太网PHY驱动
28
电源管理
Runtime PM、系统休眠唤醒、设备电源状态切换
29
驱动调试技巧
printk、动态调试(kgdb)、内核调试
30
驱动热插拔与udev
uevent、设备模型(kobject/kset)、udev规则