使用GD32实现JTAG功能

📅 2026/7/15 22:29:08 👁️ 阅读次数 📝 编程学习
使用GD32实现JTAG功能

Vivado 不会直接认 “USB 虚拟串口 / 普通 HID” 的 GD32 设备,它只认两种东西:

  1. Xilinx 原厂电缆(带专用驱动与固件)
  2. 兼容 XVC(Xilinx Virtual Cable)协议的 USB 设备

你现在做的是:GD32E103 + 自己写的 JTAG 时序 → 模拟一个 JTAG 下载器。 要让 Vivado 用它,必须在 GD32 上实现XVC 服务器,电脑端用 Vivado 连 XVC,而不是让 Vivado 直接识别 GD32 USB。

一、原理:Vivado 是怎么和下载器通信的?

  • Vivado →hw_server→ USB 驱动 → 下载器固件 → JTAG (TMS/TCK/TDI/TDO) → Zynq
  • 原厂电缆:USB 走Xilinx 私有协议,驱动只认特定 VID/PID
  • 你自己的 GD32:
    • 不能冒充原厂电缆(协议 / VID/PID 都不对)
    • 可行路径:XVC over USB(虚拟串口 / USB-CDC)

XVC 本质:TCP 协议,把 JTAG 命令打包发给 “XVC 服务器”(你的 GD32),服务器转成 JTAG 时序。