写给谁:会装系统、会看日志、会配网络、会写脚本,但没碰过硬件的人。 不是写给谁:电子专业学生。他们从模电数电开始,你不需要走那条路。


先说结论

你已经有 Linux 底子,这让你在嵌入式这条路上比零基础的人快很多——因为嵌入式 Linux 就是个缩小版的 Linux,只是你要开始碰引脚了。

但有个坏消息:「会 Linux」到「会控制硬件」之间,隔着一层真实世界。这层东西 AI 帮不了你:板子不亮、线接错了、电源不够、接触不良——这些只能用手摸出来。

所以这份路线不按"知识点"排,按反馈回路排:每个阶段都必须有一个你能摸到的成果。


一个关键区分:嵌入式其实是两层

很多人把"嵌入式"当成一件事,其实差得远:

A 层:嵌入式 Linux(树莓派级)

  • 有操作系统、有文件系统、能跑 g++
  • 你现有的 Linux 知识直接迁移
  • 适合做:网关、控制器、数据采集中心

B 层:MCU 裸机(STM32 / ESP32 级)

  • 没有操作系统、只有几 KB 内存、直接怼寄存器
  • Linux 经验基本用不上,得从头来
  • 适合做:传感器节点、执行器、电池供电设备

「让知识在物理世界干活」这件事,A 层是脑,B 层是手脚。两个都要。


五个阶段

阶段周期你做什么摸到什么
S01 周硬件零基础破冰板子通电,灯亮
S14–6 周用 C 重写一个网关网页点按钮 → 继电器「咔」一声
S26–8 周下到 MCU(无 OS)电池供电的温湿度节点
S34–6 周网关 + 多节点协同拔掉一个节点,系统不崩
S44–6 周工程化 + 长期运行连续跑 30 天的成品

总计约 5–7 个月(每周 10–12 小时)。这是"能做出东西"的时间,不是"精通"的时间。


S0:先买板子,再谈学习(1 周)

为什么这一步不能跳

没有硬件的嵌入式学习,100% 会半途而废。

原因不是意志力,是反馈回路断了——写代码看不到灯亮,大脑不给多巴胺,两周就停。

只学四件事

  1. 电压 / 电流 / 电阻,理解欧姆定律 V = IR 就够
  2. LED 为什么要串电阻——不串会烧。这是第一个"物理世界不跟你讲道理"的教训
  3. 面包板怎么通电——哪两条是电源轨,中间为什么有缺口
  4. GPIO 是什么——一个能读电压、能输出电压的针脚,和文件系统里一个文件没本质区别

需要买什么

最小起步套件约 ¥620–1100:

  • 树莓派(Pi 4B 2GB 或 Pi 5 2GB/4GB,本课 2GB 够用)
  • 32GB microSD + 读卡器
  • 官方电源(别省这个,供电不足会各种玄学故障)
  • 面包板 + LED + 220Ω 电阻 + 杜邦线
  • 5V 单路继电器模块(低电平触发 + 光耦隔离)

⚠️ 安全红线:只用 5V/12V 低压。市电设备一律用成品智能插座替代。断电再接线。

过门标准

  • 独立烧录系统(不让别人帮你)
  • 点亮 LED,然后 SSH 登录,用命令行控制它亮灭
  • 能回答:为什么 LED 串 220Ω 不直接接 5V?换成蓝光 LED 电阻要一样吗?

S1:用 C 重写一个网关(4–6 周)

为什么是"重写"而不是"从零学 C"

因为学 C 的痛苦,只有被"灯亮了"抵消掉才扛得住。

如果你从《C Primer Plus》第一章开始看,大概率三周就放弃。但如果你的目标是"让这个继电器听我指挥",语法就变成了工具,而不是目的。

具体做法:拿一个现成的网关项目(GPIO → TCP → 并发 → 协议 → 心跳 → 告警 → 工程化 → 安全加固),把 C++ 代码全部用 C 重写一遍。

架构、协议设计、并发模型、工程化全部与语言无关,换语言成本极低。

C 必须真懂的六个点

  1. 指针与内存布局:结构体的内存对齐、sizeof 为什么不是成员之和
  2. 手动生命周期:谁分配谁释放,goto cleanup 模式的正确用法
  3. 缓冲区安全:snprintf 而不是 sprintf,为什么 strcpy 是原罪
  4. 函数指针:这是 C 里唯一的"多态",MCU 的驱动框架全靠它
  5. 位操作:|= &=~ ^= <<——下一阶段直接操作寄存器全靠这个
  6. 编译与链接:.c → .o → 可执行,static 到底藏了什么

最关键的一课:函数指针就是 C 的虚函数

/* C 里没有 class,但有"接口" */
struct sensor {
    const char *name;
    int (*read)(void *ctx, float *temp, float *humidity);  /* ← 这就是虚函数 */
    void *ctx;
};

理解了这一点,你就理解了 Linux 内核为什么全是 struct file_operations、struct net_device_ops。

C++ 把虚函数表藏起来了,C 让你手动写——但本质完全一样。

过门标准

  • gcc -std=c11 -Wall -Wextra -Werror 零警告
  • valgrind --leak-check=full 零泄漏
  • 连续跑 72 小时不崩、内存不涨
  • 能讲清"为什么这里用 poll 不用多线程"

S2:下到 MCU,最难的坎(6–8 周)

为什么这步最难

从"有 OS 帮你管内存、管调度、管文件"到"什么都没有,你就是一个无限循环"——这是思维方式的断层,不是知识量的差距。

先 ESP32 再 STM32

ESP32STM32
价格¥20–40¥15–50
上手快(WiFi 内置)慢(要装工具链、烧录器)
教学价值中(库封装太厚)高(逼你看寄存器)

先用 ESP32 两周出成果(建立信心),再用 STM32 四周补底层(真正理解)。顺序反了容易劝退。

学什么(按顺序,别跳)

  1. GPIO 寄存器操作:先会 digitalWrite,再关掉库用寄存器写一次——这一刻才懂"库是什么"
  2. 中断:为什么主循环里不能 delay
  3. 定时器:硬件定时 vs 软件延时
  4. 串口 / I²C / SPI:三种总线的区别,什么时候用哪个
  5. ADC:模拟量怎么变成数字——这是"物理世界→数字世界"的唯一入口
  6. 低功耗:为什么电池设备能跑一年(休眠模式 + 唤醒源)

过门标准

  • 电池能撑 2 周以上(这是低功耗做对了的硬指标)
  • 拔电重插能自恢复
  • 能讲清"为什么用中断不用轮询"

S3:网关 + 多节点协同(4–6 周)

这一步在学分布式系统的雏形:脑(树莓派)和末梢(MCU)怎么分工、怎么通信、出问题怎么办。

主要问题

  • MQTT 和 HTTP 有什么差别:为什么 IoT 不用 HTTP(开销、长连接、QoS)
  • 节点如何注册与发现
  • 数据格式:JSON 还是二进制
  • 网络断了怎么办:节点本地缓存?丢弃?重传?
  • 时间同步:没有 RTC 的节点怎么知道现在几点

过门标准

  • 拔掉任意一个节点,系统不崩,其他节点正常
  • 网关重启,节点 30 秒内自动重连

S4:工程化 + 长期运行(4–6 周)

这是业余作品和生产成品的分界线。

主要内容

  • 交叉编译:在 PC 上编出板子能跑的程序
  • 看门狗:硬件 vs 软件
  • OTA 升级:设备装在墙上后怎么更新代码
  • 断电恢复:文件系统只读挂载、日志防损坏
  • 可观测性:出问题了怎么远程查
  • 安全:TLS、证书管理、密钥不能放代码里

过门标准

整套系统连续跑 30 天不重启。 这是毕业标准。


三个"该停下来重想"的信号

  1. 连续 2 周没有任何能演示的东西 → 目标定太大了,切小
  2. 连续 2 周都在解决环境问题(装驱动、烧录失败)→ 硬件有问题,换板子或找人帮
  3. 开始觉得"学 C 好痛苦" → 正常。但如果持续一个月,说明缺少物理反馈,回去摸板子

从哪开始读

五个阶段,现在能读的是这两个:

阶段状态页面
S0 硬件零基础破冰✅ 已发布S0:一周把硬件点亮
S1 用 C 重写网关✅ 已发布S1:C 重写网关
S2 下到 MCU(无 OS)✅ 已发布S2:下到 MCU
S3 网关 + 多节点协同✅ 已发布S3:网关 + 多节点
S4 工程化 + 长期运行✅ 已发布S4:工程化与 30 天

先读 S0。 原因很简单:S1 要动继电器,而继电器接反会烧板子。S0 花一周把「电流、电阻、极性、断路」这几件事用手摸一遍,S1 才敢往下走。


跟本课程的衔接

你走完 28 天 Linux 课程,S0 和 S1 都能直接接上:

  • 28 天课程教会你"怎么让一台 Linux 机器听你的话"
  • S1 教会你"怎么让这台机器通过引脚去影响物理世界"
  • 两者之间没有断层——只是从"发命令"变成"发电压"

如果你想跳到其它方向,见 28 天之后往哪走。


最后更新:2026-11-02(S0–S4 全部发布)