嵌入式 Linux 学习路线

这条路线按照“先跑通环境,再理解内核抽象,最后完成驱动与调试闭环”的顺序,整理 RongCraft 现有的 20 篇嵌入式 Linux 笔记。你可以从第一阶段顺序阅读,也可以直接跳到正在解决的问题。

建议用法:初学者按阶段顺序阅读;有开发经验时先查看对应子系统,再进入具体驱动实战。每篇文章末尾都提供返回路线和相关主题的入口。

第一阶段:环境、启动与系统移植

先把开发环境、启动链路和内核移植串起来,建立从主机到开发板的完整视角。

  1. WSL2 搭建 iMX6ULL 开发环境完整教程
    从安装 WSL2、配置镜像网络,到搭建 NFS/TFTP 和交叉编译工具链,完整讲解 iMX6ULL 嵌入式 Linux 开发环境搭建与常见故障排查。
  2. 芯片上电到 Linux 启动全流程
    以 iMX6ULL 为例梳理嵌入式 Linux 从 BootROM、U-Boot、内核到 init 和 Shell 的完整启动流程,并总结常见面试要点。
  3. iMX6ULL Linux 5.15 内核移植:defconfig、DTS 与以太网驱动
    记录 iMX6ULL Linux 5.15 内核移植全过程:defconfig 裁剪、DTS 适配、U-Boot 启动配置,以及以太网驱动问题的定位与修复。

第二阶段:Linux 设备模型与内核子系统

理解 Platform 总线后,再按 GPIO、PWM、TTY、Watchdog、IIO、SPI 和 Input 逐个掌握内核抽象。

  1. Linux Platform 设备驱动模型
    系统讲解 Linux Platform 设备驱动模型:platform_device、platform_driver、匹配机制、资源获取、probe 流程与完整驱动示例。
  2. GPIO Hog 机制详解
    详解 Linux 设备树 GPIO Hog 机制,包括自动预占 GPIO、输入输出配置、初始化时序、典型 DTS 写法和常见问题。
  3. PWM 子系统与 Host 驱动开发
    以 iMX6ULL pwm-imx 为例分析 Linux PWM 子系统、Host 驱动注册与 probe 流程、核心数据结构和 sysfs 控制方法。
  4. TTY 子系统架构与源码文件解析
    基于 Linux 4.14 和 iMX6ULL,解析 TTY 子系统分层架构及 drivers/tty 关键源码文件职责,梳理字符设备到串口驱动的数据路径。
  5. Linux Watchdog 接口与 API 参考
    整理 Linux Watchdog 用户态接口与 API:/dev/watchdog、Magic Close、ioctl 命令、超时设置、状态查询和环境监测。
  6. Linux IIO 子系统详解
    系统讲解 Linux Industrial I/O(IIO)子系统:设备模型、通道、sysfs、buffer、trigger、核心数据结构与传感器驱动流程。
  7. Linux SPI 子系统详解
    系统讲解 Linux SPI 子系统:总线架构、spi_device、spi_driver、spi_transfer、同步传输 API、DTS 配置与常见故障。
  8. Linux Input 子系统详解
    系统讲解 Linux Input 子系统:input_dev、input_event、事件类型与键码、驱动注册和上报、用户态读取与常见问题。

第三阶段:驱动开发实战

通过 LED、蜂鸣器、按键、传感器、IMU 和 WiFi,把设备树、probe、资源管理与用户态验证连成闭环。

  1. LED Platform 驱动开发
    以 iMX6ULL GPIO LED 为例,使用 Platform Driver 实现字符设备驱动,涵盖 DTS、probe、write 控制、定时器闪烁与测试程序。
  2. Beep Platform 驱动开发(miscdevice 框架)
    以 iMX6ULL 蜂鸣器为例,使用 Platform Driver 与 miscdevice 实现字符设备驱动,涵盖设备树、GPIO 控制、注册流程和测试。
  3. Key Platform 驱动开发(中断与定时器消抖)
    以 iMX6ULL 按键为例,实现 Platform Driver、miscdevice、中断和定时器消抖,讲解事件处理、DTS 配置与用户态测试。
  4. Key Input 子系统驱动开发
    将 iMX6ULL 按键驱动从 miscdevice 重构为 Linux Input 子系统,讲解 input_dev 注册、中断消抖、事件上报、DTS 与测试。
  5. AP3216C IIO 驱动开发
    以 AP3216C 三合一传感器为例实现 Linux IIO 驱动,涵盖 I2C 寄存器、通道定义、数据读取、DTS 配置与调试验证。
  6. ICM-20608 SPI IIO 驱动开发
    以 ICM-20608 六轴 IMU 为例实现 SPI IIO 驱动,涵盖寄存器协议、通道设计、中断与 workqueue、DTS 和测试。
  7. RTL8189FS WiFi 驱动移植与配置
    记录 iMX6ULL 平台 RTL8189FS WiFi 驱动移植、SDIO 配置、模块编译加载、热点连接及常见故障排查。

第四阶段:工具与网络调试

最后补齐终端效率与网络吞吐测试工具,让环境配置和驱动验证更可重复。

  1. Shell 提示符(PS1)配置
    讲解 Linux Shell 提示符 PS1 的常用转义符、临时与永久配置、颜色和多行样式,适合开发板 rootfs 定制与多设备调试。
  2. iperf3 交叉编译与网络吞吐测试
    讲解如何为 iMX6ULL 交叉编译 iperf3,并使用 eth0 与 wlan0 测试有线和 WiFi 网络吞吐、分析结果与瓶颈。

路线会随着新文章持续更新。若你正在排查具体硬件问题,可先从所属子系统文章建立模型,再回到对应实战记录。

滚动至顶部