1. Vitis开发环境搭建:Vitis统一软件平台概述、安装Vitis和XRT、配置FPGA开发板、验证环境
大家好,我是你们的FPGA实战讲师。今天咱们来聊聊Vitis开发环境搭建这件事。
说实话,我见过太多同学卡在环境搭建这一步。明明代码写得挺好,结果环境没配好,折腾一整天连个灯都没点亮。所以这一章,我带你一步步把地基打牢。
1.1 Vitis统一软件平台概述
Vitis是什么?说白了,它就是Xilinx(现在是AMD)推出的一个统一开发平台。以前我们做FPGA开发,要用Vivado写硬件逻辑,再用SDK写嵌入式软件,两个工具切来切去,烦得很。
Vitis把这两件事合二为一了。你可以在一个界面里完成硬件设计、软件编写、调试和部署。我个人习惯叫它「一站式FPGA开发平台」。
它支持什么?
- 嵌入式开发:ARM Cortex-A/R系列处理器 + FPGA逻辑
- 加速计算:把计算密集的任务扔到FPGA上跑
- AI推理:配合DPU核做深度学习加速
- 数据流处理:视频、网络、雷达等高速数据
嗯,这里要注意:Vitis不是Vivado的替代品,而是它的上层工具。硬件底层还是靠Vivado来综合、布局布线。Vitis更像是一个「软件工程师视角的FPGA开发工具」。
核心概念:Vitis = 软件开发环境 + 硬件抽象层 + 运行时库。你写C/C++代码,Vitis帮你生成能在FPGA上跑的二进制文件。
1.2 安装Vitis和XRT
安装这件事,我踩过不少坑。有一次我装了个2020.2版本,结果跟系统内核不兼容,折腾了两天才发现是XRT驱动的问题。所以我把经验总结成下面几步:
1.2.1 系统要求
| 项目 | 推荐配置 | 最低配置 |
|---|---|---|
| 操作系统 | Ubuntu 20.04 / 22.04 LTS | Ubuntu 18.04 |
| 内存 | 32 GB | 16 GB |
| 硬盘 | SSD 500 GB | HDD 250 GB |
| CPU | 8核以上 | 4核 |
我个人建议用Ubuntu 20.04,兼容性最好。Windows也能装,但坑更多,我不推荐。
1.2.2 安装步骤
- 下载安装包:从AMD官网下载Vitis Unified Software Platform,大约20GB左右。记得选对版本,我一般用最新的LTS版本。
- 运行安装脚本:
./xsetup,图形界面引导安装。选择「Vitis」和「XRT」组件。 - 安装XRT驱动:XRT是运行时库,负责主机和FPGA之间的通信。安装命令:
# 安装XRT
sudo apt install ./xrt_202420.2.12.0_20.04-amd64-xrt.deb
# 安装FPGA板卡驱动
sudo apt install ./xilinx-u200-xrt_202420.2.12.0_20.04-amd64.deb
小技巧:安装完成后,运行 xbutil examine 检查XRT是否正常工作。如果看到「No devices found」,别慌,可能是驱动没加载,重启一下就好。
1.2.3 环境变量配置
安装完别忘了配环境变量。我习惯把下面这段加到 ~/.bashrc 里:
# Vitis环境变量
source /tools/Xilinx/Vitis/2024.2/settings64.sh
source /opt/xilinx/xrt/setup.sh
export XILINX_XRT=/opt/xilinx/xrt
然后 source ~/.bashrc 生效。你可以用 echo $XILINX_VITIS 验证,如果输出版本号,说明配好了。
1.3 配置FPGA开发板
开发板配置这块,我遇到过最离谱的事:有次学员拿着块ZCU102,插上电脑没反应,折腾半天发现是JTAG线没插紧。所以咱们按流程来:
1.3.1 连接开发板
- 电源线:12V直流供电,注意正负极
- JTAG/USB线:用于下载和调试
- 网线:如果做网络通信实验
- 串口线:打印调试信息
插好之后,打开终端运行 lsusb,如果看到「Xilinx, Inc.」的设备,说明板子被识别了。
1.3.2 安装板级支持包
不同开发板需要不同的BSP(Board Support Package)。以Zynq-7000系列为例:
# 下载BSP
wget https://www.xilinx.com/member/forms/download/.../xilinx-zynq-v2024.2.bsp
# 在Vitis中导入
Vitis -> File -> New -> Board Support Package
注意:BSP版本必须和Vitis版本一致。我曾经用2023.2的BSP配2024.2的Vitis,结果编译报了一堆莫名其妙的错误。血的教训啊。
1.3.3 验证板卡通信
运行下面这个命令,检查板卡是否正常:
xbutil examine
# 正常输出示例
Devices present:
[0] : xilinx_u200_gen3x16_xdma_1
Board UUID : 04A35F0A1B2C3D4E5F6A7B8C9D0E1F2A
DSA : xilinx_u200_gen3x16_xdma_1
...
如果看到类似输出,恭喜你,板子连上了。
1.4 验证环境
环境搭好了,咱们跑个简单的「Hello World」验证一下。这个程序不复杂,就是让FPGA上的LED灯闪烁。
1.4.1 创建Vitis工程
- 打开Vitis,点击
Create Application Project - 选择你的开发板型号(比如Zynq-7000)
- 选择模板:
Hello World或Empty Application - 填写工程名,点击Finish
1.4.2 编写测试代码
在 src 目录下新建 main.c:
#include <stdio.h>
#include "xparameters.h"
#include "xgpio.h"
XGpio gpio;
int main() {
int status;
u32 led_value = 0;
// 初始化GPIO
status = XGpio_Initialize(&gpio, XPAR_AXI_GPIO_0_DEVICE_ID);
if (status != XST_SUCCESS) {
printf("GPIO初始化失败!\n");
return XST_FAILURE;
}
// 设置GPIO方向为输出
XGpio_SetDataDirection(&gpio, 1, 0x0);
printf("LED闪烁开始...\n");
while (1) {
// 点亮LED
XGpio_DiscreteWrite(&gpio, 1, 0x1);
sleep(1);
// 熄灭LED
XGpio_DiscreteWrite(&gpio, 1, 0x0);
sleep(1);
}
return XST_SUCCESS;
}
1.4.3 编译与下载
- 点击工具栏的
Build按钮(锤子图标) - 编译成功后,右键工程 ->
Run As->Launch on Hardware - 观察开发板上的LED灯是否以1秒间隔闪烁
验证小技巧:如果LED不亮,先检查串口输出。在Vitis的Console窗口能看到printf打印的信息。如果连「GPIO初始化失败」都没打印,说明程序根本没跑起来,检查JTAG连接。
知识体系总览
下面这张图帮你理清Vitis开发环境的整体架构:
这张图展示了Vitis开发环境的四层架构。从底层的FPGA硬件,到工具链,再到上层应用,最后是验证手段。每一层都依赖下一层,缺一不可。
好了,环境搭建就讲到这里。你按照这个流程走一遍,应该不会出大问题。如果卡住了,回头看看我提到的那些坑,八成能解决。
可可精品资料库