在WSL2中的Vivado如何连接到FPGA开发板
在windows系统中,通过Vivado连接到FPGA开发板只需要安装好Vivado软件和Cable驱动即可,Linux也是同理,而WSL需要考虑的就很多了。
必看更新 hw_server方法
原文方法是把 USB设备映射到 WSL2 中,用起来较麻烦,如果你希望快速不折腾,不建议使用原文的方法,建议类似于 vivado 远程调试的方法,也即:Windows 中安装 hw_server 并运行,然后在 wsl2 中打开 vivado 的 hardware manager 界面,并连接至 windows 中的 hw_server。
简明教程如下:
1、在 WSL2 中安装完整的 vivado,请参阅其他教程。
2、在 Windows 中也运行 vivado 安装程序,在安装选项中,如果你不打算在 Windows 中进行任何调试,也就是调试全在 WSL2 中的 vivado,选1:Hardware Server,如果你后续希望在 Windows 中也能进行调试(能够在 Windows 中运行 Hardware Manager 看波形之类的,选2:Lab Edition)。

3、安装完成后,你可以在 windows 下手动打开 hw_server(默认位置C:\Xilinx\VivadoHWSRV\vivado_release.version\bin\hw_server.bat),此时hw_server运行了起来。


4、之后可以在 WSL2 中打开vivado hardware manager,连接到 localhost:3121,镜像模式的WSL2可以直接auto connect,或者按流程配置。(如果你的WSL2不是镜像网络模式,那么IP就填就是你的主机 IP,端口是默认的,在 hw_server 打开的界面可以看到),之后就跟本地使用一样了。
(NAT模式的WSL2不知道主机ip?试试linux下ip route | grep default | awk '{print $3}',还有在winsows中管理员powershell防火墙放行端口New-NetFirewallRule -DisplayName "Xilinx hw_server" -Direction Inbound -LocalPort 3121 -Protocol TCP -Action Allow)



这个方法最简单,局域网远程调试也可以参考。
相关链接可以参考:
打开新硬件目标
在实验室环境中使用 Vivado Logic Analyzer
usbipd方法原文:
在WSL2中使用Vivado连接到开发板大致分为以下几步:安装USBipd、安装Cable驱动、将USB端口映射到WSL里,修改dev权限,最后Vivado打开检测。
1、安装usbipd
WSL不像VMWare虚拟机之类能够自动识别插入的外接设备,需要借助usbipd库来实现主机设备到WSL的映射,关于usbipd库的微软官方在这个地方提供了一个很好的教程,建议学习,此处引用之:
安装usbipd-win,我使用winget命令,以管理员权限打开命令行,输入 winget install --interactive --exact dorssel.usbipd-win,即可自动安装。
2、安装Cable驱动
安装Cable驱动的过程与Linux下安装的相同,AMD提供了一个很好的教程,此处引用之:
定位到Vivado安装目录下的/data/xicom/cable_drivers/lin64/install_script/install_drivers/,然后运行下面的install_drivers可执行文件(需要root权限)。
cd ${vivado_install_dir}/data/xicom/cable_drivers/lin64/install_script/install_drivers/
sudo ./install_drivers
至此,应该安装完毕。
3、将USB端口映射到WSL里
安装完成驱动之后,可以开始连接FPGA的JTAG接口和电脑,在电脑的设备管理器中,应该能找到一个新增的设备,这个地方我是通过插拔的设备变动判断出来,在我的电脑上JTAG对应的设备如图所示(我并没有在windows中安装驱动)

确认了这个设备之后,在windows中以管理员权限打开命令行,输入usbipd list,能够看到usb设备列表,如图所示,能够发现jtag对应的usb设备,如图所示:

可以看到,其设备编号是5-1,相当于bus5上的设备1,之后都以5-1表示这个设备。
之后,将该设备绑定到usbipd上,并且添加到WSL中:
usbipd bind -b 5-1
usbipd attach --wsl -b 5-1
此时再使用usbipd list查询,可以看到设备已经被attached:

至此,设备成功连接到wsl中。windows部分的操作完成,之后的操作在WSL中进行。
修改WSL中dev权限
正常来说,这个时候已经能够在WSL里识别到加进去的USB设备,在WSL中输入lsusb,如图所示:

但是由于权限原因,Vivado无法访问这个设备,理论上你可以使用root权限运行vivado,也许就ok了,此处采用的方法是修改usb设备的权限,我这里比较粗暴,直接将usb设备全部赋予权限。
chmod -R 777 /dev/bus/usb/
至此,应该所有的任务都完成了,打开vivado,Open HardWare Manager,进行一个Autoconnect,应该能成功找到设备,如图所示:

可能遇到的问题
在我的实践中,似乎插拔设备后可能会发生变动,导致原先的配置失效。如果遇到疑似失效的情况,请使用usbipd list和lsusb分别在windows和wsl中检查设备是否正常存在。
如何取消:
如果usb设备已经添加到wsl中(attached),使用usbipd detach -b 5-1来取消链接一个usb设备。此时设备状态是shared,使用usbipd unbind -b 5-1来取消共享设备,此时恢复到原来的状态。

浙公网安备 33010602011771号