第1章
内核模块初探
什么是内核模块 · 为什么需要 · 与应用程序区别 · Hello World
入门基础
第2章
开发环境搭建
Linux发行版 · 内核头文件 · 编译器 · QEMU虚拟机
环境工具
第3章
模块的编译与加载
Makefile · 编译过程 · insmod/lsmod/rmmod · 依赖与自动加载
编译命令
第4章
模块参数与导出符号
module_param · 参数类型/权限 · EXPORT_SYMBOL · 跨模块调用
参数符号
第5章
内核打印与调试
printk级别 · dmesg · debugfs · GDB调试内核模块
调试printk
第6章
字符设备驱动基础
设备号 · file_operations · cdev · open/read/write/ioctl
驱动字符设备
第7章
内存管理基础
kmalloc/vmalloc · GFP标志 · 分配/释放 · 泄漏检测
内存API
第8章
并发与同步
自旋锁 · 互斥锁 · 读写锁 · 原子操作 · RCU
并发同步
第9章
等待队列与中断
wait_queue · completion · tasklet · workqueue
中断队列
第10章
时间管理与定时器
jiffies/HZ · timer_list · HRTIMER · 延迟函数
定时器时间
第11章
procfs与sysfs
procfs读写 · sysfs属性 · kobject/kset · uevent
文件系统虚拟
第12章
ioctl详解
命令编码 · _IO/_IOR/_IOW · 复杂控制 · 数据交换
ioctl控制
第13章
阻塞与非阻塞I/O
O_NONBLOCK · poll/select/epoll · fasync · 等待队列优化
I/O多路复用
第14章
mmap与DMA
mmap原理 · remap_pfn_range · DMA API · dma_alloc_coherent
内存映射DMA
第15章
平台设备驱动
platform_device/driver · 设备树匹配 · 资源获取 · probe/remove
平台驱动模型
第16章
设备树基础
语法 · dts/dtb/dtc · 绑定文档 · of_系列API
设备树DTS
第17章
I2C子系统
I2C总线架构 · 设备驱动 · adapter驱动 · SMBus
I2C总线
第18章
SPI子系统
SPI总线架构 · 设备驱动 · controller驱动 · 异步传输
SPI总线
第19章
GPIO子系统
gpiolib API · GPIO中断 · pinctrl · 设备树描述
GPIO中断
第20章
时钟与定时器
clk框架 · PWM驱动 · RTC驱动 · alarmtimer
时钟PWM
第21章
输入子系统
input_dev · 事件上报 · 多点触摸 · 游戏手柄
输入事件
第22章
块设备驱动
block_device_operations · 请求队列 · bio · ramdisk
块设备存储
第23章
网络设备驱动
net_device · NAPI · sk_buff · 以太网框架
网络驱动
第24章
USB设备驱动
USB架构 · urb · 描述符 · 批量/中断/等时
USB传输
第25章
PCI设备驱动
配置空间 · BAR空间 · DMA · MSI中断
PCIDMA
第26章
文件系统驱动
VFS · inode/dentry/super_block · 注册文件系统 · 简单实现
文件系统VFS
第27章
内核通知链
notifier_block · 注册/触发 · 原子通知链 · 阻塞通知链
通知事件
第28章
内核线程与工作队列
kthread_create/run · workqueue_struct · ordered workqueue
线程工作队列
第29章
内核调试进阶
ftrace · kprobe/jprobe · systemtap · crash/kdump
调试进阶
第30章
实战项目
完整字符驱动 · 用户态交互 · 性能优化 · 内核补丁流程
实战项目