posts/embedded-learning-roadmap.md
嵌入式学习路线指南:从零基础到项目实战
嵌入式学习路线指南:从零基础到项目实战
嵌入式开发门槛并不高,难的是信息太杂、路线不清晰。这篇文章基于我自己的学习经历,梳理一条从零到实战的路线。
#一、第一阶段:打好编程基础
#1.1 C 语言(2~3 个月)
嵌入式开发 90% 的代码是 C 语言,以下知识点必须扎实:
- 指针与指针运算(嵌入式调试的灵魂)
- 结构体、联合体、位运算
- 函数指针与回调
- 内存管理(栈、堆、静态区)
c#include <stdio.h>
int main(void) {
int value = 0x12345678;
unsigned char *p = (unsigned char *)&value;
for (int i = 0; i < 4; i++) {
printf("byte[%d] = 0x%02x\n", i, p[i]);
}
return 0;
}
用上面这个小程序理解大小端,比背概念管用得多。
#二、第二阶段:单片机入门(2~3 个月)
推荐 51 单片机 或直接上 STM32:
- 点亮 LED,跑通编译、烧录、调试全流程
- GPIO、串口、定时器、中断、I2C/SPI
- 用 OLED 屏做一个小仪表
一个不错的第一个项目:串口接收指令 + 控制 LED + 上报温度,麻雀虽小五脏俱全。
#三、第三阶段:RTOS(1~2 个月)
裸机项目做到一定规模,就该接触实时操作系统了,首选 FreeRTOS:
| 概念 | 一句话理解 |
|---|---|
| 任务 | 每个 while 循环就是一个任务 |
| 信号量 | 任务间的"排队叫号" |
| 消息队列 | 任务间传数据的管道 |
| 互斥锁 | 保护共享资源的门禁 |
记住一个原则:能用消息队列就别共享全局变量,能减少 80% 的难查 Bug。
#四、第四阶段:嵌入式 Linux(2~4 个月)
嵌入式 Linux 是从单片机到高端设备的必经之路:
- 交叉编译工具链的安装与使用
- U-Boot 编译与启动流程
- 内核裁剪与设备树
- 根文件系统构建(Buildroot / Yocto)
- 驱动开发入门:字符设备驱动 Hello World
#五、第五阶段:项目实战
学习路线的终点是项目。建议做这几个方向的项目:
- 智能家居:STM32 + WiFi 模块 + 云平台
- 手持仪器:传感器 + OLED + 按键交互
- 物联网网关:ESP32 + MQTT + 数据上报
#六、推荐学习资源
- 正点原子 / 野火:STM32 入门视频与例程
- 《FreeRTOS 内核实现与应用开发实战指南》
- 韦东山:嵌入式 Linux 视频教程
#七、写在最后
嵌入式是一个重实践的领域,看 100 个小时视频不如自己焊一块板子、跑通一个中断。保持"遇到问题先读手册、再查资料、最后问人"的习惯,你一定能走通这条路。