写给谁:会装系统、会看日志、会配网络、会写脚本,但没碰过硬件的人。 不是写给谁:电子专业学生。他们从模电数电开始,你不需要走那条路。
先说结论
你已经有 Linux 底子,这让你在嵌入式这条路上比零基础的人快很多——因为嵌入式 Linux 就是个缩小版的 Linux,只是你要开始碰引脚了。
但有个坏消息:「会 Linux」到「会控制硬件」之间,隔着一层真实世界。这层东西 AI 帮不了你:板子不亮、线接错了、电源不够、接触不良——这些只能用手摸出来。
所以这份路线不按"知识点"排,按反馈回路排:每个阶段都必须有一个你能摸到的成果。
一个关键区分:嵌入式其实是两层
很多人把"嵌入式"当成一件事,其实差得远:
A 层:嵌入式 Linux(树莓派级)
- 有操作系统、有文件系统、能跑 g++
- 你现有的 Linux 知识直接迁移
- 适合做:网关、控制器、数据采集中心
B 层:MCU 裸机(STM32 / ESP32 级)
- 没有操作系统、只有几 KB 内存、直接怼寄存器
- Linux 经验基本用不上,得从头来
- 适合做:传感器节点、执行器、电池供电设备
「让知识在物理世界干活」这件事,A 层是脑,B 层是手脚。两个都要。
五个阶段
| 阶段 | 周期 | 你做什么 | 摸到什么 |
|---|---|---|---|
| S0 | 1 周 | 硬件零基础破冰 | 板子通电,灯亮 |
| S1 | 4–6 周 | 用 C 重写一个网关 | 网页点按钮 → 继电器「咔」一声 |
| S2 | 6–8 周 | 下到 MCU(无 OS) | 电池供电的温湿度节点 |
| S3 | 4–6 周 | 网关 + 多节点协同 | 拔掉一个节点,系统不崩 |
| S4 | 4–6 周 | 工程化 + 长期运行 | 连续跑 30 天的成品 |
总计约 5–7 个月(每周 10–12 小时)。这是"能做出东西"的时间,不是"精通"的时间。
S0:先买板子,再谈学习(1 周)
为什么这一步不能跳
没有硬件的嵌入式学习,100% 会半途而废。
原因不是意志力,是反馈回路断了——写代码看不到灯亮,大脑不给多巴胺,两周就停。
只学四件事
- 电压 / 电流 / 电阻,理解欧姆定律
V = IR就够 - LED 为什么要串电阻——不串会烧。这是第一个"物理世界不跟你讲道理"的教训
- 面包板怎么通电——哪两条是电源轨,中间为什么有缺口
- 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 必须真懂的六个点
- 指针与内存布局:结构体的内存对齐、
sizeof为什么不是成员之和 - 手动生命周期:谁分配谁释放,
goto cleanup模式的正确用法 - 缓冲区安全:
snprintf而不是sprintf,为什么strcpy是原罪 - 函数指针:这是 C 里唯一的"多态",MCU 的驱动框架全靠它
- 位操作:
|=&=~^=<<——下一阶段直接操作寄存器全靠这个 - 编译与链接:
.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
| ESP32 | STM32 | |
|---|---|---|
| 价格 | ¥20–40 | ¥15–50 |
| 上手 | 快(WiFi 内置) | 慢(要装工具链、烧录器) |
| 教学价值 | 中(库封装太厚) | 高(逼你看寄存器) |
先用 ESP32 两周出成果(建立信心),再用 STM32 四周补底层(真正理解)。顺序反了容易劝退。
学什么(按顺序,别跳)
- GPIO 寄存器操作:先会
digitalWrite,再关掉库用寄存器写一次——这一刻才懂"库是什么" - 中断:为什么主循环里不能 delay
- 定时器:硬件定时 vs 软件延时
- 串口 / I²C / SPI:三种总线的区别,什么时候用哪个
- ADC:模拟量怎么变成数字——这是"物理世界→数字世界"的唯一入口
- 低功耗:为什么电池设备能跑一年(休眠模式 + 唤醒源)
过门标准
- 电池能撑 2 周以上(这是低功耗做对了的硬指标)
- 拔电重插能自恢复
- 能讲清"为什么用中断不用轮询"
S3:网关 + 多节点协同(4–6 周)
这一步在学分布式系统的雏形:脑(树莓派)和末梢(MCU)怎么分工、怎么通信、出问题怎么办。
主要问题
- MQTT 和 HTTP 有什么差别:为什么 IoT 不用 HTTP(开销、长连接、QoS)
- 节点如何注册与发现
- 数据格式:JSON 还是二进制
- 网络断了怎么办:节点本地缓存?丢弃?重传?
- 时间同步:没有 RTC 的节点怎么知道现在几点
过门标准
- 拔掉任意一个节点,系统不崩,其他节点正常
- 网关重启,节点 30 秒内自动重连
S4:工程化 + 长期运行(4–6 周)
这是业余作品和生产成品的分界线。
主要内容
- 交叉编译:在 PC 上编出板子能跑的程序
- 看门狗:硬件 vs 软件
- OTA 升级:设备装在墙上后怎么更新代码
- 断电恢复:文件系统只读挂载、日志防损坏
- 可观测性:出问题了怎么远程查
- 安全:TLS、证书管理、密钥不能放代码里
过门标准
整套系统连续跑 30 天不重启。 这是毕业标准。
三个"该停下来重想"的信号
- 连续 2 周没有任何能演示的东西 → 目标定太大了,切小
- 连续 2 周都在解决环境问题(装驱动、烧录失败)→ 硬件有问题,换板子或找人帮
- 开始觉得"学 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 全部发布)