1. 烧录工具概述
大家好,我是你们这门课的老朋友。咱们今天聊聊烧录工具。说白了,烧录就是把编译好的固件(那个 .hex 或 .bin 文件)写进芯片的 Flash 里。没有这一步,你代码写得再漂亮,芯片也只是一块沉默的石头。
我刚开始做嵌入式那会儿,用的还是并口烧录器,一根线接错就能闻到焦味。现在工具丰富多了,但核心逻辑没变——把二进制数据可靠地写入目标存储器。
1.1 烧录工具在嵌入式开发中的角色
你想想看,整个嵌入式开发流程里,烧录处在什么位置?
- 开发阶段:每次修改代码,都要烧录验证。烧录快不快、稳不稳,直接影响你的调试心情。
- 产线阶段:成千上万块板子等着烧录。这时候工具能不能批量操作、能不能校验,就是成本问题。
- 现场升级:产品已经交付了,发现 bug 要远程更新。烧录工具得支持 Bootloader 或 OTA 方式。
一句话总结:烧录工具是连接开发环境与硬件实物的桥梁。桥断了,代码就永远停留在电脑里。
我在项目中遇到过最头疼的事:产线反馈烧录成功率只有 95%。查了两天,发现是烧录器驱动时序和芯片复位时序没对齐。嗯,这种坑,后面章节我会细讲。
1.2 常见烧录工具对比
市面上的烧录工具五花八门,但真正常用的也就那么几款。我按自己的使用经验,给你列个表:
| 工具名称 | 适用平台 | 接口类型 | 命令行支持 | 批量烧录 | 我的评价 |
|---|---|---|---|---|---|
| J-Flash | ARM Cortex-M/R/A | JTAG/SWD | ✅ 完善 | ✅ 支持 | 稳定,但贵。适合正式项目 |
| STM32CubeProgrammer | STM32 全系列 | SWD/UART/DFU | ✅ 完善 | ✅ 支持 | ST 官方,功能全,但启动慢 |
| OpenOCD | ARM/RISC-V/其它 | JTAG/SWD | ✅ 命令行为主 | ⚠️ 需脚本 | 开源免费,灵活,但学习曲线陡 |
| esptool.py | ESP8266/ESP32 | UART/JTAG | ✅ 命令行为主 | ✅ 支持 | 乐鑫官方,轻量,Python 生态 |
个人建议:如果你刚入门,先用 STM32CubeProgrammer 或 esptool.py 练手。它们有图形界面,容易理解烧录流程。等熟悉了,再切换到 OpenOCD 玩命令行——那才是真正掌控一切的感觉。
1.3 各工具核心特点
J-Flash
SEGGER 家的王牌产品。我最早用 J-Link 调试器时,顺手就用 J-Flash 烧录。它的优势在于:
- 速度极快,尤其对大容量 Flash
- 支持加密烧录,产线必备
- 命令行参数设计得很合理,脚本化友好
但有个缺点——贵。一个正版 J-Link 授权不便宜。不过话说回来,项目稳定比省钱重要,你说是吧?
STM32CubeProgrammer
ST 官方出品,支持 STM32 全系列。我记得有一次用 ST-Link 烧录 STM32H743,2MB 固件,CubeProgrammer 只用了 12 秒。它支持三种模式:
- SWD:标准调试接口,速度最快
- UART:只需要 TX/RX 两根线,适合没有 SWD 接口的板子
- DFU:USB 直接升级,适合量产后的现场维护
注意:用 UART 烧录时,波特率别设太高。我曾经设了 921600,结果产线 10 块板子有 3 块烧到一半卡死。降到 115200 后,问题消失。稳定比速度重要。
OpenOCD
开源界的瑞士军刀。它本身不是一个烧录工具,而是一个调试桥接器。通过配置文件,你可以对接各种调试器(ST-Link、J-Link、FTDI 等)。
我为什么推荐你学 OpenOCD?因为:
- 免费,不受授权限制
- 支持 RISC-V,未来趋势
- 可以深度定制烧录流程,比如烧录前擦除特定扇区
但它的命令行参数确实有点反人类。别怕,后面我会专门用一章带你踩坑。
esptool.py
如果你玩 ESP32,这个工具你绕不开。纯 Python 实现,安装简单:
pip install esptool
烧录一条命令搞定:
esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash 0x1000 firmware.bin
它最让我喜欢的一点是:烧录前自动检测 Flash 大小和模式。不像某些工具,烧录失败才告诉你 Flash 型号不匹配。
1.4 知识结构总览
下面这张图,帮你理清本章的知识脉络:
1.5 如何选择烧录工具
这个问题没有标准答案。我一般这样判断:
- 看芯片平台:STM32 优先 CubeProgrammer,ESP32 优先 esptool.py,通用 ARM 用 J-Flash 或 OpenOCD。
- 看使用场景:开发调试用图形界面方便,产线批量烧录必须用命令行脚本。
- 看预算:公司项目买正版 J-Link,个人学习用 OpenOCD + 便宜调试器。
- 看团队习惯:如果团队都用某款工具,别特立独行——统一工具能省去很多沟通成本。
我的经验:不管你选哪个工具,先把命令行模式玩熟。图形界面点来点去,效率低不说,还容易漏步骤。后面几章,我会带你逐个攻破这些工具的命令行操作。