2. Versal硬件平台与开发环境搭建

Versal ACAP 与传统的 Zynq-7000、Zynq UltraScale+ MPSoC 在架构上有本质区别:它不再只是“PS+PL”两大部分,而是由标量处理单元(PS)、可编程逻辑(PL)、AI Engine(AIE)阵列以及硬核 NoC 组成的异构计算平台。因此,在动手搭建开发环境之前,必须先明确自己手上的板卡属于哪一类 Versal 器件、有哪些可用接口,再决定安装哪些工具、配置哪些调试通道。本节围绕“选板—装工具—配通道—导出平台”这条主线展开,最终目标是得到一个可以被 PetaLinux 和 Vitis 共同使用的 XSA 硬件平台文件。

一、开发板选型与接口资源确认

Versal 系列目前主要分为 AI Core 系列(如 VC1902、VCK190 评估板)、AI Edge 系列(如 VE2302、VEK280)以及 Prime 系列(如 VMK180)。选型时最需要关注的是三个维度:AI Engine 的行列规模、可用 PL 逻辑资源、以及板上外设与调试接口。以常见的 VCK190 评估板为例,它搭载 VC1902 器件,包含 400 个 AI Engine、约 190 万逻辑单元,板载 8GB DDR4、千兆以太网、USB-UART、JTAG 以及 SFP+ 光口等。

在正式使用前,建议先做一次“接口资源盘点”,把后续要用到的通道逐一确认清楚。下面这张图给出了 Versal 开发板从物理接口到主机开发环境的连接拓扑,可作为实际接线时的对照参考。

Versal 开发板接口与主机调试通道拓扑 Versal 开发板(VC1902 示例) PS PL AIE NoC / DDR4 控制器 USB-UART JTAG 千兆以太网 SD / eMMC 主机开发环境(Ubuntu 20.04) Vivado 2023.2 Vitis 2023.2 PetaLinux 2023.2 串口终端 / TFTP / NFS 串口控制台 JTAG 下载/调试 以太网 / TFTP

盘点时建议记录:UART 对应的 /dev/ttyUSBx 编号、JTAG 是否需要外接下载器(VCK190 板载 FT4232 可直接通过 USB 访问)、以太网口 IP 规划(例如主机 192.168.1.10、板卡 192.168.1.20)。这些信息在后续配置 PetaLinux 和 Vitis 时会反复用到。

二、Vivado/Vitis 统一开发环境安装

从 2020.1 起,AMD 将 Vivado 与 Vitis 合并为统一安装器(Xilinx Unified Installer),一次安装即可获得完整工具链。安装前先确认磁盘空间:完整安装约需 100GB 以上,建议预留 150GB。安装步骤如下:

# 1. 下载统一安装器(以 2023.2 为例)
#    Xilinx_Unified_2023.2_1013_2256_Lin64.bin

# 2. 赋予执行权限并启动
chmod +x Xilinx_Unified_2023.2_1013_2256_Lin64.bin
./Xilinx_Unified_2023.2_1013_2256_Lin64.bin

# 3. 安装类型选择 Vitis(含 Vivado、Vitis、Model Composer)
#    器件系列勾选 Versal 与 Zynq UltraScale+
#    安装路径建议:/tools/Xilinx

# 4. 安装完成后加载环境变量
source /tools/Xilinx/Vitis/2023.2/settings64.sh
source /tools/Xilinx/Vivado/2023.2/settings64.sh

安装过程中有两个容易忽略的点:一是必须勾选 Versal 器件系列,否则后续无法生成 Versal 的 XSA;二是 Linux 下需要提前安装 libtinfo5、libncurses5 等依赖库,否则安装器可能中途报错。安装完成后可用 vivado -version 和 vitis -version 验证。

三、PetaLinux 工具链部署

PetaLinux 是构建嵌入式 Linux 系统的核心工具,它依赖 Vivado 生成的 XSA 文件。安装 PetaLinux 前,需要先安装一批主机依赖包:

sudo apt-get install -y gcc g++ make python3 python3-pip \
  tftpd-hpa openssh-server iproute2 net-tools libncurses5-dev \
  zlib1g-dev libssl-dev flex bison libselinux1 xterm autoconf \
  libtool texinfo gawk chrpath diffstat build-essential

随后安装 PetaLinux 本体,并设置环境变量:

# 安装(默认路径 /opt/pkg/petalinux/2023.2)
./petalinux-v2023.2-10121855-installer.run --dir /opt/pkg/petalinux/2023.2

# 每次使用前加载环境
source /opt/pkg/petalinux/2023.2/settings.sh
echo $PETALINUX   # 应输出 /opt/pkg/petalinux/2023.2

需要注意,PetaLinux 对主机系统版本有明确要求(2023.2 官方支持 Ubuntu 20.04/22.04),且必须使用 bash 而非 dash。若 echo $PETALINUX 无输出,说明环境变量未正确加载,后续 petalinux-create 会直接失败。

四、串口、JTAG 与网络调试通道配置

三条调试通道各有分工:串口用于查看 U-Boot 和 Linux 启动日志、登录控制台;JTAG 用于下载 PL 配置、调试 PS 和 AIE;网络用于 TFTP 传输镜像、NFS 挂载根文件系统。配置要点如下:

  • 串口:VCK190 的 USB-UART 通常枚举为 /dev/ttyUSB0(PS UART0)和 /dev/ttyUSB1(PS UART1)。使用 sudo minicom -D /dev/ttyUSB0 -b 115200 或 sudo picocom -b 115200 /dev/ttyUSB0 连接,参数为 115200-8-N-1,无流控。
  • JTAG:板载 FT4232 通过 USB 连接后,用 lsusb 应能看到 0403:6011。Vivado Hardware Manager 中 Open Target → Auto Connect 即可识别。若识别不到,检查是否已加载 ftdi_sio 驱动并安装 cable 驱动。
  • 网络:主机配置静态 IP,例如 sudo ip addr add 192.168.1.10/24 dev eth0;板卡 U-Boot 中设置 ipaddr=192.168.1.20、serverip=192.168.1.10。主机侧启动 TFTP 服务,将 BOOT.BIN、image.ub 放入 /srv/tftp。
建议在主机 /etc/hosts 中为板卡添加固定名称,并在串口终端中开启日志记录(minicom 的 -C 参数),便于后续排障时回溯启动信息。

五、首个硬件平台导出流程

硬件平台导出的本质是:在 Vivado 中完成 Block Design 并生成比特流后,导出一个包含硬件描述、比特流和地址映射的 XSA 文件。以最小系统为例,Block Design 中至少需要实例化 Versal ACAP 器件、配置 PS 的 DDR4 和 UART、并引出 PL 时钟。综合实现通过后,执行以下操作:

# 在 Vivado Tcl Console 中导出 XSA
write_hw_platform -fixed -include_bit -force \
  -file /home/user/projects/versal_base/versal_base.xsa

# 验证 XSA 内容
unzip -l versal_base.xsa

导出的 XSA 应包含 sysdef.xml(硬件定义)、*.bit(比特流)以及 psu_init 相关文件。随后在 PetaLinux 中创建工程并导入该 XSA:

petalinux-create -t project --template versal -n versal_linux
cd versal_linux
petalinux-config --get-hw-description=/home/user/projects/versal_base/

若 petalinux-config 能正常进入菜单并识别到硬件描述,说明 XSA 导出成功。此时可进一步执行 petalinux-build 生成 BOOT.BIN 和 image.ub,再通过串口与 TFTP 验证启动。判断平台是否可用的直接依据是:串口能打印 U-Boot 版本信息,且 Linux 内核能挂载根文件系统并进入登录提示符。

XSA 导出时若未勾选 Include bitstream,PetaLinux 仍可构建,但 PL 配置不会随 BOOT.BIN 加载,后续需要手动通过 JTAG 或 FPGA Manager 加载比特流。建议首次导出时始终包含比特流,减少调试环节。