在嵌入式开发领域,高效可靠的固件下载工具是提升开发效率的关键。本文将详细介绍如何利用 CH347 芯片的 USB 转 JTAG/SWD 功能,结合开源项目 OpenOCD 实现对 STM32 及 FPGA 的固件下载。内容涵盖工具介绍、环境搭建、操作步骤及注意事项,为嵌入式开发者提供全面的技术参考。
核心工具解析
OpenOCD:开源调试利器
OpenOCD(Open On-Chip Debugger)是一款开源的硬件调试器,凭借其强大的兼容性和灵活性,在嵌入式开发领域得到广泛应用。它通过标准的 JTAG 接口与芯片通信,支持多种架构的微控制器和处理器(如 ARM、MIPS、Cortex-M/A/R、PowerPC、RISC-V 等)的下载和调试。开源特性也便于二次开发和功能拓展。
CH347:多功能 USB 转接芯片
CH347 是一款高性能的高速 USB 总线转接芯片,提供丰富的接口转换功能:
- 2 个高速串口,最高波特率 9Mbps
- 1 个 2 线 I2C 接口
- 1 个 4 线 SPI 接口,最高速率 60MHz
- 1 个 JTAG 接口 和 1 个 SWD 接口
CH347 芯片有 T/F 两种封装形式:
- CH347F:可多功能同时使用
- CH347T:需切换模式
开发者可根据实际需求选择合适型号。
OpenOCD 的编译方法
Windows 系统
沁恒公司已提供编译好的 release 版本,无需手动编译,直接下载即可使用。
- 下载地址:CH347_OpenOCD_Release
- 下载后解压到合适目录即可。
Linux 系统
Linux 下需手动编译,步骤如下:
-
克隆仓库
git clone https://github.com/WCHSoftGroup/ch347.git -
创建输出目录并进入源码目录
cd ch347/ mkdir output cd OpenOCD_SourceCode_CH347/ -
运行编译脚本
./bootstrap -
配置编译选项,启用 CH347 支持
./configure --enable-ch347 --prefix=YOUR_OUTPUT_PATH将
YOUR_OUTPUT_PATH替换为刚创建的output文件夹的绝对路径。配置 summary 中应包含
Mode 3 of the CH347 devices yes,表示已启用 CH347 支持。 -
编译并安装
make install -
确认执行文件
- 进入
output/bin文件夹,确认openocd执行文件是否存在。
- 进入
基于 STM32F1 的固件烧写步骤
cfg 文件准备
使用 OpenOCD 烧写固件时,需要准备两个配置文件:
-
目标板 cfg 文件
STM32F1 系列可直接使用output/share/openocd/scripts/target/stm32f1x.cfg。如为其他型号,需参考 OpenOCD 官方文档自行编写。 -
烧录器 cfg 文件
示例内容如下:# ch347.cfg # 指定CH347设备 adapter driver ch347 # 指定为jtag方式,若使用swd下载,替换为transport select swd transport select jtag # 设置TCK时钟频率 adapter speed 1000可根据实际接口(JTAG/SWD)和所需时钟频率修改。
固件烧写命令
准备好上述两个 cfg 文件后,执行烧写命令:
./openocd -f ch347.cfg -f stm32f1x.cfg -c "program led.hex" -c reset
参数说明:
-f ch347.cfg:烧录器配置文件-f stm32f1x.cfg:目标板配置文件-c "program led.hex":烧录固件(将led.hex替换为实际固件文件路径)-c reset:烧录完成后复位目标芯片
执行后,终端会显示连接状态、烧录进度等信息。烧录成功会显示 ** Programming Finished **。
FPGA 的固件烧写参考
FPGA 固件烧写可参考:CH347 应用–USB TO JTAG 进行 FPGA 调试下载。该文详细介绍了 CH347 的 USB 转 JTAG 功能结合相关工具实现 FPGA 固件下载的步骤和注意事项。
总结与注意事项
通过以上介绍,开发者可顺利掌握利用 CH347 和 OpenOCD 实现 STM32 及 FPGA 固件下载的方法。实际操作时需注意:
- 硬件连接的正确性
- 配置文件的准确性
- 命令的正确输入
如遇问题,可参考官方文档或社区资源寻求帮助。
公众号 | FunIO
微信搜一搜 “funio”,发现更多精彩内容。
个人博客 | blog.boringhex.top
CH347与OpenOCD固件下载教程
5014

被折叠的 条评论
为什么被折叠?



