在嵌入式开发领域,高效可靠的固件下载工具是提升开发效率的关键。本文将详细介绍如何利用 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 版本,无需手动编译,直接下载即可使用。

Linux 系统

Linux 下需手动编译,步骤如下:

  1. 克隆仓库

    git clone https://github.com/WCHSoftGroup/ch347.git
    
  2. 创建输出目录并进入源码目录

    cd ch347/
    mkdir output
    cd OpenOCD_SourceCode_CH347/
    
  3. 运行编译脚本

    ./bootstrap
    
  4. 配置编译选项,启用 CH347 支持

    ./configure --enable-ch347 --prefix=YOUR_OUTPUT_PATH
    

    YOUR_OUTPUT_PATH 替换为刚创建的 output 文件夹的绝对路径。

    配置 summary 中应包含 Mode 3 of the CH347 devices yes,表示已启用 CH347 支持。

  5. 编译并安装

    make install
    
  6. 确认执行文件

    • 进入 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

Logo

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

更多推荐