Skip to content

版本说明

本教程提供多个内核版本的实现:

  • 老内核版本(Linux 4.1.15):仅供参考,标记为"历史版本"
  • 新内核版本(Linux 6.12.49 / 7.0.0-rc4):推荐学习,包含最新特性

学习路径

本教程采用渐进式学习路径,从基础概念到实际开发,系统性地掌握字符设备驱动开发技能。

🎯 推荐学习路径(完整版)

适合初学者,按顺序学习建立完整的知识体系:

阶段一:基础理论(1-5)

  1. 01_introduction.md - 字符设备驱动简介
  2. 02_kernel_space_basics.md - 内核空间基础与硬件访问
  3. 03_kernel_module_mechanism.md - 内核模块机制
  4. 04_kernel_print_guide.md - 内核打印详解
  5. 05_kernel_debug_techniques.md - 内核调试技术

阶段二:API 演进与实战(6-11)

  1. 06_legacy_chardev.md - 老API:虚拟字符设备 💻
  2. 06p_ide_setup.md - IDE 配置指南 🛠️
  3. 07_hardware_overview.md - LED 硬件基础 🔥
  4. 08_memory_mapped_io.md - 内存映射 I/O 深度解析 ⭐⭐⭐
  5. 09_hardware_abstraction_layer.md - 硬件抽象层设计 🔧
  6. 10_chardev_implementation.md - 字符设备驱动实现 💻
  7. 11_build_test_deploy.md - 构建、测试与部署实战 🚀

阶段三:新 API 专题(12-18)

  1. 12_new_chardev_api_overview.md - 新 API 概览与设计理念 ⭐⭐⭐
  2. 13_cdev_and_device_number.md - cdev 与设备号管理 ⭐⭐⭐
  3. 14_class_device_model.md - class 和 device 模型 ⭐⭐⭐
  4. 15_error_handling_patterns.md - 驱动错误处理模式 ⭐⭐
  5. 16_device_structure_in_new_api.md - 新 API 设备结构体 ⭐⭐
  6. 17_new_api_driver_analysis.md - 新 API 驱动代码深度解析 ⭐⭐⭐
  7. 18_app_development_and_testing.md - 应用开发与真实测试 ⭐

🚀 快速路径(有经验开发者)

如果你已经有内核开发经验:

  1. 直接阅读 12_new_chardev_api_overview.md 了解新API概览
  2. 跟随 13_cdev_and_device_number.md 深入学习 cdev 和设备号
  3. 跟随 14_class_device_model.md 了解 class 和 device 模型
  4. 跟随 17_new_api_driver_analysis.md 深入分析驱动代码
  5. 跟随 18_app_development_and_testing.md 了解应用开发和测试

章节目录

阶段一:基础理论

阶段二:API 演进与实战

阶段三:新 API 专题

双轨内核支持

轨道版本说明
linux-imx6.12.49 推荐NXP BSP,针对 i.MX 优化
mainline7.0.0-rc4 进阶上游主线,最新特性

学习目标

掌握字符设备驱动的完整开发流程:从 file_operations 到新 API 的"三步走"机制,独立编写生产级驱动代码。

前置知识

C 语言高级特性 · Linux 内核基础 · 硬件基础知识

延伸阅读

常见问题

Q: 新老内核的 API 兼容吗?

A: 核心字符设备 API 保持兼容,老代码在新内核上也能运行,但不推荐新驱动使用老 API。

Q: 如何选择动态分配还是静态分配设备号?

A: 推荐使用动态分配(alloc_chrdev_region),避免设备号冲突。

Q: 必须使用 class_createdevice_create 吗?

A: 不是强制的,但强烈推荐,可以自动创建设备节点。

Q: 为什么要学习 02-05 基础教程?

A: 这些教程建立了必要的内核基础概念,理解这些内容会让后续的驱动开发事半功倍。如果你已经有内核开发经验,可以跳过。

继续学习

Built with VitePress