Skip to main content

课程简介

注意: 如下课程列表不区分先后顺序,学习参考指南,学习方法请根据自己实际情况查看/docs/Learn-Linux/LearnStudyPath.

专为嵌入式开发从业者及技术爱好者打造的Linux 驱动开发全体系课程,以 “理论奠基 + 实战进阶 + 调试精通” 为核心,通过 162 节系统化课程(含配套文档、全量源码),深度解析 Linux 驱动开发核心框架与典型硬件驱动实现,助力从入门到项目落地的全流程能力提升。

课程亮点:

  • 体系全面,深度剖析: 课程内容涵盖了从基础的单片机程序与Linux程序的分层对比,到字符设备驱动、总线设备驱动模型、设备树、中断系统、输入子系统、I2C与SPI驱动、LCD Framebuffer等核心知识点,并深入讲解了其背后的原理与实现。

  • 循序渐进,实战为主:

    我们摒弃枯燥的理论讲解,通过大量的

    上机实验与源码分析

    ,让你亲手编写并调试各种常见设备的驱动程序,例如:

    • LED和按键驱动:从最简单的GPIO操作入手,理解字符设备驱动与总线设备驱动的区别。
    • 红外遥控器(HS0038)驱动:学习中断处理、环形缓冲区以及输入子系统的应用。
    • 温湿度传感器(DHT11)、超声波测距(SR04)、温度传感器(DS18B20)驱动:掌握复杂传感器的数据采集与驱动实现,并学习中断、内核线程、软件调试与逻辑分析仪调试等高级技巧。
    • I2C和SPI设备驱动:深入理解I2C与SPI总线协议,并实践编写EEPROM (AT24C02) 和OLED屏幕驱动。
    • LCD Framebuffer驱动:了解图形显示原理,并尝试编写自己的Framebuffer驱动。
  • 由浅入深,层层递进: 课程从字符设备驱动框架开始,逐步引入总线设备驱动模型、设备树等高级概念,让你逐步理解Linux驱动的演进与设计思想。

  • 问题导向,答疑解惑: 每个章节都设有答疑环节,及时解决你在学习过程中遇到的疑问,确保你对知识点的透彻理解。

  • 源码丰富,实践性强: 课程提供海量源码,让你不仅能学到理论,更能通过实际代码加深理解,快速上手开发。

你将学到什么?

  • 掌握Linux应用程序与驱动程序之间的接口与分层机制。
  • 熟练运用字符设备驱动框架,编写各类字符设备驱动。
  • 深入理解Linux总线设备驱动模型,学会编写可移植性强的驱动程序。
  • 精通设备树的编写与应用,解决设备配置难题。
  • 掌握中断系统的原理与驱动编写,实现高效的硬件交互。
  • 掌握Linux内核线程的创建与使用。
  • 理解并运用输入子系统,实现按键、触摸屏等输入设备的驱动。
  • 熟练编写I2C、SPI等常见总线设备的驱动程序。
  • 了解LCD Framebuffer驱动的原理与实现。
  • 掌握Linux驱动的调试方法,包括纯软件调试和逻辑分析仪调试。

课程核心模块与内容架构

一、驱动开发基础入门(1-5 章)

1. 分层架构与核心框架

  • 单片机 vs Linux 程序分层:明确用户态 / 内核态分工,理解驱动程序在嵌入式系统中的定位(1.1-1.2)
  • 字符设备驱动框架:详解file_operations接口(open/read/write/ioctl)、驱动入口 / 出口函数(module_init/exit),配套源码级实验(1.3-2.5)
  • 地址空间原理:虚拟地址映射机制、class_create/device_create设备节点创建流程(3.1-3.4)

2. 驱动开发全流程实操

  • 编译与调试:掌握内核内外模块编译(4.2-4.3)、printk日志调试、动态加载 / 卸载驱动(5.2-5.3)
  • 数据交互实战copy_to/from_user数据传输、阻塞 / 非阻塞 IO 场景处理(2.4、11.2-11.3)

二、总线设备模型与设备树(5-9 章)

1. 总线驱动核心模型

  • 分离思想与模型设计:深入platform_driver/platform_device架构,解析设备与驱动匹配机制(compatible 属性、of_match_table)(5.1-5.6)
  • 注册与匹配流程platform_device资源分配、驱动 probe 函数触发逻辑,配套上机实验验证(6.3-6.5)

2. 设备树(Device Tree)开发

  • 节点创建与解析:从 LED / 按键到 I2C/SPI 设备树示例,掌握pinctrl/gpio属性编写(7.2-8.5)
  • 跨平台适配:对比 STM32MP157 与 IMX6ULL 设备树差异,实现驱动代码与硬件解耦(9.2-9.5)

三、硬件驱动实战与调试(10-30 章)

1. 基础外设驱动开发

  • 字符设备进阶:LED 驱动优化(设备树版)、按键中断处理(16.1-16.5)、休眠唤醒与 poll 机制应用(11.3-11.4)
  • 输入子系统:红外遥控器 HS0038 驱动(数据解析、环形缓冲区)、电容触摸屏 GT9XX/FT5x06 驱动分析(23.4-26.7)

2. 通信接口与传感器驱动

  • 总线协议实战
    • I2C:AT24C02 EEPROM 驱动(框架编写、probe 失败调试)(24.2-25.3)
    • SPI:OLED 显示驱动(IOCTL 接口、Framebuffer 实现)、DAC 模块调试(SPI 模式配置)(28.1-28.8)
  • 传感器开发
    • 温湿度:DHT11(查询 / 中断方式)、DS18B20(单总线协议解析)(18.1-21.4)
    • 测距感应:SR04 超声波(中断 / 查询双解法)、SR501 人体感应(内核线程应用)(17.1-16.5)

3. 显示系统驱动

  • Framebuffer 原理:OLED 屏幕驱动框架编写、内核线程优化显示流程(30.1-30.5)
  • LCD 调试:硬件时序分析、逻辑分析仪定位内核 Bug(29.1-29.2)

课程特色与优势

1. “理论 + 代码 + 调试” 三位一体

  • 全量资源配套:每节课程附可运行源码(含驱动模块、测试 APP)、实验文档(操作步骤、问题排查记录),部分章节提供 B 站实操视频链接(如 31 节匹配方法演示)
  • 调试技能全覆盖
    • 基础:dmesg日志分析、内核模块依赖检查(modinfo
    • 进阶:逻辑分析仪抓包(DHT11 时序异常定位)、内核缺陷修复(如 AT24C02 probe 失败补丁)

2. 系统化知识图谱

  • 分层递进:从字符设备到总线模型,从设备树到输入子系统,逐层拆解驱动开发核心难点
  • 场景覆盖:涵盖 GPIO/I2C/SPI/UART/ 中断等主流接口,适配 STM32MP157、IMX6ULL 等多平台开发

3. 实战导向设计

  • 项目化学习:通过 10 + 完整案例(如 SR501 驱动优化、DHT11 中断版开发),掌握 “需求分析→框架设计→调试迭代” 全流程
  • 企业级标准:驱动代码遵循 Linux 内核规范,包含设备树兼容性检查、资源释放处理等工业级设计细节

4. 学习支持与资源

  • 答疑服务:每章节配备 “深入答疑”“中断深度答疑” 等专题,解决共性问题(如 1.4、16.7 节)
  • 扩展资料:提供内核源码注释、硬件数据手册、驱动开发思维导图,助力体系化知识构建

适用人群

  • 开发工程师:单片机 / 嵌入式开发转 Linux 驱动,需突破总线模型、设备树等核心瓶颈
  • 高校学生:电子 / 计算机专业,需掌握嵌入式系统底层开发技能,为就业储备竞争力
  • 技术爱好者:具备 C 语言 / Linux 基础,希望系统学习驱动开发,实现自定义硬件控制

学习收益

能力维度具体提升
框架掌握精通字符设备、总线设备模型、设备树驱动开发,能独立设计可复用驱动框架
硬件适配熟练编写 I2C/SPI 传感器、显示设备等驱动,支持多平台移植(STM32/IMX6ULL 等)
调试能力掌握逻辑分析仪、内核日志等工具,快速定位时序异常、内核崩溃等复杂问题
项目经验积累 10 + 实战项目(温湿度监测、智能遥控、OLED 显示系统),驱动代码量超 10 万行
职业竞争力掌握高薪技术栈(设备树、输入子系统),满足物联网、工业控制等领域招聘需求

课程形式与资源

  • 视频教程:162 节高清视频(含实操演示),总时长超 60 小时,支持 PC / 移动端随时学习
  • 配套资料
    • 文档:原理说明、实验步骤、调试笔记(如 “引脚输出时不该再设置方向” 问题解析)
    • 源码:驱动模块(含内核内外编译 Makefile)、测试 APP、设备树文件(.dts
    • 工具:逻辑分析仪配置文件、内核编译脚本、开发板配套资源