用 CH347 工具刷写固件
用 CH347FpgaDownloadTool 把 .bin 镜像写入 75T 或 100T 板卡:文件夹怎么放、FPGA 型号怎么选、线插哪个口,以及刷完之后怎么验证。
简短回答
把 .bin 文件放进 CH347FPGATool 文件夹。USB 线插在板卡的 JTAG 口上,运行 CH347FpgaDownloadTool.exe。按板卡选择 xc7a75t 或 xc7a100t,编程前把文件格式设为 BIN。刷写成功后,给游戏主机断电再开机,把线换到数据口,然后跑一次连接测试。
刷写到底写了什么
板卡上的 CH347 是一颗 WCH 的 USB 桥接芯片,通过 USB 引出一个 JTAG 接口。刷写工具借助这条 JTAG 通路,把固件镜像写进 FPGA 旁边的 SPI Flash 芯片。FPGA 本身不会被写入任何断电后还能保留的内容——每次上电,FPGA 都会读取 Flash,按里面的内容完成自身配置。整个机制就这么简单,这也是为什么镜像出问题时,结果是板卡识别不出来,而不是板卡报废。
路径、工具和文件名
下面给的是准确写法,因为这一步打错一个字就能耗掉一晚上。请使用随订单下发的文件或 Downloads 资源里的版本,不要随便找个镜像站下载。
C:\CH347FPGATool\
C:\CH347FPGATool\CH347FpgaDownloadTool.exe
C:\CH347FPGATool\your-order-image.bin
FPGA part selector: xc7a75t (75T boards)
FPGA part selector: xc7a100t (100T boards)
File format selector: BIN (not BIT)打开工具之前
一共六项。每一项都对应一张本来不必提交的工单。
- 确认你的板卡是 75T 还是 100T——看 FPGA 芯片上的丝印,别信商品页的描述
- 准备刷入的镜像是针对这块板卡和这个 DNA ID 编译的
- 副机(第二台电脑)上已安装 CH347 或 WCH 驱动
- USB 线是支持数据传输的线,一头插板卡的 JTAG 口,另一头插主板后置 USB 口
- 板卡已通电——对大多数板卡来说,就是插在游戏主机上并且游戏主机处于开机状态
- 副机上没有其他程序占用这个 USB 设备:读取端软件和 MemProcFS 都已关闭
刷写步骤(按顺序)
不要自己调换顺序。选文件之前,FPGA 型号和文件格式都必须先选对,因为有些版本的工具只要你改动其中任何一项,就会把文件路径清空。
- 把 CH347FPGATool 文件夹复制到路径较短的位置,再把你的 .bin 镜像放进去
- 把 USB 线换到板卡的 JTAG 口,另一头插在副机的后置 USB 口上
- 运行 CH347FpgaDownloadTool.exe——如果工具提示无法打开设备,就以管理员身份运行
- 在 FPGA 一栏选择与芯片一致的型号:xc7a75t 或 xc7a100t
- 把文件格式选项从 BIT 改成 BIN
- 点击文件按钮,选中你的 .bin 镜像
- 开始编程,然后别碰电脑——需要等上几分钟
- 等工具自己报告成功之后,再动任何东西
警告
选错 FPGA 型号
型号选项是在告诉工具,它应该在 JTAG 链上找到哪种器件。在 75T 芯片上选了 100T,通常会因为 JTAG IDCODE 对不上而打不开 JTAG 链,工具也会拒绝编程。但别把这当成保险。型号一旦选错,就默认要走救砖流程;选择任何选项之前,先确认板上的 FPGA 丝印,如果看不清,就去问客服,不要在两个选项之间瞎猜。
警告
刷写过程中不要中断
工具写入期间,Flash 芯片里既不是旧镜像,也不是新镜像。这时候拔线、让副机进入睡眠,或者切断游戏主机电源,是整篇教程里唯一一个几乎必然导致板卡无法被识别的操作。如果副机很容易自动睡眠,先把睡眠关掉。
刷写成功是什么样子
这里以工具的输出为准,而不是板卡上的 LED。DMA 板卡上的 LED 通常只是电源和活动指示灯,Flash 里的镜像即使已经损坏,它们照样会亮。
- 耗时
- 完整镜像需要几分钟。几秒钟就结束的刷写,其实什么都没写进去
- 工具输出
- 有明确的完成或成功提示,并且上方没有任何报错行
- 进度
- 进度条走到了底,而不是卡在中途
- 不能作为依据
- 板卡上的 LED。它们只说明已通电,不说明已完成配置
- 下一步
- 让游戏主机完全关机,而不是重启。插槽必须断电
刷完之后的验证
只有板卡重新作为 PCIe 设备出现,并且读取端能和它通信,刷写才算验证通过。一共六步,按顺序做。
- 让游戏主机完全关机,等十秒,再重新开机
- 把 USB 线从板卡的 JTAG 口换到 DATA 口
- 在副机的设备管理器里确认 FTDI 数据设备已经出现,并且没有黄色警告三角
- 运行订单附带的连接测试,确认能连上板卡
- 读取 DNA ID,核对它与编译镜像时使用的 ID 一致
- 确认无误之后,再启动任何真正读取内存的程序
刷写失败怎么办
从上往下逐行排查。每一行的解决办法都比下一行成本低,所以别一上来就认定板卡坏了。
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 工具打不开设备,或者根本列不出任何设备 | 线插在了数据口、没装 CH347 驱动,或者有其他进程占用了设备 | 把线换到 JTAG 口,安装 CH347 或 WCH 驱动,关闭读取端软件和 MemProcFS,然后以管理员身份运行工具 |
| JTAG 链能打开,但器件型号对不上 | 75T 板卡上选了 xc7a100t,或者反过来 | 查看板上的 FPGA 丝印,选择对应的型号。在 JTAG 链报出预期的器件之前,不要开始编程 |
| 编程开始后中途报错 | USB 连接不稳定、中间经过了集线器或机箱前置接口,或者副机在写入过程中睡眠了 | 直接插主板后置 USB 口,换一根短的数据线,关闭睡眠,然后从头重新刷写 |
| 工具报告成功,但板卡仍然识别不到 | 镜像是给另一块板卡或另一个 DNA ID 编译的,或者游戏主机只是重启、没有断电 | 先让游戏主机完全断电,再冷启动。如果还是不出现,先对照订单核对镜像文件名,再重新刷写 |
| 板卡能识别,但读取端连不上 | 线还插在 JTAG 口上,或者没装 FTDI 数据驱动 | 换到数据口,并在副机上安装 FTDI D3XX 驱动。这是驱动问题,不是固件问题 |
| 写入被中断后完全没有反应 | Flash 里只有残缺的镜像,FPGA 始终无法完成配置 | 通过同一个 JTAG 口重新刷入正确的镜像。JTAG 不依赖 Flash 里的内容,所以这种情况通常能救回来 |
刷写常见问题
能不能在游戏主机上刷,而不用副机?
不能。工具是通过 JTAG 口上的 USB 与板卡通信的,这根线应该接在副机上。游戏主机唯一的作用是给插槽供电。
该选 BIT 还是 BIN?
BIN。BIT 设置是直接配置 FPGA,断电就没了。DMA 卡的固件镜像是写进 SPI Flash 的,走的是 BIN 这条路径。
刷写一般要多久?
完整镜像需要几分钟。如果工具几秒钟就说完成了,几乎可以肯定什么都没写进去,检查一下文件格式选项和文件路径。
需要先擦除 Flash 吗?
不需要。工具在编程过程中会自行擦除。通用 FPGA 教程里的手动擦除步骤在这里用不上,反而会多出一段板卡里完全没有镜像的空窗期。
同一个镜像能刷两次吗?
可以,而且没有任何坏处。写入被中断后板卡表现异常时,重新刷一遍是很合理的第一步,因为这样就不必再怀疑 Flash 里到底是什么内容。
资料来源
文件夹布局、步骤顺序和故障对照表是我们自己整理的,来源是亲手刷写这些板卡的经验和用户工单。
- 01AMD/Xilinx UG910, Vivado Design Suite User Guide: Getting Started
器件编程流程:直接对 FPGA 编程的内容断电即失,写入 Flash 的镜像则会保留
docs.amd.com
- 02AMD/Xilinx DS180, 7 Series FPGAs Data Sheet: Overview
xc7a75t 和 xc7a100t 是两款不同的 Artix-7 器件,所以型号选择必须与实际芯片一致
docs.amd.com
继续阅读
仍然没有解决?在 Discord 提交工单
全部指南