在骁龙 X Elite 等 Windows ARM 笔记本上,Vivado 能够正常安装,但自带的 Digilent 驱动由于是 x86 内核驱动,无法在 ARM 架构下直接运行,导致 Hardware Manager 无法识别开发板。
核心思路: 利用 WSL2 的 Linux 内核接管 USB 硬件,通过开源烧录工具 openFPGALoader 绕过官方驱动。
准备工作
- Windows 端: 安装 usbipd-win,用于在宿主机和虚拟机之间传输 USB 数据。
- WSL2 端: 推荐使用 Ubuntu,其预编译包支持较好。
操作步骤
第一步:建立 USB 穿透
我们需要 usbipd-win 来把 USB 接口从 Windows 穿透到 Linux。
将开发板跳线帽 JP1 处于 JTAG 模式,通过USB与电脑连接并打开开关,启动WSL,在 Windows PowerShell (管理员) 中执行:
usbipd list:确认开发板的 BUSID(如1-2)。usbipd bind --busid <BUSID>:共享设备(仅需一次)。usbipd attach --wsl --busid <BUSID>:将设备挂载到 WSL。
第二步:Ubuntu 环境配置
sudo apt install linux-tools-generic
检查是否穿透成功:
lsusb
安装工具openFPGAloader:
sudo apt updatesudo apt install openfpgaloader
第三步:执行烧录
在 Ubuntu 终端中进入 .bit 文件所在目录(通常通过 /mnt/c/ 访问 Windows 路径):
# 使用 -c 参数指定 digilent 协议
sudo openFPGALoader -c digilent filename.bit
踩坑记录
- Gemini 提供了一种用 Zadig 替换驱动,然后直接在Windows上使用 openFPGALoader 烧录的方法,但替换驱动时报
Driver Installation Failed,无法成功。 - 我的 WSL 安装是通过 https://archlinuxarm.org/ 上下载的压缩包创建的 Arch 发行版,USB穿透时提示错误(尽管已是最新版),不能成功,换成 Ubuntu 解决。
$nu ~ ❯ usbipd attach --wsl --busid 1-2
usbipd: info: Using WSL distribution 'Arch' to attach; the device will be available in all WSL 2 distributions.
usbipd: error: WSL kernel is not USBIP capable; update with 'wsl --update'.
- 硬件不动,WSL 重启(硬件插入早于系统启动),穿透就断了,重新插拔硬件或在 Windows 中
usbipd detach --all
usbipd attach --wsl --busid 1-2
一个替代方案
既然只是驱动不兼容,无法把 .bit 文件下载到开发板,可以使用另一种方式:从U盘读取。
三个跳线帽放在:
| JP1 | USB/SD |
| JP2 | USB |
| JP3 | USB |
把 .bit文件拷到U盘根目录(U盘还有其它文件也不影响),插到开发板上的接口,黄灯亮起,稍等片刻,黄灯熄灭,绿灯亮起,即开始运行。

Leave a Reply
You must be logged in to post a comment.