【环境搭建】WSL2安装Vivado、Vitis、Petalinux教程(适用2022及以上版本)
概述
我们使用Xilinx的开发套件Vivado、Vitis以及Petalinux时通常在Windows下、Ubuntu物理机下或者VM虚拟机下,这些环境都有各自的优缺点,单论编译效率而言Ubuntu物理机
>WSL虚拟机
>VM虚拟机
>Windows物理机
。今天介绍一种笔者认为既能够享受到熟悉的Windows系统的便利,又能够享受到Linux系统下高编译效率的开发环境配置方式:即在Windows Subsystem for Linux(简称WSL)下开发
本文会涉及到软件安装与环境配置的方方面面,内容比较多可以根据自己需求选择性阅读。还有本教程仅支持vivado2022及以上版本尝鲜,较老的版本不适用,想安装老版本的同学请使用其他方式。
安装环境介绍
硬件:推荐13代intel、内存32G以及更高,硬盘空间500G以上,体验更好
Windows :Windows 11 专业版(Windows11以及Windows10的1903及更高版本都可以)
WSL2:适用于 Linux 的 Windows 子系统,下面是关于WSL的介绍,注意我们使用的是WSL2。下面是官方的一些介绍:
什么是适用于 Linux 的 Windows 子系统 | Microsoft Learn
Ubuntu:根据要安装的Vivado版本选择,这里主要是Petalinux对系统版本有要求,请参考UG1144 (xilinx.com)
以下是本教程使用的版本,推荐使用Vivado使用2022及以上的版本:
- Windows 11 专业版 22H2
- Ubuntu22.04(WSL2)
- Vivado ML 2023.1
安装WSL
- 打开控制面板,启用Windows功能,在里面勾选上
适用于Linux的Windows子系统
和虚拟机平台
选项
点击确定,安装完后会提示重启系统,重启一下电脑完成安装。
- 启用WSL2支持,需要安装一个更新包适用于 x64 计算机的 WSL2 Linux 内核更新包 (windows.net)
,按照步骤完成安装即可。
- 打开微软商店,安装Ubuntu,选择自己需要的版本,这里我们使用Ubuntu22.04
这里还需要安装Windows Subsystem for Linux
- 安装完后打开Ubuntu,这里我们推荐使用
Windows Terminal
(即终端)打开,windows11已经自带,非常好用。
点击展开按钮,发现这里以及有一个名字叫做Ubuntu 22.04.02 LTS
的选项,点击打开
打开后开始初始化配置,按照提示设置用户名和密码,如果打开Ubuntu时碰到错误,请搜索引擎搜索错误代码一般都能找到解决方法
设置好后如下图:
打开powersehll输入命令wsl -l -v
查看我们安装好的Ubuntu版本:
如此一来我们的WSL就初步安装好了,但是了为了后续方便使用,我们需要先进行一些配置,接下来继续。
给Ubuntu换源,由于官方默认源服务器可能不是很顺畅,需要换成国内源,推荐使用中科大源。使用nano编辑器打开配置文件
sudo nano /etc/apt/sources.list
,将原来的源用#
注释,并在最后一行添加如下:# 默认注释了源码仓库,如有需要可自行取消注释 deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
ctrl +o
回车保存,ctrl + X
退出,sudo apt-get update && sudo apt-get upgrade
更新源与软件。
设置root用户与默认使用root打开,由于建议Vivado在root权限用户下安装,所以我们默认使用root用户打开时登录会更方便一些。
默认root密码没有设置,我们设置一下:
sudo passwd root
切换到root命令(可不操作):
su root
在powershell命令行输入:
ubuntu2204 config --default-user root
第一个单词是你的ubuntu版本,下次打开新的终端时就是使用的root用户登陆了。
- wsl与windows文件交互操作,在windows的文件管理器可以直接找到安装的Linux系统目录,非常方便
迁移WSL到非系统盘
一般我们的系统盘空间不会特别大,但虚拟机会随着使用体积越来越大,所以我们可以提前将WSL迁移到其他空间更大的硬盘中。
终止正在运行的wsl,在powershell输入命令:
wsl --shutdown
将需要迁移的ubuntu系统进行导出(注意系统版本名称):
wsl --export Ubuntu-22.04 D:/wsl/ubuntu2204.bak
这里第三个参数是我们需要迁移的Ubuntu版本号,第四个路径是迁移的目标目录。
导出成功
导出完成后,需要将原有的Ubuntu系统进行卸载
wsl --unregister Ubuntu-22.04
- 然后将要导入的文件放到需要保存的目录
wsl --import Ubuntu-22.04 D:\wsl\ D:\wsl\ubuntu2204.bak --version 2
第四个参数是要移动的新的路径,第五个参数是要导入的文件的路径。
接下来就完成迁移了,按之前操作打开即可使用。
另外可以根据需求给wsl扩容,我这里使用2T硬盘,WSL默认使用的是1024GB便没有扩容需求
安装Vivado
vivado的安装流程和正常ubuntu下一致,可能有同学有疑问了,我们还没有安装桌面环境,到时候怎么启动vivado GUI界面呢。网上教程一般都是安装Gnome、Xfce4等桌面环境,其实根本不需要,WSL2原生支持了GUI,下面我们会提到,如何优雅的启动Vivado GUI界面。
- 下载Vivado,可以选择使用web installer或者离线安装包安装的方式,从Xilinx(AMD)官网下载需要注册一个账号,这里不提供安装包,请自行下载。
设置安装包权限并安装
chmod 777 Xilinx_Unified_2023.1_0507_1903_Lin64.bin && ./Xilinx_Unified_2023.1_0507_1903_Lin64.bin
接下来就会弹出安装界面,实现了原生GUI支持
安装过程
输入账号密码,默认选中了
Download and install Now
,下一步
我们需要使用Vitis的话,就选择Vitis,里面包含了Vivado与HLS
选择需要开发的器件,我硬盘空间大这里就默认全选了
全部同意(不得不同意)
选择安装路径,我安装在了/opt/xilinx
目录下,可以自己选择,注意选择的路径需要存在
接下来就是漫长的等待了。。。
安装完后会提示如下图字符集错误,问题不大
手动生成字符集en_US.UTF-8对应的locale文件即可
sudo localedef -i en_US -f UTF-8 en_US.UTF-8
还有个提示,想要完成ACAP器件工具的设置,需要root权限执行一下installLibs.sh
这个脚本
/opt/xilinx/Vitis/2023.1/scripts/installLibs.sh
添加环境变量:为了方便使用命令启动软件,我们把启动环境配置添加到用户环境变量中去
使用nano打开
.bashsh
nano ~/.bashrc
在末尾添加下面内容,注意你的安装路径
source /opt/xilinx/Vivado/2023.1/settings64.sh
source /opt/xilinx/Vitis/2023.1/settings64.sh
source /opt/xilinx/Vitis_HLS/2023.1/settings64.sh
ctrl +o
回车保存,ctrl + X
退出,输入命令source ~/.bashrc
加载到当前shell终端,打开新的终端也会自动加载,不用再输入这条命令了。
接下来只需要在终端输入vivado
、vitis
、vitis_hls
打开自己需要启动的软件即可。
安装usb设备驱动,驱动安装脚本路径在
/opt/xilinx/Vivado/2023.1/data/xicom/cable_drivers/lin64/install_script/install_drivers
找到目录后执行
./install_drivers
即可安装安装wsl usb驱动,由于WSL本身不支持usb驱动,所以需要安装usbpid-win程序 | Microsoft Learn,下载页面Releases · dorssel/usbipd-win (github.com)。
安装好后就可以将windows下面的usb设备加载到wsl里面了,实际我们开发时就是需要将Jtag设备加载到WSL里面使用Vivado来调试,上面链接中也说了如何使用命令将usb设备加载到wsl中去。为了方便这里我写了个bat脚本,为了可视化操作更方便一些,后面考虑写一个带GUI的小工具。
@echo off echo ----- USB Manager ----- echo 1.atach windows usb device to wsl echo 2.detach wsl usb device echo 3.check usb device list echo 4.exit echo.&echo. set /p a=input choice: if "%a%"=="1" Goto function1 if "%a%"=="2" Goto function2 if "%a%"=="3" Goto function3 if "%a%"=="4" Goto function4 :start ^ echo ----- USB Manager ----- echo 1.atach windows usb device to wsl echo 2.detach wsl usb device echo 3.check usb device list echo 4.exit echo.&echo. set /p a=input choice: if "%a%"=="1" Goto function1 if "%a%"=="2" Goto function2 if "%a%"=="3" Goto function3 if "%a%"=="4" Goto function4 :function1 usbipd wsl list @echo off set /p var=please input usb BUSID: echo you selected:%var% usbipd wsl attach -b %var% goto start :function2 usbipd wsl list @echo off set /p var=please input usb BUSID: echo you selected%var% usbipd wsl detach -b %var% goto start :function3 usbipd wsl list goto start :function4 echo exit goto end :end echo complete
新建一个文件,后缀名为.bat
,将上述内容复制进去。⚠️注意首次加载的usb设备需要使用管理员运行此脚本!
使用vscode编辑器
由于vivado自带的编辑器比较难用,为了提升开发体验,我们可以使用vscode来查看与编辑verilog代码。
- windows下安装vscode,直接安装就行了Visual Studio Code - Code Editing. Redefined
- 给vscode安装插件,首先需要安装
WSL
用于vscode链接到WSL子系统
也可以安装中文语言插件,搜索Chinese
。
安装好后就可以连接到WSL了,左下角多出个蓝色的图标,点击就会弹出连接到WSL的窗口
当左下角出现ubuntu版本名称就表示连接上了
vscode的插件是分为Windows本地的插件与WSL远程主机的插件,我们vivado开发环境是在wsl ubuntu下,所以相关插件需要连接到wsl后安装。这里有需要安装的插件Verilog-HDL
,用于语法高亮、自动补齐等等。第二个是google的插件,用于verilog代码格式化
- 对
Verilog-HDL
扩展需要进行配置,将Linter换为xvlog,用于语法纠错
- vivado配置文本编辑器,打开
Tools
-Settings
细心的同学可以注意到了,这里编辑器以及有了vscode可以选择,可能这是比较新的vivado版本才有,为了照顾老版本我们这里还是配置一遍。路径为code -g [file name]:[line number]
由于vsode安装了WSL插件,在ubuntu终端里面就可以直接输入命令code
启动远程连接到wsl状态下的vsode,非常方便。
配置好后双击vivado工程中的.v
文件即可使用vscode打开查看与编辑了。
PetaLinux安装
如果你需要制作Linux系统,就需要用到Petalinux,和前面vivado不同的是Petalinux需要使用非root权限安装。而且Petalinux对系统版本要求很严格,请参考对应版本ug1144手册的Installation Requirements
章节,里面有支持系统版本的说明。
安装前准备
下载Petalinux安装包
安装前确保你是在非root用户下,可以使用
su <username>
切换。
把安装文件放到合适的目录,我这里这里就放在当前用户目录下,创建一个安装文件夹,并赋予用户权限
mkdir xilinx
sudo chown -R $USER:$USER ~/xilinx/
安装必要的库,你的版本需要安装哪些库,请查看发行说明PetaLinux 2023.1 - Product Update Release Notes and Known Issues (xilinx.com),此说明可以在对应版本ug1144手册的
Installation Requirements
章节找到链接由于有些库是32位,在安装的时候会apt提示找不到,需要执行以下命令添加32位软件仓库支持:
sudo dpkg --add-architecture i386 sudo apt-get update
这里有两个注意的地方,一个是Ubuntu20以上预装的python版本是python3,不预装python2了,所以也不会有python命令,有需求的话可以将
python3
软链接指向python
。另一个是pylint3库在ubuntu22下面指向的是
pylint
,需要更改一下。更改后要安装的库如下
sudo apt-get install iproute2 gawk python3 build-essential gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget git-core diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib automake zlib1g:i386 screen pax gzip cpio python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint bc
切换sh为bash,ubuntu默认使用
dash
,但是petalinux要求/bin/sh
使用bash
,使用下面命令切换,弹出的界面选择No
sudo dpkg-reconfigure dash
安装tftp服务器(可选)
tftp服务器用于存放petalinux生成的文件,可以通过网络来启动系统,由于wsl2网络的特殊性,配置起来比较复杂,推荐在windows下使用tftp服务器,可以使用
tftpd64
TFTPD64 : an opensource IPv6 ready TFTP server/service for windows : TFTP server (pjo2.github.io)下面还是wsl下的tftp服务器安装方法
sudo apt-get install tftp-hpa tftpd-hpa
创建
/tftpoot
目录,并给目录权限sudo mkdir -p /tftpboot sudo chmod 777 /tftpboot
然后配置tftp,配置文件目录在
/etc/default/tftpd-hpa
,修改内容如下,注意将TFTP_DIRECTORY
内容改成刚才创建的目录# /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/tftpboot" TFTP_ADDRESS=":69" TFTP_OPTIONS="-l -c -s"
最后重启tftp服务器,这样就搭建完了
sudo service tftpd-hpa restart
安装Petalinux,首先需要给安装包权限,注意自己的安装包文件名
sudo chmod 777 petalinux-v2023.1-05012318-installer.run
运行安装程序,指定安装目录到刚才创建的文件夹
./petalinux-v2023.1-05012318-installer.run --dir ~/xilinx/
接下来会显示一些用户协议,可以按
q
退出阅读继续执行,然后等待安装完成,下图是安装完成后的信息
使用如下命令加载petalinux环境变量即可使用了
source ~/xilinx/settings.sh
设置petalinux环境变量,为了方便使用,将环境变量设置到
~/.bashrc
文件的最后一行,添加如下命令:source ~/xilinx/settings.sh
这样我们每次打开shell或者切换到此用户时都会加载petalinux环境变量
其他配置
其他的一些配置可以根据自己要求来,不是必须的
Vivado打开block design卡死
在2022版本的Vivado中存在,解决方法在这里:000034290 - Vivado GUI hangs while opening Block Design on some machines with CentOS 8, RHEL 8 and above (xilinx.com)
在vivado启动前使用如下参数,可以在启动tcl脚本中添加,脚本路径在/opt/xilinx/Vivado/2023.1/scripts
目录,在这里直接新建一个脚本,输入命令nano Vivado_init.tcl
,脚本内容如下:
set_param gui.addressMap 0
ctrl +o
回车保存,ctrl + X
退出即可,注意脚本名不要错,这样每次启动Vivado时就会执行这个脚本。
提高Vivado编译效率
windows下vivado默认使用2个核心编译,linux下没注意,我这里是8核心16线程处理器,使用命令get_param general.maxThreads
获取到的数量是8
可以手动设置使用的线程数量set_param general.maxThreads x
,x是设置当前工程使用的线程数,根据自己电脑性能合理设置。为了方便我们将命令添加到vivado启动tcl脚本里面,脚本路径在/opt/xilinx/Vivado/2023.1/scripts
目录,在这里直接新建一个脚本,输入命令nano Vivado_init.tcl
,脚本内容如下:
set_param general.maxThreads 16
set_param gui.addressMap 0
ctrl +o
回车保存,ctrl + X
退出即可,注意脚本名不要错。
调整wsl内存大小
如果fpga工程比较大,可能会碰到爆内存的情况,默认情况wsl只会使用Windows 上总内存的 50% 或 8GB,以较小者为准,碰到这种情况我们需要手动分配内存。
参考WSL 中的高级设置配置 ,在C:\Users\<UserName>
目录下新建文件.wslconfig
参考模板如下,将对应设置取消注释符号#
即可:
# Settings apply across all Linux distros running on WSL 2
[wsl2]
# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB(这里修改内存大小)
#memory=16GB
# Sets the VM to use two virtual processors(这里修改CPU逻辑核心数量)
#processors=8
# Specify a custom Linux kernel to use with your installed distros. The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel
#kernel=C:\\temp\\myCustomKernel
# Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
#kernelCommandLine = vsyscall=emulate
# Sets amount of swap storage space to 8GB, default is 25% of available RAM
#swap=8GB
# Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
#swapfile=C:\\temp\\wsl-swap.vhdx
# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
#pageReporting=false
# Turn off default connection to bind WSL 2 localhost to Windows localhost
#localhostforwarding=true
# Disables nested virtualization
#nestedVirtualization=false
# Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
#debugConsole=true
需要更改的配置取消注释,更改合适的值即可
高分屏下缩放比例的调整
- vivado调整缩放比例
假如你使用2k甚至4k分辨率屏幕,打开vivado GUI时会看不太清,需要设置缩放比例,最便捷的办法是使用vivado自带缩放设置,如下图,设置完后重启软件生效
vitis调整字体大小
由于vitis是基于eclipse开发,软件没有自带调整缩放比例功能,我们只能通过调整字体大小来曲线救国,菜单栏找到
Window->Perferences
然后选择你看起来感觉到舒适的字体与字体尺寸
中文输入法支持
⚠️本方法只适用于ubuntu22
由于wsl默认不支持中文输入法,这里安装个Fcitx5
- 直接使用apt命令安装
sudo apt install fcitx5 \
fcitx5-chinese-addons \
fcitx5-frontend-gtk4 fcitx5-frontend-gtk3 fcitx5-frontend-gtk2 \
fcitx5-frontend-qt5
- 然后安装中文词库,对于Fcitx5的中文输入法,仓库里提供了数个词库,这里以维基百科词库为例安装,需要更多词库请自行搜索如何安装。
词库地址Releases · felixonmars/fcitx5-pinyin-zhwiki (github.com)
将其复制到~/.local/share/fcitx5/pinyin/dictionaries/
文件夹下:
# 下载词库文件
wget https://github.com/felixonmars/fcitx5-pinyin-zhwiki/releases/download/0.2.4/zhwiki-20220416.dict
# 创建存储目录
mkdir -p ~/.local/share/fcitx5/pinyin/dictionaries/
# 移动词库文件至该目录
mv zhwiki-20220416.dict ~/.local/share/fcitx5/pinyin/dictionaries/
这里要从github上下载,由于众所周知的原因可能会下载卡住或者很慢,请多尝试几次或者使用代理
设置默认输入法,还需要安装一个图形化工具
sudo apt-get install zenity
装好后就可以输入命令
im-config
打开配置的gui界面,一路同意,选择fcitx5即可
需要为桌面会话设置环境变量,即将以下配置项写入某一配置文件中:
export XMODIFIERS=@im=fcitx export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx
建议写入系统变量
/etc/profile
,添加到末尾- 此时输入命令
fcitx5
发现还无法启动
可能是wsl2当前对 Wayland 的支持不是特别好,可以先通过命令fcitx5 --disable=wayland
启动fcitx5,然后输入命令fcitx5-config-qt
打开设置界面,关闭wayland支持。如下图,先打开Addons
页面,勾选Show Advanced options
,然后搜索框输入wayland
筛选设置选项,取消勾选即可。
顺便设置一下拼音输入法
重新启动fictx5
就可以在各种应用中打字输入了,shift
键是切换中英文输入法
Petalinux配置sstate
使用sstate加速工程编译
待补充...
参考
- WSL 中的高级设置配置 | Microsoft Learn
- 连接 USB 设备 | Microsoft Learn
- ug1144-petalinux-tools-reference-guide.pdf • 查看器 • AMD 自适应计算文档门户 (xilinx.com)
- 手把手教你在Windows下用WSL运行Vitis/Vivado/Petalinux | 电子创新网赛灵思社区 (eetrend.com)
- Ubuntu22.04安装Fcitx5中文输入法(详细) - 知乎 (zhihu.com)
- 如何在 WSL2 中使用 fcitx5 mcbopomofo · openvanilla/fcitx5-mcbopomofo Wiki (github.com)
- 为 Hyper-V 配置虚拟局域网 | Microsoft Learn
脚本根据 usbipd-win 4.1.0,进行了小更新:
@echo off
echo ----- USB Manager -----
echo 1.attach windows usb device to wsl
echo 2.detach wsl usb device
echo 3.check usb device list
echo 4.exit
echo.&echo.
set /p a=input choice:
if "%a%"=="1" Goto function1
if "%a%"=="2" Goto function2
if "%a%"=="3" Goto function3
if "%a%"=="4" Goto function4
:start
^
echo ----- USB Manager -----
echo 1.attach windows usb device to wsl
echo 2.detach wsl usb device
echo 3.check usb device list
echo 4.exit
echo.&echo.
set /p a=input choice:
if "%a%"=="1" Goto function1
if "%a%"=="2" Goto function2
if "%a%"=="3" Goto function3
if "%a%"=="4" Goto function4
:function1
usbipd list
@echo off
set /p var=please input usb BUSID:
echo you selected:%var%
usbipd bind -b %var%
usbipd attach -w -b %var%
goto start
:function2
usbipd list
@echo off
set /p var=please input usb BUSID:
echo you selected:%var%
usbipd detach -b %var%
usbipd unbind -b %var%
goto start
:function3
usbipd list
goto start
:function4
echo exit
goto end
:end
echo complete
您好,我这里安装都成功,不过在编译工程时vivado会闪退,我尝试修改了分配内存和处理器数量,不过还是闪退,不知是哪里的问题。
@palzhj 我的问题,我把".wslconfig"文件写错成".wslconfig.txt"了,现在正常了。
vivado可以正常启动,vitis和vitis_hls启动报错|´・ω・)ノ
我试装了2022.2,还是出问题了libXi.so.6: cannot open shared object file: No such file or directory。
参考https://support.xilinx.com/s/question/0D52E00006hpM81SAE/installing-vivado-on-wsl-windows-subsystem-for-linux?language=en_US和https://support.xilinx.com/s/article/67000?language=en_US,需要手动装下面的库
lib32stdc++6
libgtk2.0-0:i386
libfontconfig1:i386
libx11-6:i386
libxext6:i386
libxrender1:i386
libsm6:i386
libqtgui4:i386
@xxyk 装完了还是无法运行,放弃。。。
感谢老哥的教程,可以问一下按照你说的设置其他的都没问题了,唯独vscode那一步在Ubuntu里单独输入code可以正常打开vscode但是在vivado里就会报错
Unable to launch external text editor using the following arguments: 'code -g /home/leo/project_1/project_1.gen/sources_1/bd/zynq7000_preset/synth/zynq7000_preset.v:12' Please verify that the editor is installed on your system, specified in your PATH, and the path contains no double quotes (e.g., "[path to editor]").
老哥知道这个怎么解决吗,再次感谢
@leo 重启之后解决了,感谢老哥
@leo 版本是2022.1