CH347应用 USB转JTAG功能之:probe-rs搭配CH347下载MCU命令全指南(附GD32系列MCU烧录方法)
目录
前言
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 系统使用。
改造版项目地址:
本文测试硬件为CH347F + STM32F103C8T6
前置使用条件
-
已安装CH347 官方厂商驱动(驱动下载地址:https://www.wch.cn/downloads/CH341PAR_EXE.html)
-
无需自行编译源码,可直接前往项目发布页下载可执行文件使用:https://github.com/ZhiyuanYuanNJ/probe-rs/releases;
-
如需自定义编译,自行
cargo build编译。 -
CH347调试器与目标MCU 硬件 JTAG连接正常。
一、固件烧录命令
支持 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 安装包:
- ARM 通用 MCU(STM32、Nuvoton、Infineon 等):https://www.keil.arm.com/devices/
或
- GD 兆易创新全系 MCU:https://www.gd32mcu.com/cn/download
示例:下载 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
更多推荐
所有评论(0)