4. 烧录软件实战:STC-ISP、FlyMcu、STM32CubeProgrammer、命令行烧录
烧录软件,说白了就是芯片和电脑之间的翻译官。你写好的固件是二进制文件,芯片只认时序波形,中间全靠这些工具来搭桥。我这些年用过的烧录软件少说也有十几款,但真正天天打交道的,其实就下面这四类。
咱们一个一个来过。我会把每个工具的脾气、用法、还有我踩过的坑都讲清楚。
4.1 STC-ISP:国产单片机的烧录老大哥
STC-ISP 这工具,做 51 单片机的朋友肯定不陌生。它最大的特点是什么?不需要外部编程器。一根 USB 转串口线,就能把程序灌进去。
为什么会这样?因为 STC 的芯片内部固化了 ISP 引导程序。上电时检测串口有没有合法的下载命令,有就进烧录模式,没有就跳转到用户程序。这个设计,说实话,当年帮很多学生省了买编程器的钱。
核心操作流程:
- 选择芯片型号(比如 STC89C52RC)
- 选择串口号和波特率(我一般用 115200,稳定)
- 打开要烧录的 .hex 文件
- 点击「下载/编程」按钮
- 关键一步:给目标板重新上电(冷启动)
我曾经踩过的坑:有一次批量烧录 200 片 STC15W408AS,前 50 片都好好的,第 51 片开始频繁失败。查了半天,发现是 USB 转串口线太长,信号衰减了。换成 30cm 的短线,问题解决。所以,烧录线越短越好,别超过 50cm。
STC-ISP 还有个隐藏功能——脱机烧录。把固件先下载到专用的脱机下载器里,然后拿着下载器去现场烧录,不用带电脑。这个在产线上特别实用。
4.2 FlyMcu:STM32 的 ISP 好帮手
FlyMcu 是专门给 STM32 做串口 ISP 烧录的工具。它利用的是 STM32 系统存储器里的 Bootloader。你想想看,STM32 出厂时内部就有一段固件,专门处理串口烧录。我们只需要把 BOOT0 拉高、BOOT1 拉低,复位后芯片就会进入这个 Bootloader。
FlyMcu 的界面比 STC-ISP 简洁很多。我个人习惯这样操作:
- 设置 BOOT0=1, BOOT1=0,然后复位芯片
- 打开 FlyMcu,选择串口和波特率
- 加载 .hex 或 .bin 文件
- 点击「开始编程」
- 烧录完成后,把 BOOT0 跳回 0,再次复位
小技巧:FlyMcu 支持「编程后执行」选项。勾上它,烧录完自动跳转到用户程序,省去手动复位那一步。我在调试阶段一直开着这个功能,效率高很多。
不过 FlyMcu 有个局限——只支持串口 ISP。如果你要用 SWD 或者 DFU 模式,就得换别的工具了。
4.3 STM32CubeProgrammer:ST 官方全家桶
STM32CubeProgrammer(简称 STM32CubProg)是 ST 官方出的烧录工具。它支持什么?串口、USB DFU、SWD、I2C、SPI,几乎覆盖了所有烧录方式。
我为什么推荐它?因为它的图形化界面很直观。左边是连接方式选择,中间是存储器映射图,右边是操作按钮。你一眼就能看到 Flash 里哪些区域被占用了,哪些是空的。
用串口烧录时,步骤是这样的:
- 选择「UART」连接方式
- 配置串口号、波特率(建议 115200 或 460800)
- 设置 BOOT0=1,复位芯片
- 点击「Connect」建立连接
- 在「Download」页面选择固件文件
- 设置起始地址(一般从 0x08000000 开始)
- 点击「Download」开始烧录
对比一下三种工具的串口烧录特点:
| 工具 | 适用芯片 | 最大波特率 | 是否需要冷启动 | 脱机烧录 |
|---|---|---|---|---|
| STC-ISP | STC 51 系列 | 115200 | 是(必须断电) | 支持 |
| FlyMcu | STM32 全系列 | 921600 | 否(复位即可) | 不支持 |
| STM32CubeProg | STM32 全系列 | 921600 | 否(复位即可) | 不支持 |
4.4 命令行烧录:自动化部署的利器
图形界面用起来方便,但到了产线或者 CI/CD 流水线里,就得靠命令行。我参与过一个项目,每天要烧录 500 片芯片,用鼠标点来点去?那手指头都得废了。
STM32CubeProgrammer 提供了 CLI 模式。举个例子:
# 连接芯片并烧录
STM32_Programmer_CLI -c port=COM3 -d firmware.bin 0x08000000
# 烧录完成后断开连接
STM32_Programmer_CLI -c port=COM3 -rst
这条命令干了三件事:连接 COM3、把 firmware.bin 烧录到 0x08000000 地址、复位芯片。整个过程不到 5 秒。
STC-ISP 也有命令行模式,不过需要配合它的专用工具链。我个人觉得 STM32 的命令行生态更成熟一些。
自动化脚本示例(批处理):
@echo off
set COM_PORT=COM3
set FIRMWARE=app.bin
echo 正在烧录 %FIRMWARE% 到 %COM_PORT% ...
STM32_Programmer_CLI -c port=%COM_PORT% -d %FIRMWARE% 0x08000000
if %errorlevel% equ 0 (
echo 烧录成功!
) else (
echo 烧录失败,请检查连接。
)
你想想看,把这个脚本放到 Jenkins 或者 GitLab CI 里,每次代码合并后自动编译、自动烧录到测试板。这才是工程化的玩法。
4.5 知识体系总览
下面这张图,把本章涉及的烧录工具和它们的关系梳理了一下。你看一眼就能明白,不同场景该选哪个工具。
4.6 实战中的选择建议
说了这么多,到底该用哪个?我个人的经验是这样的:
- 做 STC 项目:没得选,STC-ISP 是唯一解。记得用冷启动方式,别想着偷懒。
- 做 STM32 项目,调试阶段:用 STM32CubeProgrammer 的图形界面,方便查看 Flash 布局。
- 做 STM32 项目,小批量生产:FlyMcu 够用,轻量、快速。
- 做 STM32 项目,大批量或自动化:必须上命令行。写个脚本,一劳永逸。
最后提醒一句:不管用哪个工具,烧录前一定要确认波特率匹配和串口号正确。我见过太多人折腾半天,最后发现是插错了 USB 口。嗯,我自己也干过这种事。