📘 AOSP内核驱动移植实战指南
30章 · 从入门到实战
01
AOSP内核开发环境搭建
环境
Ubuntu配置
AOSP源码
内核结构
交叉工具链
02
Linux内核模块基础
模块
加载/卸载
参数传递
依赖关系
符号导出
03
字符设备驱动框架
字符设备
file_operations
设备号
cdev
设备节点
04
驱动中的内存管理
内存
kmalloc/kzalloc
vmalloc
内存屏障
DMA一致性
05
并发与竞态控制
并发
自旋锁
mutex
读写锁
原子操作
RCU
06
中断处理机制
中断
注册/释放
上半部/下半部
tasklet
工作队列
threaded IRQ
07
内核定时器与延迟
定时器
timer_list
hrtimer
msleep/udelay
jiffies
08
I/O模型与阻塞
I/O
等待队列
poll/select
fasync
O_NONBLOCK
09
Platform总线驱动模型
Platform
platform_driver
设备树匹配
probe流程
10
设备树 (Device Tree) 详解
DTS
DTS语法
节点属性
reg/interrupts
编译/反编译
11
I2C子系统驱动开发
I2C
核心层
设备驱动
总线驱动
client/adapter
12
SPI子系统驱动开发
SPI
消息队列
设备驱动
控制器驱动
spidev
13
GPIO子系统与pinctrl
GPIO
编号映射
gpiolib
pinctrl
设备树配置
14
Regulator与Clock框架
电源/时钟
电压调节器
时钟使能/频率
设备树regulator
15
Input子系统驱动
输入
事件上报
input_dev
按键/触摸
evdev
16
FrameBuffer & DRM显示驱动
显示
FBDEV
DRM/KMS
crtc/encoder
drm_fb_helper
17
ALSA音频驱动开发
音频
snd_card
PCM设备
DAI链路
codec驱动
18
V4L2视频驱动框架
视频
video_device
videobuf2
摄像头驱动
19
USB设备驱动开发
USB
描述符解析
URB传输
gadget
usb-serial
20
MMC/SD卡驱动
存储卡
mmc_host
请求队列
SDIO
eMMC分区
21
NAND与eMMC存储驱动
存储
MTD子系统
NAND控制器
UBIFS
坏块管理
22
电源管理驱动
PM
suspend/resume
runtime PM
wakeup source
动态调压
23
内核调试技术
调试
printk
dynamic debug
ftrace
kgdb
24
性能优化与测量
性能
perf
profiling
延迟测量
cache优化
25
SELinux与内核安全
安全
SELinux策略
LSM
seccomp
权限控制
26
内核编译与模块签名
编译
内核裁剪
模块签名
verity/AVB
版本控制
27
AOSP内核与用户空间接口
接口
sysfs/debugfs
ioctl
netlink
binder
28
内核热插拔与udev
热插拔
uevent
设备添加/移除
udev规则
动态管理
29
内核启动流程分析
启动
head.S
start_kernel
initcall
设备初始化顺序
30
实战:GPIO按键驱动移植
实战
设备树配置
中断处理
input子系统
用户空间测试