3. 开发环境搭建
Zynq 平台的开发环境不是“装一个 IDE”那么简单,而是由硬件设计、软件工程、Linux 系统构建、板级调试四条工具链协同组成。以 AMD 官方工具为例,Vivado 负责 PL 逻辑与 Block Design,Vitis 负责裸机/独立应用与异构程序,PetaLinux 负责 Linux 镜像与设备树,而 JTAG 与串口则构成从主机到目标板的物理调试通道。本节按“工具职责—安装要点—链路连接—验证方法”的顺序展开,帮助读者搭起一条可复现的最小开发链路。
一、四条工具链的职责边界
先明确各工具在工程中的位置,避免混用:
- Vivado:完成 Zynq PS 配置(DDR、时钟、MIO、外设使能)、PL 逻辑设计、约束与综合实现,最终导出
.xsa硬件描述文件。它是所有后续工具的“源头”。 - Vitis:导入
.xsa,创建平台工程(Platform Project)与应用工程(Application Project),支持裸机(standalone)与 Linux 应用开发,并生成 FSBL、BOOT.bin 等启动文件。 - PetaLinux:基于 Yocto 构建 Linux 内核、根文件系统、设备树与启动镜像,输出
BOOT.BIN、image.ub、rootfs,适合网关类需要完整 Linux 的场景。 - SDK/IDE:旧版 Xilinx SDK 已被 Vitis 取代,但许多存量工程仍以 SDK 工程形式存在;理解其与 Vitis 的对应关系有助于迁移旧项目。
四者关系可用下图表示:Vivado 输出硬件描述,Vitis 与 PetaLinux 分别消费它生成软件与系统镜像,最终通过 JTAG/串口落到板卡上运行。
二、安装与版本选择
AMD 工具对版本匹配非常敏感。建议 Vivado、Vitis、PetaLinux 使用同一大版本(例如统一为 2022.2 或 2023.2),否则 .xsa 导入、设备树生成、FSBL 编译都可能报错。安装时注意:
- Vivado 安装勾选 Zynq-7000 与 Zynq UltraScale+ 器件系列,避免后续无法综合。
- Vitis 通常随 Vivado 一起安装,也可单独安装;确认包含“Embedded Software Development”组件。
- PetaLinux 是独立安装包,依赖主机上的
bash、python3、gcc、git、tar、cpio等,官方提供petalinux-util依赖检查脚本。 - Linux 主机建议 Ubuntu 20.04/22.04 LTS,磁盘预留 200 GB 以上,因为 PetaLinux 构建缓存较大。
.xsa 时注意路径与换行符。三、JTAG 与串口调试链路
JTAG 与串口是两条独立但互补的通道,实际调试中通常同时连接:
| 通道 | 物理接口 | 主要用途 | 典型参数 |
|---|---|---|---|
| JTAG | 板载 14 针或 2×5 排针,接 Platform Cable USB / Digilent HS2 | 下载 bitstream、FSBL 调试、CPU 断点、寄存器与内存查看 | 频率 1–10 MHz,Vivado/Vitis 中设置 |
| 串口 | USB-UART 桥(CP210x / FT232) | U-Boot 与 Linux 控制台、启动日志、登录交互 | 115200 bps,8 数据位,无校验,1 停止位 |
连接顺序建议:先接 JTAG,再接串口,最后上电。上电前用 lsusb(Linux)或设备管理器(Windows)确认调试器与串口芯片均被识别。Linux 下串口设备通常为 /dev/ttyUSB0 或 /dev/ttyUSB1,可用以下命令打开:
# 查看串口设备
ls /dev/ttyUSB*
# 以 115200 8N1 打开串口(minicom)
sudo minicom -D /dev/ttyUSB0 -b 115200
# 或使用 picocom
sudo picocom -b 115200 /dev/ttyUSB0
若串口无输出,先确认波特率、线序(TX/RX 是否交叉)、板卡是否已上电,以及 U-Boot 是否配置了正确的 console 设备。JTAG 侧则可在 Vivado Hardware Manager 中执行 Open Target → Auto Connect,若能识别到 xc7z020 等器件 ID,说明 JTAG 链路正常。
四、最小验证流程
环境搭好后,建议用一条最小链路验证四件工具是否贯通:
- 在 Vivado 中新建 Zynq 工程,仅使能 UART1 与 DDR,生成
.xsa。 - 在 Vitis 中导入
.xsa,创建 Hello World 应用,编译生成.elf。 - 通过 JTAG 下载 bitstream 与
.elf,在串口终端应看到 “Hello World” 输出。 - 若需 Linux,则在 PetaLinux 中
petalinux-create工程、petalinux-config --get-hw-description导入.xsa,构建后在串口看到内核启动日志。
.xsa 报“hardware handoff 版本不匹配”,通常是 Vivado 与 Vitis 版本不一致;串口乱码多为波特率或时钟配置错误;JTAG 无法识别器件则检查排线方向与目标板供电。