这条路线面向需要定制 Linux 系统、连接设备和部署常驻应用的读者。主线使用 Buildroot 与 QEMU virt;网关程序可先在普通电脑运行,不要求先有单板计算机。QEMU 能观察内核和用户空间,但不替代目标板的电源、启动介质、引脚或真实外设验证。

先把层次分清

能使用 shell 和编译程序后,先理解主机/目标、CPU ABI、动态加载器、进程与文件描述符。接着沿启动日志识别 Bootloader、内核、设备树、rootfs 和 init 的职责,避免把所有启动问题归为“驱动不对”。

设备学习从现有子系统开始,检查设备树与驱动匹配,再看用户接口。不需要为学习每种传感器都写一个新字符驱动;知道何时使用 GPIO 原型接口、何时采用 IIO 或 input 驱动,同样是工程判断。

两组实践相互补充

先在主机执行网关协议测试,保证分块、坏帧、重复和内存边界可重复。再按固定 Buildroot 目标构建系统,打包目标 Python 与应用配置,在 QEMU 中确认启动、权限、存储路径和退出行为。

前一组已有可运行附件;后一组需要 Linux 构建环境,文章明确标注尚未完成本机系统构建。完成课程时应补上自己的工具版本、构建日志和目标运行证据,不能用主机单元测试替代目标系统验收。

完成标准

  • 可以用日志和配置区分内核未启动、根盘缺失、init 失败与应用依赖问题。
  • 系统配置、包、补丁和下载输入都在版本控制中,干净环境能够重建。
  • 网关在任意测试切分下正确接收,坏帧后恢复,缓冲区有界,错误有分类。
  • 应用使用明确身份与设备权限,日志有容量限制,重启和持久副作用有清楚语义。

面试复习可用“设备读不到数据”串起供电、总线、设备树、驱动、ABI、权限与业务解析,给每层提出能区分原因的证据。

参考:Buildroot 手册、Linux 驱动文档、Bootlin 开放课程材料。