前言

probe-rs 是一款基于 Rust 开发的跨平台开源嵌入式烧录/调试工具,替代传统 OpenOCD,支持 ARM、RISC-V 主流 MCU,兼容 J-Link、CH347、ST-Link、FTDI、DAPLink 等调试器,具备烧录、擦除、校验、在线调试、RTT 日志等功能,是嵌入式开发常用工具。

probe-rs 项目地址https://github.com/probe-rs/probe-rs

CH347是一款高速USB总线转接芯片,提供 USB 转异步串口、I2C 同步串行接口、SPI 同步串行接口以及 JTAG/SWD 接口,配套生态丰富,OpenOCD 等调试烧录软件均已适配 CH347,是嵌入式 MCU 或 FPGA 开发常用的调试器。具体信息可参考:CH347-高速USB转串口、JTAG/SWD、SPI、I2C芯片介绍

官方原版 probe-rs 在Windows端仅支持WinUSB 驱动,对于一些CH347厂商驱动的
使用者来说不太方便。
本指南使用的第三方改造后的 probe-rs 开源项目,专门针对 Windows 平台做了CH347厂商驱动适配,安装完厂商驱动后可直接在 Windows 系统使用。

改造版项目地址:

https://github.com/ZhiyuanYuanNJ/probe-rs

本文测试硬件为CH347F + STM32F103C8T6

前置使用条件

一、固件烧录命令

支持 HEX、BIN、ELF 三种常用固件格式,包含基础烧录、校验、擦除、预检测等全场景操作。

1.1 基础烧录(HEX 文件)

最基础的固件烧录指令,仅完成固件写入,无校验步骤,适合快速测试。

probe-rs.exe download --chip STM32F103C8 --binary-format hex firmware.hex

1.2 烧录 + 后置校验(防写入错误)

烧录完成后自动回读固件数据对比校验,避免写入异常、数据丢失问题,提升烧录可靠性。

probe-rs.exe download --chip STM32F103C8 --binary-format hex --verify firmware.hex

1.3 烧录+校验+自动复位(高频使用)

烧录校验完成后,自动复位 MCU,固件直接生效,无需手动断电复位,适配日常调试、量产测试场景。

probe-rs.exe download --chip STM32F103C8 --binary-format hex --verify firmware.hex && probe-rs.exe reset --chip STM32F103C8

1.4 整片擦除后烧录

烧录前自动擦除 MCU 整片闪存,彻底清除旧固件、残留数据,解决新旧固件冲突、碎片数据导致的运行异常问题。

probe-rs.exe download --chip STM32F103C8 --binary-format hex --chip-erase firmware.hex

1.5 预检测烧录(重复固件跳过)

烧录前对比 MCU 现有固件与待烧录固件,内容一致则跳过烧录,节省重复烧录时间,适合批量调试场景。

probe-rs.exe download --chip STM32F103C8 --binary-format hex --preverify firmware.hex

1.6 BIN文件烧录(需指定基地址)

BIN 格式固件无内置地址信息,必须通过 --base-address 指定 MCU 闪存起始地址,STM32F1 系列默认起始地址为 0x08000000

probe-rs.exe download --chip STM32F103C8 --binary-format bin --base-address 0x08000000 firmware.bin

二、芯片复位命令

单独触发目标 MCU硬件复位,可用于烧录后手动复位、程序卡死重启等场景。

2.1 复位目标 MCU 芯片

probe-rs.exe reset --chip STM32F103C8

三、闪存擦除命令

单独执行 MCU 闪存擦除操作,可清空整片闪存数据,适配需要彻底清除固件的场景。

3.1 整片闪存擦除

probe-rs.exe erase --chip STM32F103C8

四、固件校验命令

不执行烧录操作,仅回读 MCU 内部固件与本地固件文件对比,验证现有固件完整性,排查固件损坏、写入异常问题。

4.1 独立回读校验

probe-rs.exe verify --chip STM32F103C8 --binary-format hex firmware.hex

五、设备与芯片信息查询

用于排查设备连接异常、确认芯片型号、核对调试器状态,是调试排错的常用指令。

5.1 列出所有已连接调试器

查看电脑当前识别到的所有 probe 调试设备,多探针场景可用于确认CH347 设备是否正常识别。

probe-rs.exe list

5.2 查看探针与目标芯片详细信息

获取 CH347 探针状态、MCU 芯片型号、闪存容量、硬件版本等详细参数。

probe-rs.exe info --chip STM32F103C8

5.3 查询支持的芯片型号列表

# 查看 probe-rs 支持的全部芯片型号
probe-rs.exe chip list

# 筛选查看 STM32F1 系列芯片
probe-rs.exe chip list | findstr "STM32F1"

# 精准筛选 STM32F103 系列芯片
probe-rs.exe chip list | findstr "STM32F103"

六、固件烧录后直接运行(仅ELF格式)

仅支持 ELF 格式 固件,烧录完成后自动复位并运行程序,无需额外执行复位指令,HEX、BIN 格式固件不支持该命令。适合开发调试阶段快速验证程序运行效果。

probe-rs.exe run --chip STM32F103C8 firmware.elf

七、常用可选参数对照表

通用可选参数,可搭配上述所有命令使用,适配不同硬件场景与调试需求。

在这里插入图片描述

八、高级使用技巧

8.1、自定义 PACK 芯片 HEX 烧录(适配小众/新增 MCU)

若 probe-rs 内置芯片库无对应 MCU 型号,可通过官方 CMSIS-PACK 芯片包或对应 MCU 的官网生成自定义芯片描述文件

为什么需要PACK烧录?

probe-rs 内置芯片库覆盖了常见 ARM、RISC-V 系列 MCU,但面对小众国产 MCU、品牌新发布型号或特定定制芯片时,probe-rs chip list 中可能找不到对应型号。

当目标 MCU 不在内置支持列表时,直接使用 --chip 指定型号会报错无法烧录。此时,借助芯片厂商官方发布的 CMSIS-PACK 固件包.pack 文件)即可解决——PACK 包内已包含完整的芯片参数和烧录算法,通过 probe-rs 的 target-gen 工具可将其转换为 probe-rs 能识别的 YAML 配置文件,从而实现"无内置支持也能烧录"。

常见范围如:
1、国产 MCU(如 GD32、AT32、MM32、HC32 等系列);
2、国际品牌(STM32、NXP、Infineon 等)的较新型号或小众子系列;
3、特定行业定制的 ARM/RISC-V 芯片,未进入 probe-rs 主线支持列表。

步骤1:下载对应MCU 的 CMSIS-PACK 固件包(以 GD32 为例)

根据目标 MCU 型号,前往官方平台下载对应 GD32 对应 PACK 安装包:

示例:下载 GD32F10x 系列芯片包 GigaDevice.GD32F10x_DFP.2.0.3.pack,存放至 probe-rs 工具同级目录。

步骤2:通过target-gen生成芯片YAML描述文件

probe-rs 内置 target-gen 工具,可解析 PACK 包生成专属芯片配置文件(包含内存布局、烧录算法、调试参数),执行以下 PowerShell 命令:

# 格式:target-gen pack [PACK文件路径] [YAML输出目录]
.\target-gen pack .\GigaDevice.GD32F10x_DFP.2.0.3.pack .\GD32F10x.yaml

执行成功后,目录中会生成 GD32F10x.yaml 芯片描述文件,作为自定义芯片适配依据。

步骤3:加载自定义YAML文件烧录HEX 固件

通过 --chip-description-path 指定自定义芯片配置,同时可自主配置调试协议、通信速率、烧录校验等参数,完整烧录命令如下:

.\probe-rs.exe download --chip GD32F107RB --chip-description-path .\GD32F10x.yaml --binary-format hex --protocol swd --speed 5000 --verify led.hex
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐