04 · Linux 内核与驱动开发

这是嵌入式 Linux 的核心模块:理解内核框架,并能为外设编写驱动。


子主题

文件 内容 必学程度
01-kernel-overview.md 内核概览(源码结构、编译、版本、内核态 vs 用户态) ★★★
02-kernel-modules.md 内核模块(Makefile、加载、参数、导出符号) ★★★
03-process-scheduler.md 进程调度(CFS、实时调度、优先级、组调度) ★★★
04-memory-management.md 内存管理(页表、伙伴系统、slab、vmalloc、用户页缓存) ★★★
05-vfs.md 虚拟文件系统(VFS、inode、dentry、file、文件系统注册) ★★★
06-interrupt.md 中断与异常(top half、bottom half、tasklet、workqueue、threaded IRQ) ★★★
07-kernel-sync.md 内核同步(spinlock、mutex、rcu、seqlock、原子操作) ★★★
08-device-tree.md 设备树(Device Tree、binding、overlay) ★★★
09-char-device.md 字符设备驱动(file_operations、register_chrdev、cdev) ★★★
10-block-device.md 块设备驱动(bio、request、blk-mq) ★★
11-network-driver.md 网络设备驱动(netdev、skb、NAPI) ★★
12-platform-driver.md Platform 驱动模型(device、driver、probe、remove) ★★★
13-dma.md DMA 与缓存一致性(dma-mapping、cache flush) ★★
14-i2c-driver.md I2C 驱动(i2c_adapter、i2c_client、i2c_driver) ★★★
15-spi-driver.md SPI 驱动(spi_master、spi_device、spi_message) ★★
16-pinctrl-gpio.md pinctrl 与 GPIO 子系统 ★★★
17-power-management.md 电源管理(runtime PM、suspend/resume) ★★
18-debugging.md 内核调试(printk、dynamic debug、ftrace、perf、bpf) ★★★

学习目标

完成本模块后,你应该能够:

  1. 理解内核五大子系统(调度、内存、VFS、网络、进程间通信)
  2. 编写一个完整的内核模块
  3. 编写一个字符设备驱动并从用户态测试
  4. 在设备树中描述硬件并编写对应的 platform 驱动
  5. 编写一个 I2C 设备驱动
  6. 处理中断、DMA、缓存一致性问题
  7. 使用 printk、ftrace、perf 等工具调试内核

推荐资源


进入下一模块

05-system-build/README.md — 系统构建与 Bootloader

📑 目录文档