📘 裸机 → Linux 驱动
迁移实战
🎯 30章 · 从底层到内核 · 完整路线
⚡ 全栈嵌入式
30节
01
裸机开发回顾
为什么还要学裸机?内存模型与中断处理
02
Linux驱动初探
内核模块基础,第一个Hello World驱动
03
字符设备驱动
设备号、file_operations、cdev注册与注销
04
内存映射与DMA
ioremap / DMA API,从物理地址到内核
05
中断处理
裸机中断 vs 下半部:tasklet, workqueue, threaded IRQ
06
并发与竞态
自旋锁、互斥锁、原子操作,从关中断到锁机制
07
时间与定时器
裸机定时器 / Linux内核定时器、hrtimer
08
GPIO控制
从寄存器操作到GPIO子系统 (gpiolib)
09
I2C总线驱动
裸机时序模拟 / Linux I2C adapter/driver
10
SPI总线驱动
裸机SPI操作 / Linux SPI master/device
11
UART串口驱动
轮询/中断 → Linux tty驱动核心层
12
平台设备驱动
platform driver/device,设备树与板级文件
13
设备树 (Device Tree)
从硬编码到设备树,dts语法与绑定
14
时钟与电源管理
裸机时钟配置 / Linux clk框架、runtime PM
15
DMA引擎
裸机DMA操作 / Linux DMA Engine API
16
帧缓冲 (Framebuffer)
裸机LCD操作 / Linux fbdev子系统
17
输入子系统
按键/触摸屏 → Linux input子系统
18
音频驱动
裸机I2S操作 / Linux ALSA SoC框架
19
网络驱动
裸机以太网MAC / Linux net_device
20
块设备驱动
SD卡读写 → Linux gendisk/request层
21
USB设备驱动
USB主机控制器 / Linux USB子系统
22
PCI/PCIe驱动
裸机配置空间访问 / Linux PCI子系统
23
设备模型 (kobject/sysfs)
从全局变量到Linux设备模型
24
调试技巧
printk, ftrace, kgdb, perf 内核调试器
25
性能优化
临界区 / preempt, RCU
26
安全与隔离
SELinux, Capabilities,从无保护到内核安全
27
用户空间驱动 (UIO/VDMA)
绕过内核,在用户态操作硬件
28
实时性改造
PREEMPT_RT补丁,从裸机实时到Linux实时
29
项目实战
BMP280传感器驱动移植为Linux IIO驱动
30
总结与展望
迁移路线图、常见陷阱、社区资源与持续学习