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 安装步骤

  1. 下载安装包:从AMD官网下载Vitis Unified Software Platform,大约20GB左右。记得选对版本,我一般用最新的LTS版本。
  2. 运行安装脚本:./xsetup,图形界面引导安装。选择「Vitis」和「XRT」组件。
  3. 安装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工程

  1. 打开Vitis,点击 Create Application Project
  2. 选择你的开发板型号(比如Zynq-7000)
  3. 选择模板:Hello World 或 Empty Application
  4. 填写工程名,点击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 编译与下载

  1. 点击工具栏的 Build 按钮(锤子图标)
  2. 编译成功后,右键工程 -> Run As -> Launch on Hardware
  3. 观察开发板上的LED灯是否以1秒间隔闪烁

验证小技巧:如果LED不亮,先检查串口输出。在Vitis的Console窗口能看到printf打印的信息。如果连「GPIO初始化失败」都没打印,说明程序根本没跑起来,检查JTAG连接。

知识体系总览

下面这张图帮你理清Vitis开发环境的整体架构:

Vitis开发环境知识体系 硬件层 FPGA芯片(Zynq/Kintex/Virtex) + 开发板(ZCU102/U200/VCK190) 工具层 Vitis IDE + Vivado(硬件综合) + XRT(运行时库) 软件层 C/C++应用程序 + OpenCL加速核 + AI推理框架 验证层 xbutil examine + 串口调试 + LED闪烁测试

这张图展示了Vitis开发环境的四层架构。从底层的FPGA硬件,到工具链,再到上层应用,最后是验证手段。每一层都依赖下一层,缺一不可。

好了,环境搭建就讲到这里。你按照这个流程走一遍,应该不会出大问题。如果卡住了,回头看看我提到的那些坑,八成能解决。

可可精品资料库