☰
Keil、Vivado、Quartus 都能接:CH347 的 JTAG/SWD 工具盘点
2026/11/4 20:01:08 网站建设 项目流程

Keil 里给 MCU 下断点,Vivado 里给 FPGA 下载位流,Quartus 里用 SignalTap 看内部信号。这几套熟悉的开发工具,现在都能接入 CH347了。

一、Keil:把 CH347 放进调试器列表

CH347Link 为 Keil µVision 提供 CH347 调试驱动,支持 SWD/JTAG。

安装后,在Options for Target → Debug中选择WCH / CH347 JTAG_SWD,再设置 SWD 或 JTAG 端口。下载固件、进入调试会话,后续操作沿用 µVision 的方式。

它基于 elaphureLink 修改,把所需适配放在驱动 DLL 里,不必另外启动代理程序。Flash 下载与擦除使用 Keil 的标准算法流程,所以选好调试器之后,还要让工程里的 Flash 算法与目标芯片对应。

对于已经在 Keil 中开发的工程,这条路线的价值很直接:保留原有开发习惯,把 CH347 作为另一种调试器接进来。

文中这些工具按需选用。CH347 只有 1 路 JTAG/SWD,两种协议复用同一组引脚,不能同时作为两路独立调试通道使用。

图 1:keil中打开 CH347,设置SWD为5MHz并下载MCU程序。

图 2:keil中使用CH347对MCU进行调试。

二、Vivado:通过 XVC,接回 Hardware Manager

换到 Xilinx FPGA,CH347 走的是另一条路:xvcd-ch347。

它在电脑上提供 XVC(Xilinx Virtual Cable)服务,把 Vivado 发出的操作转成 CH347 的 JTAG 访问。启动服务后,Vivado 的 Hardware Manager 连接这个地址,再识别和操作目标 FPGA。

图 3:XVC 程序打开 CH347,Vivado 识别到 XC6SLX9。原作者演示,来源:CH347 配合 Vivado 的使用教程。

连接本机服务时,Vivado 使用open_hw_target -xvc_url 127.0.0.1:2542这样的 正式 Tcl 接口。项目也提供图形程序,可以在界面里设置服务地址、端口和 JTAG 时钟。

这样,程序仍由 Vivado 生成,下载与目标操作也留在 Hardware Manager。使用 ILA 等调试核时,还需要对应设计文件、调试核和时钟满足条件。

三、Quartus:Programmer 和 SignalTap 也有入口

用 EP4CE6、EP4CE10 这类 Cyclone IV FPGA 做开发,Quartus 同样可以接入 CH347。Quartus_IDE_CH347 采用硬件插件方式,在 Quartus 的下载器列表中加入 CH347。

部署后,器件识别、.sof下载、.jic固化,以及 SignalTap 在线调试,都沿着 Quartus 原有工具展开。

图 4:对EP4CE10 FPGA固化.jic程序最终显示固化完成。

这里要分清程序放在哪里:.sof写入 FPGA 的 SRAM,供当前上电期间运行;需要掉电保存时,再按目标配置器件的要求进行固化。安装与操作已经单独整理在 CH347 在 Quartus 中的使用说明 中。

至此,同一颗桥接芯片已经进入了 MCU 和 FPGA 两边的经典开发环境。继续往下看,这些能力也能交给脚本和其他前端使用。

四、OpenOCD 与 probe-rs:把下载、调试交给脚本

前面的几套 IDE,各有自己的接入方法。需要命令行、自动下载或可定制的调试流程时,OpenOCD 是一个通用入口。

它负责识别目标、控制运行与暂停、访问寄存器和内存,并调用 Flash 算法完成下载;同时也能向 GDB 提供调试服务。上游已有 CH347 驱动与配置文件,使用时选择包含该驱动的构建,再配上目标芯片脚本。

这也带出了更多 IDE 用法。VS Code 的 Cortex-Debug 可以连接 OpenOCD GDB Server;STM32CubeIDE 也已有 搭配 CH347 的公开配置与演示。

图 5:原作者的 STM32CubeIDE 调试演示,程序停在 main 函数断点,控制台显示 GDB 连接与目标暂停信息。来源同上。

另一个值得看的通用项目是 probe-rs。它提供命令行、库和编辑器调试入口,覆盖固件下载、运行控制、内存访问及 RTT 等工作流。用 Rust 做嵌入式开发,或者希望把下载和日志组织进开发命令,可以从这里入手。

当前上游 CH347 驱动 已有 JTAG/SWD 实现;OpenChipLab 分支 则包含 Windows 厂商接口库路线的适配。先用probe-rs list确认设备,再选择目标和协议。RTT 还需要固件中的缓冲区配合,适合把日志与下载调试放在一起使用。

五、openFPGALoader:不同厂商的 FPGA,用一套入口下载

如果手里不止一种 FPGA 板子,openFPGALoader 就有用了。它专注于 FPGA 编程,覆盖 Xilinx、Altera/Intel、Lattice、Gowin 等多个厂商的器件和开发板。

CH347 已经在上游的 下载线列表 中。选中对应 cable 后,可以先扫描目标:

openFPGALoader-cch347_jtag--detect

后续可以加载位流,或按受支持的配置流程写入非易失存储。设计依旧由相应工具链完成,下载环节则可以放进脚本,适合换板验证和重复配置。

这里的支持范围要同时看下载线、FPGA 型号和板级连接。尤其是经 JTAG 固化外部 Flash 时,可能需要匹配的桥接位流。作者早期公开案例 展示了 CH347F 对 Spartan-6 XC6SLX9 的识别及配置 Flash 写入,可以帮助理解这条流程;具体命令按当前版本核对。

六、板子还没跑起来,也可以先查 JTAG 和引脚

下载只是 JTAG 的一种用途。CH347_JTAG_Scanner 把重点放在边界扫描:扫描器件链,匹配 BSDL,再观察或控制相应的边界扫描引脚。

BSDL 描述器件的边界扫描结构,要与实际型号、封装匹配。项目提供 SAMPLE、EXTEST、BYPASS 等操作:SAMPLE 用于观察相应引脚状态,EXTEST 可控制边界扫描单元的输出,适合围绕板级连接做检查。使用 EXTEST 时,要先确认外部电路的驱动关系。

图 4:CH347扫描xilinx fpga的芯片引脚。

另一类任务是执行已经生成好的 JTAG 序列。厂商工具导出 SVF 后,可以交给 OpenOCD 的 SVF 功能,或 CH347_SVF_DNTool_py 这样的专用播放器。

图 5:SVF 工具仓库的原始运行图,显示序列执行完成。来源:项目图片,图中的耗时只对应作者这次演示。

SVF 里可以是编程操作,也可以是测试操作。拿到文件后,先确认播放器支持其中的指令、时序和校验,再放进固定流程。

七、从单步调试,再走到变量观察和图形工具

程序已经能下载、单步之后,下一步常常是持续观察几个变量。LinkScope 就面向这类任务:解析符号文件,读取和修改变量,把变化画成曲线,也能导出数据。

图 6:LinkScope 原项目运行图,图示连接为 ST-Link,展示变量观察方式。来源:项目原图。

它基于 OpenOCD,因此 CH347 可以沿相应后端探索接入;完整组合仍需按目标验证。它适合看变量趋势,采样由调试访问和软件轮询完成,不能当作测量高速引脚信号的逻辑分析仪。

想把常用操作集中到一个窗口,还可以看 CH347 多功能接口演示软件。它在 Windows 界面中组织 OpenOCD、xvcd-ch347 等工具,同时提供其他接口演示。

图 7:项目公开的主界面,左侧列出 FPGA 与 MCU 入口,设备状态显示“设备已插入”。来源:项目原图。

再往自动化方向走,embedded-debugger-mcp 提供了基于 probe-rs 的接口封装。打通 CH347 后端后,可以继续探索运行控制、内存访问、Flash 和 RTT 的自动化调用;这一完整组合本文尚未联调。

八、顺手扩展:直接操作 Flash,可以换到 SPI

如果面对的是一颗串行 Flash,还可以用 CH347 的 SPI 接口。flashrom 上游 已有ch347_spi驱动,用来探测、读取和写入支持的 Flash。

OpenChipLab 中收录的 SNANDer、AsProgrammer / UsbAsp-flash,也可继续查看串行存储器的使用范围。这里已经换到 SPI 等接口,与前面的 JTAG/SWD 分开接线和配置。

九、最后按任务选一条路

手上的任务可以先看
Keil 内下载、断点与单步CH347Link
Vivado 内连接 FPGAxvcd-ch347
Quartus 内下载和 SignalTapQuartus_IDE_CH347
MCU 命令行下载、GDB 与脚本控制OpenOCD
Rust 开发、下载与 RTTprobe-rs
多厂商 FPGA 下载openFPGALoader
边界扫描、引脚观察与板级检查CH347_JTAG_Scanner
执行现成 SVFOpenOCD SVF / 专用播放器
变量观察与曲线显示LinkScope + 相应后端
直接读写串行 Flashflashrom 等 SPI 工具

上手时,把 CH347 模式与固件、主机驱动、目标支持和接线电平对应好,再从较低时钟开始验证。JTAG/SWD 共用一路接口,换软件前让原程序释放设备;多器件 JTAG 链仍然属于同一条总线。

从经典 IDE 出发,CH347 的用法已经延伸到命令行、边界扫描和图形化观察。先把日常最常用的一条路径跑通,再按任务增加软件,这块调试板就能逐步用起来。

资料与图片来源

本文按 2026 年 11 月 2 日的公开文档与源码整理;运行截图来自原作者或项目公开素材,文中逐图标注来源,本次未新增硬件实测。LeoZY_ 博客演示图按原文标示的 CC BY-SA 4.0 保留署名与出处。

  1. CH347 产品资料、WCH 官方项目。
  2. CH347Link、xvcd-ch347、Quartus_IDE_CH347。
  3. OpenOCD CH347 说明、Cortex-Debug、STM32CubeIDE 配套分支。
  4. probe-rs、CH347 SWD 支持合并记录、Windows 厂商接口适配分支。
  5. openFPGALoader、下载线兼容表、构建选项。
  6. OpenChipLab 仓库列表。边界扫描、SVF、LinkScope、多接口演示及存储器工具见正文各节链接;部分项目为 fork,版本和许可证分别以对应项目为准。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询