Ubuntu20.04下Vitis2021.2与Petalinux2021.2集成开发环境全流程搭建指南
1. 环境准备:从零开始的Ubuntu 20.04基础配置
搭建Xilinx Vitis和Petalinux这套开发环境,第一步也是最关键的一步,就是准备好一个“干净”且“强壮”的Ubuntu系统。很多朋友,包括我自己刚开始的时候,都容易在这里栽跟头,总觉得系统装好了就能直接开干,结果后面安装工具链时各种库缺失、依赖冲突,折腾得人仰马翻。所以,咱们宁可前面多花半小时,把地基打牢,也别后面花几天去填坑。
我强烈建议使用虚拟机来搭建这个环境,尤其是对于新手或者还在学习阶段的开发者。用虚拟机的好处太多了:环境隔离,不怕把宿主机搞乱;可以随时做快照,操作失误了能一键回滚;方便在不同项目间切换不同的工具链版本。我个人的主力开发环境就是跑在VMware Workstation Pro里的Ubuntu 20.04,非常稳定。当然,如果你有闲置的电脑或者服务器,直接裸机安装Ubuntu 20.04是性能最好的选择,但前提是你得对Linux系统管理有一定信心。
关于Ubuntu的版本,这里有个小细节。原始文章里提到了Jammy (22.04),但我们的目标是搭建Vitis 2021.2和Petalinux 2021.2。根据Xilinx官方文档的兼容性列表,Ubuntu 20.04 LTS (Focal Fossa) 是这两个工具链官方明确支持且最稳定的版本。Ubuntu 22.04虽然更新,但可能会遇到一些未经验证的库依赖问题,导致安装过程出现奇怪的错误。所以,咱们就老老实实用20.04,别去追新。你可以从国内的镜像站下载,速度会快很多,比如阿里云、清华大学的镜像源。
下载好ISO文件后,在虚拟机里安装时,有一个超级大坑必须避开:在安装过程中,Ubuntu会提示你是否要“跳过”下载和安装更新。千万、千万不要跳过! 一定要选择“正常安装”或者确保它会在安装过程中下载更新。这一步会为你安装许多基础的系统包和库文件。如果你跳过了,系统会是一个极其“精简”的状态,后面安装Petalinux所需的大量依赖库时,会缺这少那,报错信息能让你看得头皮发麻。我当初不信邪,跳过一次,结果在安装Petalinux依赖时,libncurses、libssl这些库的版本对不上,编译各种失败,最后只能重装系统,血的教训。
系统安装完毕后,第一件事不是急着装软件,而是先做好两件事:安装VMware Tools(或VirtualBox增强工具)和更换系统软件源。安装VMware Tools能让你实现宿主机和虚拟机之间的文件拖拽、共享文件夹、屏幕自适应调整,极大提升开发体验。在终端里执行 sudo apt-get install open-vm-tools-desktop 然后重启即可。共享文件夹的配置也很重要,这样你可以把Windows里下载好的几个GB的安装包直接放到共享文件夹里,在Ubuntu中访问,省去用U盘倒腾或者网络传输的麻烦。挂载命令通常类似 sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other。
紧接着,把Ubuntu的软件源换成国内的镜像。虽然系统安装时可能已经选了,但再确认一下没坏处。打开“软件和更新”,在“下载自”那里选择“中国的服务器”,比如 mirrors.aliyun.com。或者在终端里备份并编辑 /etc/apt/sources.list 文件,将其内容替换为阿里云的源地址。换源之后,执行 sudo apt update && sudo apt upgrade 来更新软件包列表并升级所有已安装的包到最新版本。这个过程可能会花点时间,但能确保你的系统处于一个最新、最一致的状态,避免后续因系统包版本过低导致的兼容性问题。
2. 安装依赖与必备系统库:为大型工具链铺路
系统基础搞定后,咱们就要开始为迎接Vitis和Petalinux这两位“重量级嘉宾”准备场地了。它们不像普通软件,装完就能跑,而是高度依赖系统底层的一系列开发库和工具。这一步就是要把这些“建筑材料”全部备齐。原始文章里给出了依赖列表,但我想结合自己的踩坑经验,把这些依赖分分类,讲讲它们都是干什么的,这样你遇到问题时也知道该从哪里入手排查。
首先,是Vitis安装所需的OpenCL依赖。Vitis的核心之一是异构计算,它需要OpenCL运行时库的支持。在Ubuntu 20.04上,你需要安装以下三个包:
sudo apt-get install ocl-icd-libopencl1 opencl-headers ocl-icd-opencl-dev
ocl-icd-libopencl1 是OpenCL的ICD(Installable Client Driver)加载器库,opencl-headers 是编译时需要用的头文件,ocl-icd-opencl-dev 是开发包。把它们装好,Vitis安装程序在检测环境时才不会报错。
接下来是Petalinux的依赖库,这一堆看起来很多,但每个都有其作用。我们可以把它们分成几组来理解:
- 编译工具链基础:
build-essential,gcc,gcc-multilib,make,automake,autoconf,libtool。这些是任何编译工作的基石,提供编译器、链接器、make工具等。 - 内核与驱动开发相关:
bison,flex(语法分析器生成器,用于解析内核配置等文件),libncurses5-dev(提供终端字符图形界面,menuconfig就靠它),libssl-dev(安全套接字层库,很多网络和加密相关功能需要)。 - 文件与压缩工具:
tar,gzip,bzip2,xz-utils,cpio,unzip。Petalinux在构建过程中会处理大量压缩包镜像。 - 脚本与解释器:
python3,python3-pip,python3-pexpect,python3-git,python3-jinja2。Petalinux 2021.2已经全面转向Python 3,所以Python 3的相关包必须齐全。pexpect用于自动化控制终端会话,jinja2是模板引擎,用于生成配置文件。 - 网络与版本控制:
git,git-core,tftpd(TFTP服务器,用于网络启动调试),net-tools,iproute2,iputils-ping。 - 其他重要库:
zlib1g-dev,libselinux1,chrpath(修改二进制文件运行时库搜索路径),socat(多用途网络工具),screen(终端复用),pax(归档工具),libsdl1.2-dev(有时模拟器或图形化工具会用到)。
安装命令可以直接用原始文章里那一长串,但我建议先更新源然后执行:
sudo apt-get update
sudo apt-get install iproute2 gawk python3 python 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 pylint3
这里注意 zlib1g:i386 这个包,它是32位兼容库。因为一些Xilinx的旧有工具或底层程序可能还是32位的,装上它能避免“找不到32位库”的错误。另外,libtinfo5 这个包虽然没在上面的官方大列表里,但极其重要!它就是导致Vitis安装卡在“Generating installed device list”的罪魁祸首。所以,务必单独执行 sudo apt-get install libtinfo5 把它装上。我当初就是被这个坑卡了一晚上,安装进度条死活不动,还以为是安装包损坏了。
3. 获取与安装Vitis 2021.2:破解安装过程中的“幽灵卡顿”
依赖库全部到位后,我们就可以请出主角之一——Vitis Unified IDE 2021.2了。首先得去Xilinx官网下载安装包。你需要有一个Xilinx账号(注册是免费的)。找到Vitis 2021.2的下载页面,选择Linux版本的安装器。通常是一个名为 Xilinx_Unified_2021.2_1021_0703_Lin64.bin 这样的大文件,体积在70-80GB左右,因为它包含了Vivado、Vitis HLS等全套工具。
这么大的文件,直接用浏览器下载可能不太稳定。我常用的方法是,在浏览器里获取到下载链接后,用迅雷或者 axel、wget 等多线程下载工具来拉取,速度会快很多,也支持断点续传。下载完成后,记得校验一下MD5或SHA256,确保文件在下载过程中没有出错。
安装前,需要给安装文件添加可执行权限:
chmod +x Xilinx_Unified_2021.2_1021_0703_Lin64.bin
然后,我强烈建议你不要使用root身份直接运行安装,而是用普通用户启动安装程序,在需要提权时它会自己调用sudo。这样可以避免一些权限问题导致的安装目录所有权混乱。
./Xilinx_Unified_2021.2_1021_0703_Lin64.bin
图形化安装界面启动后,基本就是“下一步”大法。关键步骤在于选择安装类型和路径。对于初学者,选择 “Vitis Embedded Development” 或 “Vitis Accelerated Embedded Development” 通常就够了,这会包含Vivado Design Suite、Vitis HLS、Debugger等嵌入式开发必需组件。如果你确定用不到某些功能(比如数据中心加速),可以取消勾选以减少安装体积。安装路径我习惯放在 /opt/Xilinx 或者 /tools/Xilinx 下。注意,安装路径不要包含空格或中文等特殊字符,最好全英文。
安装过程会持续一段时间,喝杯咖啡慢慢等。但这里要警惕那个著名的“幽灵卡顿”问题:进度条走到大概三分之二,提示“Generating installed device list”时,可能会完全停止响应。如果你已经按照我前面说的安装了 libtinfo5,那么大概率能平稳度过。如果还是卡住了,可以尝试以下方法:
- 检查是否安装了
libncurses5:sudo apt install libncurses5。 - 手动运行安装后的库修复脚本(有时安装程序卡住但实际文件已拷贝完)。首先强制结束安装程序(Ctrl+C或在系统监视器中结束进程)。然后,假设你的安装目录是
/tools/Xilinx/Vitis/2021.2,运行:
这个脚本会检查和安装所有必需的运行时库。sudo /tools/Xilinx/Vitis/2021.2/scripts/installLibs.sh
安装完成后,先别急着启动。我们需要验证一下安装是否真的成功。可以尝试在终端中手动source一下环境设置脚本,看看有没有报错:
source /tools/Xilinx/Vitis/2021.2/settings64.sh
which vivado
which vitis
如果这两个命令能正确输出Vivado和Vitis可执行文件的路径,说明核心安装是OK的。
4. 部署Petalinux 2021.2:构建嵌入式Linux系统的利器
Vitis主要管硬件加速和FPGA设计,而嵌入式Linux系统则需要Petalinux来构建。Petalinux 2021.2的安装相比Vitis要简单直接一些,但前提是依赖库必须装全。
首先,同样从Xilinx官网下载Petalinux 2021.2的安装器,通常是一个类似 petalinux-v2021.2-final-installer.run 的文件。此外,我强烈建议你同时下载两个离线包:sstate-cache 和 downloads。这两个是啥呢?你可以把它们理解为“预制菜”和“食材仓库”。Petalinux在构建系统时,需要从网络下载海量的源码包(如Linux内核、BusyBox、各种库),并执行漫长的编译。使用离线包后,它可以直接从本地“食材仓库”(downloads)取用源码,并复用“预制菜”(sstate-cache)里已经编译好的中间成果,能将数小时的编译时间缩短到几十分钟,并且极大提高构建成功率,尤其是在网络不稳定的时候。
下载好安装器和离线包后,先给安装器执行权限:
chmod 755 petalinux-v2021.2-final-installer.run
接下来选择安装目录。官方文档通常建议安装在用户主目录下,但我觉得放在 /opt/pkg/petalinux 这样的系统目录下更规范,方便多个用户使用。但要注意,你需要有该目录的写入权限。可以这样操作:
sudo mkdir -p /opt/pkg/petalinux
sudo chown -R $USER:$USER /opt/pkg/petalinux # 将目录所有权改为当前用户
然后运行安装器,指定安装目录:
./petalinux-v2021.2-final-installer.run --dir /opt/pkg/petalinux/2021.2
安装过程是文本交互式的,需要你阅读并同意许可协议。安装很快,因为它主要是解压文件。
安装完成后,先不急着配置环境变量。我们来处理离线包。假设你把下载好的 sstate-aarch64-2021.2.tar.gz 和 downloads-2021.2.tar.gz 放在了 /mnt/hgfs/(你的共享文件夹)里。在Petalinux工程中,可以通过配置 premirror 和 SSTATE_MIRRORS 来指向这些本地路径。但更简单粗暴的方法是,在第一次创建工程前,直接解压到Petalinux安装目录下的对应位置(注意,先确认安装目录下是否有同名空文件夹):
cd /opt/pkg/petalinux/2021.2
tar -xzf /mnt/hgfs/downloads-2021.2.tar.gz # 这会解压出 components/downloads 目录
tar -xzf /mnt/hgfs/sstate-aarch64-2021.2.tar.gz # 这会解压出 components/sstate-cache 目录
这样,后续Petalinux在构建时就会自动优先使用本地的缓存了。
5. 配置XRT与系统环境变量:打通硬件加速的最后一环
XRT(Xilinx Runtime)是Vitis加速应用在运行时所需的库和守护进程。对于纯嵌入式开发(如Zynq MPSoC上运行Linux),XRT不是必须的。但如果你要做的是数据中心加速卡(Alveo)开发,或者希望在嵌入式平台上运行Vitis AI等加速应用,那么XRT就是关键一环。
XRT的安装非常简单,它是一个.deb包。你需要根据你的Ubuntu版本(20.04)和处理器架构(amd64)下载对应的XRT deb包。在Xilinx官网搜索“XRT”找到下载页面。下载后,直接使用dpkg安装:
sudo dpkg -i xrt_202120.2.12.427_20.04-amd64-xrt.deb
如果遇到依赖问题,可以运行 sudo apt --fix-broken install 来修复。
现在,所有工具都安装完毕,是时候把它们“激活”了。我们需要通过环境变量告诉系统这些工具在哪里。最常用的方法是在你的用户主目录下的 .bashrc 文件末尾添加source命令。
用文本编辑器打开 ~/.bashrc:
gedit ~/.bashrc
在文件末尾添加以下几行(请根据你的实际安装路径修改):
# Xilinx Vitis & Vivado 2021.2
source /tools/Xilinx/Vitis/2021.2/settings64.sh
# Petalinux 2021.2
source /opt/pkg/petalinux/2021.2/settings.sh
# Xilinx Runtime (XRT) - 仅用于数据中心平台或运行Vitis AI等加速应用
# source /opt/xilinx/xrt/setup.sh
注意,XRT的环境变量我暂时注释掉了。对于大多数嵌入式Linux开发者,前两个就够了。只有当你在目标板上运行需要硬件加速的应用程序时,才需要在目标板的Linux系统中安装并配置XRT,或者在主机开发环境中source它以编译加速应用。
保存文件后,关闭当前终端,重新打开一个新的终端。现在,你可以输入 petalinux- 然后按Tab键,如果能看到一系列命令补全(如 petalinux-create, petalinux-build),说明Petalinux环境配置成功了。输入 vivado 或 vitis 应该能启动相应的图形化界面。
6. 验证与创建第一个工程:从理论到实践的跨越
环境搭好了,不跑个“Hello World”心里总不踏实。我们来用最快的速度验证一下Vitis和Petalinux是否能协同工作。假设我们手头有一个Zynq UltraScale+ MPSoC的评估板(比如ZCU102)。
首先,我们用Vivado创建一个最简单的硬件设计。打开Vivado,选择“Create Project”,项目类型选择“RTL Project”,在“Default Part”里搜索并选择你的板卡型号(例如 xczu9eg-ffvb1156-2-e)。直接点击Finish创建空项目。在Flow Navigator里点击“Create Block Design”,添加一个Zynq UltraScale+ MPSoC的IP核,运行“Block Automation”应用默认配置,然后“Generate Output Products”并“Create HDL Wrapper”。最后,在“Generate Bitstream”上点击右键,选择“Generate Bitstream”。这个过程会综合并实现设计,生成一个.bit文件和一个.hdf(Hardware Description File)文件。我们主要是为了得到这个.hdf文件,它是Petalinux导入硬件配置的桥梁。
生成完成后,在菜单栏选择 File -> Export -> Export Hardware。在弹出窗口中,确保勾选“Include bitstream”,然后导出到一个目录,比如 ~/zcu102_hw/。这会得到 .xsa 文件(Vitis 2021.2开始使用.xsa替代了.hdf)。
接下来,切换到Petalinux。打开终端,我们创建一个Petalinux工程并导入刚才的硬件描述文件:
cd ~
source /opt/pkg/petalinux/2021.2/settings.sh
petalinux-create -t project --template zynqMP -n my_first_linux
cd my_first_linux
petalinux-config --get-hw-description=~/zcu102_hw/
最后一条命令会启动Petalinux的配置界面(基于menuconfig)。在这里,你可以配置内核、根文件系统、启动参数等。对于首次验证,我们直接使用默认配置即可,直接保存并退出。
现在,开始构建整个系统镜像:
petalinux-build
如果一切顺利,并且你配置了sstate-cache和downloads离线包,这个过程应该在半小时内完成。最终,在 images/linux 目录下,你会找到 image.ub(包含内核和设备树的FIT镜像)、rootfs.cpio.gz(根文件系统)以及 BOOT.BIN(包含FSBL、Bitstream和U-Boot的启动文件)等关键文件。将这些文件拷贝到SD卡,就可以启动你的开发板了。
7. 进阶配置与故障排除锦囊
即使按照上述流程一步步走,也难免会遇到一些“个性化”的问题。这里我分享几个自己踩过坑后总结的锦囊。
锦囊一:解决“python: not found”或Python版本问题。
Petalinux 2021.2强烈依赖Python 3。如果你的系统默认 python 命令指向的是Python 2,就会报错。可以通过创建软链接解决:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
或者,更干净的做法是在Petalinux配置中指定Python解释器。在 petalinux-config 的配置界面里,进入 Yocto Settings -> Local.conf Options,添加一行:
PREFERRED_PROVIDER_virtual/python3 = "python3-native"
PREFERRED_PROVIDER_virtual/python = "python3-native"
锦囊二:磁盘空间不足。 这是最常见的问题之一。Vitis安装需要约100GB,Petalinux构建一个工程又需要几十GB。确保你的虚拟机磁盘是动态分配且足够大(建议250GB以上)。如果构建过程中报空间不足,可以尝试清理Petalinux工程的下载缓存和构建缓存:
petalinux-build -x mrproper # 彻底清理工程,包括下载缓存(慎用!)
# 或者手动删除 build/ 和 downloads/ 目录(针对当前工程)
更优雅的方式是在创建工程时,通过 petalinux-config 修改 Local.conf,将 DL_DIR 和 SSTATE_DIR 指向一个更大容量的共享磁盘位置。
锦囊三:网络代理与下载失败。 Petalinux构建时需要从Yocto项目等开源仓库下载大量源码。如果你在公司内网需要代理,需要配置环境变量:
export http_proxy=http://your_proxy:port
export https_proxy=http://your_proxy:port
export ftp_proxy=http://your_proxy:port
export no_proxy=localhost,127.0.0.1,.yourcompany.com
在运行 petalinux-build 前设置好这些变量。更好的办法是把它们加到 ~/.bashrc 里。
锦囊四:共享文件夹权限与符号链接。
在Windows共享文件夹里解压或运行Linux安装包有时会出问题,因为NTFS文件系统对Linux符号链接的支持不完美。建议的流程是:将安装包通过共享文件夹拷贝到Ubuntu的本地ext4分区(如 /home/yourname/Downloads),然后在本地分区进行解压和安装操作。
锦囊五:图形界面启动失败。
如果你在服务器(无图形界面)上安装,或者通过SSH连接,运行Vivado/Vitis图形界面会失败。可以安装虚拟显示软件 xvfb 来运行无头模式下的工具,用于生成比特流等不需要交互的操作:
sudo apt install xvfb
xvfb-run vivado -mode batch -source your_tcl_script.tcl
对于Petalinux的 petalinux-config,可以使用 -c kernel 等非图形化配置命令,或者使用 bitbake -c menuconfig virtual/kernel 这样的Yocto原生命令进行配置。
环境搭建本身就是一个学习和排错的过程。每次遇到问题并解决它,你对这套工具链的理解就会更深一层。我的经验是,善用Xilinx官方论坛(Xilinx Community)和错误日志。大部分稀奇古怪的错误,论坛里都有先驱者遇到过并提供了解决方案。把终端里完整的错误信息复制下来去搜索,远比干瞪眼有效。最后,记得给你的虚拟机在关键步骤(如安装完系统、装好所有依赖、安装完Vitis/Petalinux后)打上快照,这是你最强大的“后悔药”。
更多推荐


所有评论(0)