01
驱动开发概述
什么是驱动程序 · 驱动在操作系统中的角色 · 与普通应用开发的区别
概念入门
02
开发环境搭建
Windows WDK/SDK安装 · Linux内核源码获取 · 交叉编译工具链 · 虚拟机与双系统
环境工具
03
驱动框架入门
WDF框架 · LDM框架 · 字符设备驱动模型 · 入口与卸载函数
框架核心
04
编译与调试
Makefile编写 · Kbuild系统 · printk与DbgPrint · WinDbg与KGDB
调试编译
05
内存管理
内核态与用户态内存 · kmalloc/vmalloc · 内存泄漏检测 · DMA内存申请
内存核心
06
并发与同步
自旋锁 · 互斥锁 · 读写锁 · 原子操作 · 中断上下文锁使用
并发同步
07
中断处理
注册中断处理函数 · 顶半部与底半部 · 工作队列与tasklet · 中断共享
中断硬实时
08
定时器与延迟
内核定时器 · 高精度定时器 · 忙等待与睡眠延迟 · watchdog
时间延迟
09
IO操作
端口IO与内存映射IO · ioremap · readl/writel · IO访问权限
IO硬件
10
PCI/PCIe设备驱动
配置空间读取 · BAR空间映射 · MSI/MSI-X中断 · 热插拔
PCIe总线
11
USB设备驱动
USB描述符解析 · URB提交与回调 · 批量/中断传输 · 设备枚举
USB外设
12
块设备驱动
块设备注册 · 请求队列与bio · gendisk管理 · IO调度器
存储块设备
13
网络设备驱动
net_device结构体 · NAPI轮询 · sk_buff管理 · MAC与PHY
网络协议栈
14
显示与GPU驱动
Framebuffer · DRM/KMS架构 · GPU内存管理 · 显示模式设置
图形GPU
15
音频驱动
ALSA架构 · PCM设备注册 · DMA缓冲区 · 编解码器控制
音频多媒体
16
输入设备驱动
input子系统 · 事件上报 · 多点触控协议 · 按键映射
输入HID
17
I2C/SPI总线驱动
总线注册 · 设备树匹配 · 数据传输流程 · 从设备驱动
总线嵌入式
18
设备树 (Device Tree)
dts编写 · 绑定文档 · 中断与GPIO描述 · overlay机制
设备树配置
19
电源管理
系统睡眠与唤醒 · 运行时PM · OPP表 · regulator框架
电源节能
20
驱动安全
内核提权防护 · 缓冲区溢出 · ioctl权限检查 · SELinux/LSM
安全防护
21
驱动签名与认证
Windows WHQL签名 · Linux模块签名 · Secure Boot · evm/ima
签名认证
22
性能优化
零拷贝技术 · DMA引擎 · 缓存一致性 · 批处理与合并
性能优化
23
调试进阶
ftrace/tracepoint · kprobe/uprobe · crash dump · KASAN/KMSAN
调试进阶
24
兼容性测试
多内核版本兼容 · 32/64位 · 大端小端 · 硬件差异处理
兼容测试
25
驱动热修复
livepatch机制 · 函数级替换 · 原子替换 · 回滚策略
热修复livepatch
26
虚拟化驱动
virtio框架 · 半虚拟化设备 · Virtqueue机制 · VFIO直通
虚拟化云
27
容器与驱动
Docker设备挂载 · cgroup设备控制 · namespace隔离 · GPU容器化
容器Docker
28
驱动自动化测试
单元测试(kunit) · 硬件模拟器 · CI/CD集成 · 回归测试
测试自动化
29
驱动文档与维护
内核文档规范 · 注释风格 · 版本控制 · 社区提交流程
文档协作
30
实战项目
从零编写字符设备 · 用户态交互 · procfs接口 · 提交补丁到主线
实战项目