1. Vitis概述与环境搭建
各位同学好,我是你们的FPGA讲师。今天咱们聊聊Vitis——这个Xilinx推出的统一软件平台。说实话,我第一次接触Vitis时也有点懵,毕竟从SDSoC到Vitis,变化确实不小。但用顺手之后,你会发现它真的很强大。
1.1 Vitis统一软件平台介绍
Vitis是什么?简单说,它是一个面向异构计算的开发平台。你想想看,现在的FPGA设计越来越复杂,光靠硬件描述语言已经不够了。Vitis把硬件设计、软件开发、系统集成整合到了一起。
我个人习惯把Vitis理解成一个"大管家":
- 硬件层面:管理PL(可编程逻辑)的配置
- 软件层面:管理PS(处理系统)的代码
- 接口层面:处理两者之间的数据交互
说白了,Vitis就是让你能用C/C++写FPGA程序。嗯,这里要注意,不是所有逻辑都能用C写,但大部分加速核是可以的。
核心特点:Vitis支持OpenCL、C/C++、RTL等多种开发方式,兼容Xilinx所有主流器件。
1.2 Vitis与传统SDSoC/SDAccel的区别
很多老工程师问我:"Vitis和SDSoC到底有啥区别?" 我通常会打个比方:SDSoC是手动挡汽车,Vitis是自动挡。
| 特性 | SDSoC | SDAccel | Vitis |
|---|---|---|---|
| 开发语言 | C/C++ | OpenCL/C++ | C/C++/OpenCL/RTL |
| 目标器件 | Zynq系列 | 数据中心加速卡 | 全系列 |
| 调试方式 | 传统GDB | 仿真+硬件 | 统一调试器 |
| 库支持 | 有限 | 基础库 | Vitis库(丰富) |
我在项目中遇到过这样的情况:用SDSoC开发时,换个器件就得重新配置一堆东西。Vitis就好多了,一次配置,多平台复用。说白了,Vitis就是Xilinx把两个工具合并了,还加了不少新功能。
小提示:如果你之前用过SDSoC,迁移到Vitis其实不难。大部分代码可以直接复用,只是工程结构变了。
1.3 安装Vitis 2023.1
安装Vitis其实不复杂,但有几个坑我得提前说。我曾经因为安装路径带了中文,折腾了一下午。所以,请记住:
- 下载安装包:从Xilinx官网下载Vitis 2023.1,大约20GB左右
- 系统要求:Ubuntu 20.04/22.04 或 CentOS 7/8,内存至少16GB
- 安装步骤:
- 解压安装包:
tar -xzf Xilinx_Vitis_2023.1_*.tar.gz - 运行安装脚本:
./xsetup - 选择安装组件:建议全选(省得后面缺东西)
- 等待安装完成(约30分钟,取决于你的机器)
- 解压安装包:
警告:安装路径不要有中文或空格!磁盘剩余空间至少100GB。我见过有人装到一半磁盘满了,那叫一个惨。
1.4 设置环境变量
安装完Vitis,第一件事就是设置环境变量。不设置的话,你连Vitis命令都找不到。我个人习惯把配置写到 ~/.bashrc 里:
# 在 ~/.bashrc 末尾添加
source /opt/Xilinx/Vitis/2023.1/settings64.sh
source /opt/Xilinx/Vivado/2023.1/settings64.sh
# 验证是否生效
echo $XILINX_VITIS
# 应该输出:/opt/Xilinx/Vitis/2023.1
设置完后,记得 source ~/.bashrc 或者重新打开终端。嗯,这里要注意,如果你用的是csh或tcsh,得用对应的 settings64.csh 文件。
1.5 启动Vitis IDE
环境变量配好了,启动就简单了。直接在终端输入:
vitis
或者你想用图形界面的话:
vitis -workspace ~/vitis_workspace
第一次启动会慢一些,因为要加载各种插件。别急,喝杯咖啡的功夫就好了。
小技巧:我习惯把workspace放在SSD上,启动速度能快不少。机械硬盘的话...嗯,你懂的。
1.6 创建第一个Hello World工程
终于到了动手环节。咱们创建一个最简单的Hello World工程,跑在Zynq的ARM核上。
- 新建工程:File → New → Application Project
- 填写信息:工程名填
hello_world,选择你的开发板(比如ZCU102) - 选择模板:在模板列表里选
Hello World - 完成创建:点击Finish,Vitis会自动生成工程结构
生成的代码长这样:
#include <stdio.h>
#include "platform.h"
int main()
{
init_platform();
print("Hello World!\n\r");
cleanup_platform();
return 0;
}
这段代码很简单:初始化平台,打印"Hello World!",然后清理退出。但别小看它,这是你Vitis开发的第一步。
编译运行:
- 右键工程 → Build Project
- 编译成功后,右键工程 → Run As → Launch on Hardware
- 在串口终端上就能看到 "Hello World!" 了
避坑指南:我曾经在编译时遇到"找不到platform.h"的错误。后来发现是没选对开发板。记住,创建工程时一定要选对板子型号。
本章知识体系
下面这张图展示了Vitis开发的核心流程,从环境搭建到上板运行:
好了,第一章的内容就到这里。你跟着步骤走,应该能顺利跑起来。如果遇到问题,别慌,多半是环境变量没配好或者板子型号选错了。这些都是我踩过的坑,你避开了就好。