1. 烧录工具概览:什么是烧录、常见烧录工具与命令行价值
1.1 烧录到底是什么?
说白了,烧录就是把编译好的固件(二进制文件)写入芯片的存储介质里。你写好的代码,经过编译链接,最终变成一堆 0 和 1。烧录就是把这些 0 和 1 塞进 Flash、EEPROM 或者内部 SRAM 里。
我刚开始做嵌入式那会儿,觉得烧录就是点一下 IDE 里的“下载”按钮。后来发现,事情没那么简单。烧录涉及通信协议(SWD、JTAG、SPI)、芯片状态(加密、读保护、选项字节)、以及各种时序约束。有一次我在产线上调试,一批芯片死活烧不进去,折腾了半天才发现是烧录器接触不良——嗯,从那以后我每次都会先检查物理连接。
核心概念: 烧录 = 固件数据 → 通信协议 → 存储介质。缺一个环节都跑不起来。
1.2 常见烧录工具,你用过几个?
市面上烧录工具不少,但真正在工程中常用的,其实就那几款。我按使用场景给你列一下:
| 工具名称 | 适用芯片 | 主要接口 | 是否支持命令行 | 我的评价 |
|---|---|---|---|---|
| J-Flash (SEGGER) | ARM Cortex-M/R/A 系列 | SWD, JTAG | ✅ 支持 (JLinkExe / JFlashCmd) | 稳定,产线首选 |
| ST-Link Utility (ST) | STM32 全系列 | SWD | ✅ 支持 (STM32_Programmer_CLI) | 官方工具,兼容性好 |
| OpenOCD (开源) | ARM, RISC-V, FPGA 等 | JTAG, SWD, SPI | ✅ 纯命令行 | 灵活,但配置复杂 |
| PyOCD (Python) | ARM Cortex-M | SWD, JTAG | ✅ 纯命令行 | 适合脚本集成 |
我个人习惯是:研发调试用 IDE 自带烧录,产线批量烧录用 J-Flash 命令行,自动化测试用 OpenOCD 或 PyOCD。每个工具都有自己的脾气,摸透了就好用。
1.3 命令行烧录的价值,为什么我要单独讲?
你想想看,如果每次烧录都要打开 IDE,点鼠标,选文件,点下载……那产线上一千块板子怎么办?一个人一天能烧几块?
命令行烧录的核心价值就三个字:自动化。
- 批量操作:一条命令烧一片,配合脚本循环执行。
- 集成 CI/CD:代码提交后自动编译、自动烧录、自动测试。
- 远程烧录:SSH 连到工控机,远程执行烧录命令,人不用到现场。
我曾经在产线上遇到过一个问题:某批次芯片的 Flash 地址偏移了 4KB,如果用 IDE 烧录,得手动改配置。但用命令行,一行 --offset 0x1000 就解决了。这就是命令行的威力——可脚本化、可参数化、可重复。
我的建议: 哪怕你平时用 IDE 开发,也花半小时把命令行烧录跑通。关键时刻能救命。
1.4 本章知识体系
下面这张图,帮你理清本章的核心脉络:
1.5 避坑指南:初学烧录最容易踩的坑
我带过不少新人,发现烧录这块有几个高频问题。提前告诉你,省得走弯路。
⚠️ 常见坑 1:驱动没装好
插上烧录器,电脑没反应。别急着换硬件,先检查驱动。J-Link 需要安装 SEGGER 驱动,ST-Link 需要 ST 官方驱动。我曾经在 Win10 上折腾了一下午,最后发现是驱动签名问题。
插上烧录器,电脑没反应。别急着换硬件,先检查驱动。J-Link 需要安装 SEGGER 驱动,ST-Link 需要 ST 官方驱动。我曾经在 Win10 上折腾了一下午,最后发现是驱动签名问题。
⚠️ 常见坑 2:烧录地址不对
固件烧进去了,但芯片跑不起来。八成是起始地址错了。STM32 的 Flash 起始地址是 0x08000000,不是 0x00000000。用命令行时一定要确认
固件烧进去了,但芯片跑不起来。八成是起始地址错了。STM32 的 Flash 起始地址是 0x08000000,不是 0x00000000。用命令行时一定要确认
--base-addr 参数。
⚠️ 常见坑 3:芯片读保护没解除
有些芯片出厂时开启了读保护(RDP)。直接烧录会报错。需要先用命令行解除保护,比如 STM32 的
有些芯片出厂时开启了读保护(RDP)。直接烧录会报错。需要先用命令行解除保护,比如 STM32 的
--option-byte RDP=0xAA。我遇到过产线上批量芯片被锁死的情况,就是因为忘了这步。
1.6 一个小练习:用命令行感受一下
光说不练假把式。这里给你一个最简单的命令行烧录示例(以 J-Flash 为例):
# 1. 启动 JLinkExe 命令行
JLinkExe
# 2. 连接芯片(假设是 STM32F407)
device STM32F407VG
interface SWD
speed 4000
connect
# 3. 加载固件并烧录
loadbin firmware.bin 0x08000000
verifybin firmware.bin 0x08000000
r
g
exit
这几行命令,就是烧录的全部流程。后面几章我会带你逐条拆解,讲清楚每个参数的含义。
小提示: 如果你手边没有开发板,可以先装个 J-Link 仿真软件,在虚拟模式下练习命令。工具链先跑通,心里才有底。