3、开发环境搭建:Vitis统一软件平台安装、PetaLinux工具链配置、硬件描述文件(XSA)导出

说实话,做嵌入式视觉系统开发,环境搭建往往是第一道坎。很多人觉得不就是装个软件嘛,结果一搞就是两三天。我见过太多同事卡在这一步,不是版本对不上,就是路径配错了。今天咱们就把这事彻底捋清楚。

3.1 Vitis统一软件平台安装

Vitis这个平台,说白了就是AMD(原Xilinx)把原来的SDK和SDAccel整合到了一起。你装一个Vitis,就等于同时拥有了嵌入式开发、加速计算和AI推理的能力。我个人习惯是直接装Vitis Unified Software Platform,而不是分开装各个组件。

核心要点:Vitis安装包自带Vivado,所以不需要单独装Vivado。但要注意,Vitis和Vivado的版本必须严格对应。

安装步骤其实不复杂,但有几个坑我得提前说:

  1. 下载安装包——去AMD官网下载Vitis Unified Software Platform,大概20GB左右。嗯,记得用下载工具,别用浏览器直接下,容易断。
  2. 运行安装程序——选择“Vitis”组件,它会自动勾选Vivado和Vitis_HLS。我建议你把所有器件支持都勾上,省得后面换芯片又要重装。
  3. 设置安装路径——这里要注意,路径里不要有中文,不要有空格。我曾经有个同事把路径写成“D:\AMD 开发工具\Vitis 2024.1”,结果编译时各种报错,折腾了一下午才发现是空格的问题。
  4. 配置License——如果你有Node-Locked License,直接指定文件就行。如果是浮动License,记得设置环境变量XILINXD_LICENSE_FILE

我的小技巧:安装完成后,建议先跑一下Vitis自带的例程,比如"hello_world"。这能快速验证你的安装是否完整。我每次换电脑都会这么做,省得后面调试时才发现环境有问题。

3.2 PetaLinux工具链配置

PetaLinux是AMD专门为嵌入式Linux开发准备的工具链。你想想看,我们要在FPGA上跑Linux系统,还得把视觉算法部署上去,没有PetaLinux还真不行。

配置PetaLinux有几个前置条件,我列一下:

组件 版本要求 备注
操作系统 Ubuntu 20.04 / 22.04 LTS CentOS也行,但我更推荐Ubuntu
Vitis/Vivado 2023.2 或 2024.1 必须与PetaLinux版本一致
依赖包 gcc, make, flex, bison等 安装脚本会自动检查缺失项
磁盘空间 至少50GB 建议留100GB,编译时会生成大量临时文件

安装PetaLinux的流程是这样的:

# 1. 下载PetaLinux安装包(约10GB)
# 2. 赋予执行权限
chmod +x petalinux-v2024.1-*.run

# 3. 运行安装脚本
./petalinux-v2024.1-*.run --dir /opt/petalinux

# 4. 设置环境变量(建议加到.bashrc里)
source /opt/petalinux/settings.sh

# 5. 验证安装
petalinux-util --version

注意:PetaLinux对系统依赖包的要求很严格。我曾经在Ubuntu 22.04上装2023.2版本,结果缺少libtinfo5,折腾了半天。建议你安装前先运行petalinux-util --check-system,它会告诉你缺什么包。

配置完成后,我建议你创建一个最简单的工程试试手:

# 创建工程
petalinux-create --type project --template zynqMP --name test_project

# 进入工程目录
cd test_project

# 配置硬件描述
petalinux-config --get-hw-description=/path/to/xsa_file.xsa

# 编译
petalinux-build

第一次编译会比较慢,大概30分钟到1小时。你可以趁这个时间喝杯咖啡,或者看看文档。编译成功后,你会得到images/linux目录下的BOOT.BIN和image.ub,这两个文件就是我们要烧录到板子上的。

3.3 硬件描述文件(XSA)导出

XSA文件,全称是Xilinx Support Archive。它包含了FPGA的硬件配置信息,比如你用了哪些IP核、DDR的配置、时钟频率等等。PetaLinux就是靠这个文件来生成对应的设备树和驱动。

导出XSA的步骤,我习惯在Vivado里操作:

  1. 完成硬件设计——在Vivado里把Block Design做好,该连的线连好,该配的参数配好。
  2. 生成比特流——点击"Generate Bitstream"。这一步会综合、实现、生成bit文件。如果你的设计比较大,可能需要等很久。我记得有一次做4K视频处理,综合就跑了3个多小时。
  3. 导出XSA——点击菜单栏"File" → "Export" → "Export Hardware"。在弹出的对话框里,勾选"Include bitstream"。

关键点:一定要勾选"Include bitstream"!如果不勾,导出的XSA文件只有硬件描述,没有配置数据。PetaLinux编译时会报错,说找不到bit文件。我刚开始做的时候吃过这个亏,查了半天才发现是这里没勾。

导出后的XSA文件大概几MB到几十MB不等。我建议你把它放在一个专门的目录里,比如~/xsa_files/,方便管理。

另外,有个小细节:如果你修改了硬件设计,一定要重新导出XSA,然后重新配置PetaLinux工程。否则你烧录到板子上的Linux系统跟实际硬件不匹配,轻则某些外设不能用,重则系统起不来。

3.4 环境验证:跑通第一个Hello World

环境搭好了,总得验证一下。我习惯用Vitis自带的"Hello World"模板来测试:

# 1. 打开Vitis
vitis &

# 2. 创建新工程
# File → New → Application Project
# 选择你的硬件平台(导入XSA文件)
# 选择模板 "Hello World"

# 3. 编译
# 点击锤子图标,或者按Ctrl+B

# 4. 下载到板子
# 连接JTAG,点击运行按钮

如果一切顺利,你会看到串口输出"Hello World"。嗯,看到这行字,说明你的开发环境已经全部就绪了。

避坑指南:如果你用的是Zynq UltraScale+ MPSoC,记得检查板子的启动模式跳线。我曾经有一块板子,跳线默认是SD卡启动,结果我死活下载不进去程序。后来才发现是跳线没拨对。

好了,环境搭建就到这里。下一章咱们开始讲嵌入式视觉系统的整体架构设计。到时候我会结合一个实际的案例,带你看看怎么把摄像头、ISP、AI加速器这些东西串起来。