Windows ARM 环境下烧录 Nexys 4 DDR 的方案记录

by

·

191 words

在骁龙 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 (管理员) 中执行:

  1. usbipd list:确认开发板的 BUSID(如 1-2)。
  2. usbipd bind --busid <BUSID>:共享设备(仅需一次)。
  3. 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盘读取。

三个跳线帽放在:

JP1USB/SD
JP2USB
JP3USB

把 .bit文件拷到U盘根目录(U盘还有其它文件也不影响),插到开发板上的接口,黄灯亮起,稍等片刻,黄灯熄灭,绿灯亮起,即开始运行。

Comments

Leave a Reply