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 本章知识体系

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

烧录工具概览知识体系 烧录工具概览 什么是烧录 固件 → 存储介质 Flash / EEPROM / SRAM SWD / JTAG / SPI 协议 常见烧录工具 J-Flash (SEGGER) ST-Link Utility OpenOCD / PyOCD 命令行价值 批量操作 CI/CD 集成 远程 / 无人值守 目标:掌握工具 → 理解原理 → 实现自动化

1.5 避坑指南:初学烧录最容易踩的坑

我带过不少新人,发现烧录这块有几个高频问题。提前告诉你,省得走弯路。

⚠️ 常见坑 1:驱动没装好
插上烧录器,电脑没反应。别急着换硬件,先检查驱动。J-Link 需要安装 SEGGER 驱动,ST-Link 需要 ST 官方驱动。我曾经在 Win10 上折腾了一下午,最后发现是驱动签名问题。
⚠️ 常见坑 2:烧录地址不对
固件烧进去了,但芯片跑不起来。八成是起始地址错了。STM32 的 Flash 起始地址是 0x08000000,不是 0x00000000。用命令行时一定要确认 --base-addr 参数。
⚠️ 常见坑 3:芯片读保护没解除
有些芯片出厂时开启了读保护(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 仿真软件,在虚拟模式下练习命令。工具链先跑通,心里才有底。