2. 开发环境搭建:Vivado与Vitis安装配置、Petalinux工具链安装、JTAG调试器驱动配置

做Zynq开发,第一步就是把工具链搭起来。说实话,这一步看着简单,但坑不少。我见过太多新手卡在环境上,一卡就是好几天。今天咱们就把这事彻底理清楚。

2.1 Vivado与Vitis的安装配置

Vivado是Xilinx的硬件设计工具,Vitis是软件开发环境。从2019.2版本开始,Vitis已经集成到Vivado安装包中了。我个人习惯用2020.1或2021.1,这两个版本比较稳定。

版本选择建议:

  • Zynq-7000系列:推荐Vivado 2020.1 ~ 2021.1
  • Zynq UltraScale+:推荐Vivado 2021.1以上
  • 不要追最新版,稳定第一

2.1.1 安装步骤

  1. 下载安装包:从Xilinx官网下载,大约40GB。建议用下载工具,别用浏览器直接下。
  2. 运行安装程序:Linux下给xsetup执行权限,Windows下直接双击。
  3. 选择版本:选Vivado HL WebPACK或Design Edition。Zynq-7000用WebPACK就够了。
  4. 勾选组件:必须勾选"Vivado"和"Vitis"。我建议把"Device Support"全选,省得后面缺器件文件。
  5. 安装路径:不要有中文路径,不要有空格。我习惯放/opt/Xilinx或C:\Xilinx。

注意:安装过程中会提示安装驱动。Windows下一定要勾选"Install Cable Drivers",否则JTAG用不了。我曾经因为没勾这个,折腾了一下午才发现问题。

2.1.2 环境变量配置

装完以后,需要配置环境变量。Linux下我一般这样配:

# 在 ~/.bashrc 或 ~/.zshrc 中添加
source /opt/Xilinx/Vivado/2020.1/settings64.sh
source /opt/Xilinx/Vitis/2020.1/settings64.sh

# 验证是否生效
which vivado
which vitis

Windows下会自动添加环境变量,但有时候会漏。你可以手动检查一下系统环境变量里有没有XILINX_VIVADO和XILINX_VITIS。

2.2 Petalinux工具链安装

Petalinux是Xilinx官方的嵌入式Linux开发工具。说白了,它帮你自动生成Linux内核、设备树、根文件系统。省去了手动配置的麻烦。

2.2.1 系统要求

项目 要求
操作系统 Ubuntu 18.04 / 20.04(推荐)
磁盘空间 至少100GB
内存 至少8GB,建议16GB
CPU 4核以上

我的经验:Petalinux对Ubuntu版本很挑剔。2020.1版本只支持Ubuntu 18.04,2021.1支持20.04。如果你用其他发行版,可能会遇到各种依赖问题。我建议直接装一个Ubuntu 20.04的虚拟机,省心。

2.2.2 安装步骤

  1. 安装依赖包:
sudo apt update
sudo apt install -y gawk wget git diffstat unzip texinfo gcc build-essential \
chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils \
iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \
pylint3 xterm python3-distutils
  1. 下载Petalinux安装包:从Xilinx官网下载,约10GB。
  2. 运行安装脚本:
chmod +x petalinux-v2020.1-final-installer.run
./petalinux-v2020.1-final-installer.run /opt/petalinux/2020.1
  1. 配置环境变量:
source /opt/petalinux/2020.1/settings.sh

注意:Petalinux不能以root用户安装和运行。我曾经在root下试过,结果编译到一半报错,查了半天才发现是权限问题。一定要用普通用户。

2.2.3 验证安装

petalinux-util --version
# 输出类似:PetaLinux v2020.1 (x86_64)

如果能正常输出版本号,说明安装成功了。

2.3 JTAG调试器驱动配置

JTAG调试器是连接PC和Zynq开发板的桥梁。Xilinx官方用的是Digilent的调试器,比如JTAG-HS3、JTAG-SMT2。也有第三方的,比如SEGGER J-Link。

2.3.1 Linux下的驱动配置

Linux下,Xilinx的JTAG调试器使用libusb驱动。默认情况下,系统会把调试器识别为普通USB设备,普通用户没有权限访问。需要配置udev规则。

  1. 创建udev规则文件:
sudo nano /etc/udev/rules.d/99-xilinx-jtag.rules
  1. 添加以下内容:
# Xilinx JTAG调试器
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6014", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6010", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="1366", ATTR{idProduct}=="0101", MODE="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="1443", ATTR{idProduct}=="0007", MODE="0666"
  1. 重新加载udev规则:
sudo udevadm control --reload-rules
sudo udevadm trigger
  1. 验证驱动:
lsusb | grep -E "0403|1366|1443"
# 应该能看到调试器设备

常见调试器ID对照表:

调试器型号 Vendor ID Product ID
Digilent JTAG-HS3 0403 6014
Digilent JTAG-SMT2 0403 6010
Xilinx Platform Cable USB II 1366 0101
Xilinx USB Cable 1443 0007

2.3.2 Windows下的驱动配置

Windows下相对简单。安装Vivado时,如果勾选了"Install Cable Drivers",驱动会自动装好。如果没有,可以手动安装:

  1. 打开设备管理器,找到带黄色感叹号的设备。
  2. 右键更新驱动,选择"浏览我的电脑以查找驱动程序"。
  3. 路径选择:C:\Xilinx\Vivado\2020.1\data\xicom\cable_drivers\nt64\
  4. 安装完成后,设备会显示为"Xilinx USB Cable"。

注意:Windows下如果驱动安装失败,可能是数字签名问题。需要禁用驱动签名强制验证。具体操作:重启电脑,按F8进入高级启动选项,选择"禁用驱动程序签名强制"。

2.3.3 测试JTAG连接

驱动装好后,可以用Vivado的硬件管理器测试连接:

# 打开Vivado
vivado

# 在Tcl Console中输入
open_hw_manager
connect_hw_server
open_hw_target

# 如果能看到设备,说明JTAG连接正常

也可以用命令行工具测试:

# 列出JTAG设备
lsusb -v | grep -E "iSerial|iProduct"

# 或者用Vivado的hw_server
hw_server -d
# 输出应该显示检测到的JTAG设备

2.4 环境验证与常见问题

装完所有工具后,我建议做一个完整的验证。创建一个最简单的Zynq工程,编译一下,看看能不能正常跑通。

我的习惯:每次装完环境,我都会用petalinux-create -t project --template zynq -n test创建一个测试工程,然后petalinux-build。如果能编译通过,说明环境没问题。这一步虽然花点时间,但能避免后面出大问题。

2.4.1 常见问题排查

问题 原因 解决方法
Vivado启动报错 缺少libtinfo.so.5 sudo apt install libtinfo5
Petalinux编译失败 磁盘空间不足 清理/tmp目录,或设置PETA_TMP_DIR
JTAG无法识别 udev规则未生效 重新插拔USB线,或重启udev服务
Vitis无法启动 Java版本不兼容 安装OpenJDK 11

2.5 开发环境整体架构

下面这张图展示了整个开发环境的架构关系。你看一眼就能明白各个工具是怎么配合的。

Zynq开发环境架构图 Zynq开发环境架构图 硬件设计层 Vivado:硬件描述、IP集成、综合实现、比特流生成 Vivado HLS:高层次综合,C/C++转RTL 软件设计层 Vitis:嵌入式软件开发、调试、性能分析 Petalinux:Linux内核、设备树、根文件系统生成 调试与部署层 JTAG调试器:硬件调试、比特流下载、Linux内核调试 串口终端:Linux控制台、应用日志输出 箭头表示数据流向

从这张图你能看到,整个开发流程是自上而下的。先用Vivado做好硬件设计,生成比特流和硬件描述文件。然后用Vitis或Petalinux做软件开发。最后通过JTAG调试器把程序下载到板子上,用串口终端查看运行结果。

总结一下:

  • Vivado负责硬件,Vitis负责软件,Petalinux负责Linux系统
  • JTAG调试器是连接PC和开发板的桥梁
  • 环境搭建的关键是版本匹配和驱动配置
  • 装完后一定要做完整验证,别偷懒

嗯,环境搭建这块就讲到这里。工具链装好了,后面咱们就能真正开始做项目了。记住,环境问题是最容易解决的,也是最容易卡住人的。按照上面的步骤来,应该不会出大问题。如果遇到什么奇怪的问题,先检查版本匹配,再检查驱动,最后检查权限。这三板斧下去,90%的问题都能解决。