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 知识结构总览

下面这张图,帮你理清本章的知识脉络:

烧录工具知识结构 烧录工具 J-Flash STM32CubeProg OpenOCD esptool.py 特点 • 速度快,支持加密 • 命令行完善 • 商业授权,价格高 特点 • 支持 SWD/UART/DFU • STM32 全系列 • 图形+命令行双模式 特点 • 开源免费 • 支持 ARM/RISC-V • 学习曲线陡峭 特点 • Python 生态 • 自动检测 Flash • 轻量,安装简单 选择建议 项目稳定 → J-Flash | 成本敏感 → OpenOCD | 快速原型 → esptool.py 图1:烧录工具分类与特点对比

1.5 如何选择烧录工具

这个问题没有标准答案。我一般这样判断:

  1. 看芯片平台:STM32 优先 CubeProgrammer,ESP32 优先 esptool.py,通用 ARM 用 J-Flash 或 OpenOCD。
  2. 看使用场景:开发调试用图形界面方便,产线批量烧录必须用命令行脚本。
  3. 看预算:公司项目买正版 J-Link,个人学习用 OpenOCD + 便宜调试器。
  4. 看团队习惯:如果团队都用某款工具,别特立独行——统一工具能省去很多沟通成本。

我的经验:不管你选哪个工具,先把命令行模式玩熟。图形界面点来点去,效率低不说,还容易漏步骤。后面几章,我会带你逐个攻破这些工具的命令行操作。