内核驱动框架移植与编译方法实战

📚 共计 30 章节
01
内核驱动框架概述
什么是内核驱动框架 · 为什么需要驱动框架 · 主流框架对比 (Linux/RT-Thread/FreeRTOS)
概念对比
02
Linux内核源码结构
源码目录树解析 · 关键子系统 · 内核配置系统 (Kconfig/Makefile)
源码配置
03
搭建交叉编译环境
交叉编译工具链安装 · 环境变量配置 · 验证 arm-linux-gnueabihf-gcc
工具链环境
04
内核编译基础
获取内核源码 · make menuconfig · make zImage · make modules
编译内核
05
内核模块开发入门
模块Hello World · insmod/rmmod · 模块参数 · 依赖关系
模块加载
06
字符设备驱动框架
设备号注册/注销 · file_operations · open/release/read/write · 设备节点
字符设备驱动
07
platform驱动框架
platform总线模型 · device/driver · 匹配机制 · probe函数
platform总线
08
设备树基础
dts/dtsi语法 · 节点与属性 · reg/interrupts · dtc编译
设备树语法
09
设备树实战
添加自定义设备 · of_match_table · platform_get_resource
解析资源
10
中断处理框架
request_irq · 上半部/下半部 (tasklet/workqueue) · 中断共享 · 上下文
中断下半部
11
内核定时器与延时
timer_list · hrtimer · mdelay/udelay/msleep
定时器延时
12
内核同步机制
自旋锁 · 互斥锁 · 信号量 · 读写锁 · 原子操作
同步
13
内存管理框架
kmalloc/vmalloc · GFP标志 · slab分配器 · DMA内存
内存分配
14
IO访问模型
ioremap · readl/writel · PIO/MMIO · IO内存访问示例
IO映射
15
内核链表与数据结构
list_head · hlist · kfifo · 红黑树简介
链表数据结构
16
文件系统驱动框架
VFS层 · register_filesystem · 超级块/inode · 简单文件系统
文件系统VFS
17
块设备驱动框架
register_blkdev · request_queue · bio · gendisk
块设备请求队列
18
网络设备驱动框架
net_device · netif_rx/dev_queue_xmit · NAPI · 虚拟网卡
网络NAPI
19
USB设备驱动框架
USB子系统 · urb · 枚举过程 · USB鼠标驱动
USBurb
20
PCI设备驱动框架
PCI配置空间 · BAR映射 · DMA · pci_register_driver
PCIDMA
21
I2C设备驱动框架
I2C总线架构 · 核心层/适配器 · 设备驱动 · SMBus
I2C总线
22
SPI设备驱动框架
SPI协议 · 设备注册 · spi_message · 驱动示例
SPI传输
23
GPIO子系统
gpiolib · gpio_request · 方向/值操作 · gpio_to_irq
GPIO中断
24
时钟与电源管理框架
clk_get/clk_enable · 休眠/唤醒 · runtime PM · cpufreq
时钟电源
25
DMA引擎框架
DMA控制器抽象 · dmaengine API · 传输描述符 · scatter-gather
DMA引擎
26
帧缓冲 (Framebuffer) 驱动
fb_info · 显存映射 · LCD控制器 · 简单显示驱动
Framebuffer显示
27
ALSA音频驱动框架
ALSA架构 (card/pcm/control) · DMA音频 · codec接口 · 音量控制
音频ALSA
28
V4L2视频驱动框架
video_device/vb2_buffer · 摄像头驱动 · 视频采集流程
视频V4L2
29
内核调试技术
printk · dynamic_debug · procfs/debugfs/sysfs · kgdb · ftrace
调试跟踪
30
驱动移植实战
Linux 4.x → 5.x · 设备树适配 · API兼容性 · 性能优化
移植实战