1. Vitis概述与环境搭建:Vitis统一软件平台介绍、安装Vitis与XRT运行时、设置环境变量与验证安装
1.1 什么是Vitis统一软件平台?
说实话,我第一次接触Vitis的时候,心里是有点懵的。以前做FPGA开发,大家用的都是Vivado,写RTL代码、跑仿真、下板子,一套流程走下来挺顺的。但后来Xilinx(现在叫AMD)推出了Vitis,很多人一开始都不太理解——这到底是个啥?
我个人的理解是这样的:Vitis本质上是一个统一软件平台。它把传统的FPGA开发流程,跟嵌入式软件开发、AI推理、数据加速这些东西揉在了一起。说白了,就是让你能用C/C++、Python甚至OpenCL来写FPGA程序,而不是非得写Verilog。
嗯,这里要注意一点:Vitis并不是要取代Vivado。Vivado依然是底层工具,负责综合、布局布线这些硬活儿。Vitis是在Vivado上面搭了一层软件抽象,让你能更高效地做应用开发。
核心概念:Vitis = Vivado(底层硬件工具)+ XRT(运行时库)+ 各种加速库 + 开发框架
我在项目中遇到过不少团队,他们一开始觉得Vitis太复杂,想绕过去。但后来发现,如果要做异构计算(CPU+FPGA协同),Vitis几乎是绕不开的。你想想看,用传统方式写一个PCIe驱动、再写一个DMA控制器、再写应用层代码,没几个月搞不定。而Vitis把这些都封装好了。
1.2 安装Vitis与XRT运行时
安装这件事,我踩过不少坑。先说说整体流程:
- 下载安装包——去AMD官网下载Vitis统一软件平台安装包。注意版本,我个人建议用最新的LTS版本,稳定一些。
- 安装Vitis——运行安装程序,选择你要安装的组件。这里有个关键点:一定要勾选“Vitis”和“Vivado”,因为Vitis依赖Vivado做底层编译。
- 安装XRT——XRT是Xilinx Runtime的缩写,它是Vitis的运行时环境。安装包通常在Vitis安装目录下的
xrt文件夹里。
我曾经犯过的错:第一次安装时,我只装了Vitis,没装XRT。结果编译出来的程序在板子上跑不起来,报了一堆“找不到库”的错误。折腾了两天才发现是XRT没装。所以,Vitis和XRT必须一起装,缺一不可。
安装命令(以Ubuntu 20.04为例):
# 安装Vitis(假设安装包在 /opt 目录下)
cd /opt
sudo ./xilinx-vitis-2023.2-042
# 安装XRT
sudo apt install ./xrt_202320.2.14.0_20.04-amd64-xrt.deb
# 安装XRT依赖
sudo apt install libboost-dev libssl-dev libcurl4-openssl-dev
安装完成后,建议重启一下系统。为什么?因为XRT会加载一些内核模块,重启后这些模块才能正常生效。
1.3 设置环境变量
环境变量这个东西,说简单也简单,说复杂也复杂。我见过不少新手,装完Vitis后直接运行vitis命令,结果提示“命令未找到”。其实就是环境变量没设好。
你需要设置以下几个关键环境变量:
| 环境变量 | 说明 | 示例值 |
|---|---|---|
XILINX_VITIS |
Vitis安装路径 | /opt/Xilinx/Vitis/2023.2 |
XILINX_XRT |
XRT安装路径 | /opt/xilinx/xrt |
LD_LIBRARY_PATH |
动态库搜索路径 | $XILINX_XRT/lib |
PATH |
可执行文件搜索路径 | $XILINX_VITIS/bin:$XILINX_XRT/bin |
我个人习惯把这些设置写进~/.bashrc文件里,这样每次打开终端就不用重新设了:
# 编辑 ~/.bashrc
echo 'source /opt/Xilinx/Vitis/2023.2/settings64.sh' >> ~/.bashrc
echo 'source /opt/xilinx/xrt/setup.sh' >> ~/.bashrc
source ~/.bashrc
小技巧:如果你同时装了多个版本的Vitis,建议用alias命令给每个版本起个别名。比如:alias vitis2023='source /opt/Xilinx/Vitis/2023.2/settings64.sh'。这样切换版本就方便多了。
1.4 验证安装是否成功
装完了,环境变量也设好了,怎么知道对不对?我一般用三步验证法:
- 检查Vitis版本——运行
vitis -version,看能不能正常输出版本信息。 - 检查XRT版本——运行
xbutil examine,这个命令会列出当前系统里检测到的FPGA设备。 - 编译一个简单的Hello World——用Vitis创建一个最简单的工程,编译通过就算成功。
具体命令如下:
# 第一步:检查Vitis
vitis -version
# 输出示例:Vitis v2023.2 (64-bit)
# 第二步:检查XRT
xbutil examine
# 输出示例:System Configuration
# OS Name: Linux
# XRT Version: 2.14.0
# 第三步:编译Hello World(假设你已经有一个简单的工程)
cd /path/to/hello_world
make all
# 如果编译成功,会生成 .xclbin 和 host 可执行文件
为什么会这样?因为Vitis的编译流程比较特殊,它需要同时生成硬件配置文件(.xclbin)和主机端可执行文件。如果这两步都成功了,说明你的环境基本没问题。
避坑指南:我曾经遇到过一种情况——Vitis能正常启动,但编译时总报“找不到XRT头文件”。后来发现是LD_LIBRARY_PATH没设对。XRT的头文件在$XILINX_XRT/include目录下,库文件在$XILINX_XRT/lib下。如果编译时提示找不到xrt.h,八成是路径没加对。
1.5 知识体系结构图
下面这张图是我自己画的,帮你理清Vitis环境搭建的整体脉络:
这张图里,我把整个环境搭建分成了三个核心模块:Vitis平台、XRT运行时、环境变量。它们之间是层层依赖的关系——Vitis依赖XRT做运行时支持,XRT依赖环境变量来定位路径。最后,通过三步检查法来验证整个链路是否打通。
1.6 一些心里话
说实话,Vitis环境搭建这件事,说难不难,说简单也不简单。我见过有人半小时搞定,也有人折腾了一周还在报错。关键点就三个:版本匹配、路径正确、依赖完整。
如果你在安装过程中遇到问题,别慌。先检查一下:
- Vitis和XRT的版本是否匹配?
- 环境变量是否生效?用
echo $XILINX_VITIS看看。 - 依赖库是否都装了?用
ldd命令检查一下XRT的库文件。
嗯,基本上就这些。环境搭好了,后面的事情就顺了。
最后一个小建议:建议在虚拟机里先练一遍安装流程,熟悉了再到真实板卡上操作。这样即使搞砸了,也不会影响你的开发环境。