2、开发环境搭建:安装Vivado、SDK、PetaLinux,配置JTAG和串口,验证开发板连接

Zynq嵌入式系统开发的核心在于同时驾驭ARM处理器(PS端)与FPGA可编程逻辑(PL端),而这一切的起点是构建一套可靠、版本匹配的开发环境。本章将系统讲解Vivado、SDK(现集成于Vitis)、PetaLinux三大工具的安装要点,并深入剖析JTAG与UART串口的硬件连接原理与验证方法。环境搭建的成败往往不取决于软件安装本身,而在于对硬件链路(USB-JTAG桥接、电平转换、时钟复位)的深刻理解。我们将通过一个完整的“从零到点亮”的实战案例,确保你的开发板能够被主机稳定识别并完成数据交互。

Zynq开发环境搭建与硬件链路验证 主机PC (Windows/Linux) Vivado / Vitis / PetaLinux USB驱动 (Cable Drivers) 串口终端 (MobaXterm) USB (JTAG+UART) FTDI FT2232H Channel A: JTAG Channel B: UART TCK/TMS/TDI/TDO Zynq-7000 SoC (XC7Z020) PS: ARM Cortex-A9 双核 PL: Artix-7 逻辑资源 JTAG TAP 控制器 UART 控制器 (MIO14/15) UART_TX/RX (3.3V) 板级基础设施 电源树: 12V→5V→3.3V/1.8V/1.0V 时钟: 50MHz晶振→PS_CLK 复位: MIO复位按钮→PS_POR_B 供电/时钟/复位 验证测试点 TP1: VCCO_MIO0 (3.3V) TP2: UART_TX 空闲电平 TP3: JTAG TDO 回环 LED: PL 心跳灯 信号测量 硬件管理器 hw_server 检测链 设备ID: xc7z020 IR长度: 6位 USB枚举 图例 USB/数据链路 JTAG 信号 UART 信号

上图展示了Zynq开发环境搭建的核心硬件链路。主机通过一根USB线缆连接开发板上的FTDI FT2232H芯片,该芯片将USB协议转换为两路独立通道:Channel A用于JTAG调试(TCK/TMS/TDI/TDO),Channel B用于UART串口通信(TX/RX)。这两路信号分别连接到Zynq芯片的JTAG TAP控制器和PS端的UART控制器(MIO14/15)。理解这条链路是排障的基础——当开发板无法识别时,问题可能出现在USB驱动、FTDI芯片供电、JTAG信号完整性或Zynq电源时钟等多个环节。

2.1 核心原理:三大工具的分工与版本协同

Vivado、SDK(Vitis)与PetaLinux在Zynq开发中扮演着不同角色,但它们必须基于同一版本体系协同工作。Vivado负责PL端的逻辑设计、综合与比特流生成,同时也能创建PS端的硬件描述文件(XSA)。SDK(2019.2及以后版本为Vitis)运行在Vivado之上,用于编写、编译和调试ARM核的裸机或Linux应用代码。PetaLinux则是针对Xilinx SoC定制的嵌入式Linux构建工具,它依赖Vivado生成的XSA文件来配置内核设备树和启动镜像。

工具主要功能输出产物版本要求
VivadoPL逻辑设计、综合、实现、比特流生成.bit, .xsa2020.1及以上
Vitis/SDKPS端C/C++开发、调试、裸机BSP.elf, .bin与Vivado同版本
PetaLinuxLinux内核、根文件系统、U-Boot构建BOOT.BIN, image.ub需匹配Vivado版本

版本匹配是环境搭建中最容易忽视的坑。例如,Vivado 2020.1对应的PetaLinux版本是2020.1,如果混用2020.2的PetaLinux与2020.1的Vivado,生成的XSA文件可能无法被正确解析。建议在安装前查阅Xilinx官方《UG1144》文档中的版本兼容表。

2.2 操作流程:从安装到验证的完整步骤

环境搭建遵循“先软件后硬件,先驱动后工具”的原则。以下是经过验证的标准化流程:

  1. 安装Vivado/Vitis:下载“Vivado HLx 2020.1: All OS installer”,选择“Vivado ML Enterprise”或“Vitis”平台,勾选“Zynq-7000”器件支持。安装路径避免中文和空格,建议C:\Xilinx。安装完成后,务必运行“Cable Drivers”安装程序(位于安装目录\data\xicom\cable_drivers\nt64\dlc10_win7.exe),这是识别JTAG的关键。
  2. 安装PetaLinux:PetaLinux仅支持Linux主机(Ubuntu 18.04/20.04)。下载PetaLinux 2020.1安装包,执行./petalinux-v2020.1-final-installer.run,默认安装到/opt/pkg/petalinux。安装前需安装依赖库:sudo apt-get install -y gcc git make net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential zlib1g-dev:i386 screen pax gzip。
  3. 配置JTAG驱动:在Windows设备管理器中,确认“Xilinx USB Cable”出现在“通用串行总线控制器”下。若出现黄色感叹号,手动更新驱动指向C:\Xilinx\Vivado\2020.1\data\xicom\cable_drivers\nt64\。Linux下需添加用户到dialout组:sudo usermod -a -G dialout $USER。
  4. 连接开发板:使用Micro-USB线连接PC与开发板的“PROG/UART”接口。打开开发板电源,观察电源指示灯(通常为绿色)亮起。
  5. 验证JTAG链路:打开Vivado,点击“Open Hardware Manager”->“Open Target”->“Auto Connect”。若成功,将显示设备ID“xc7z020_1”和“xc7z020_2”(PS与PL各一个TAP)。
  6. 验证串口:在设备管理器中查看“Ports (COM & LPT)”,应出现“USB Serial Port (COMx)”和“USB Serial Port (COMy)”。COMx对应JTAG,COMy对应UART。使用MobaXterm或PuTTY连接COMy,波特率115200,数据位8,停止位1,无校验。
关键验证命令:在Vivado Tcl Console中执行get_hardware_devices,应返回类似xc7z020_1和xc7z020_2的列表。若返回为空,检查USB线是否为数据线(而非仅充电线),并尝试更换USB端口。

2.3 案例拆解:从零到点亮PS端LED的完整闭环

本案例的目标是验证整个工具链和硬件链路是否畅通,最终实现通过PS端MIO控制LED闪烁。我们选用ZedBoard开发板(XC7Z020-CLG484),该板卡具有板载FTDI芯片和两个LED(MIO7和MIO8)。

背景与约束:主机为Windows 10 64位,Vivado 2020.1,开发板通过USB线连接。初始现象是Vivado无法识别设备,设备管理器显示“未知USB设备”。

分析判断过程:首先检查USB线缆,更换为已知良好的数据线后问题依旧。接着检查FTDI芯片供电,用万用表测量板载3.3V测试点,电压正常。怀疑是驱动未正确安装,手动更新驱动指向Vivado安装目录下的cable_drivers,系统提示“驱动已是最新”,但设备仍异常。最后发现是Windows的驱动签名策略阻止了未签名驱动的加载,需在启动时按F8选择“禁用驱动程序强制签名”。

实际操作步骤:

  1. 重启电脑,开机时按F8进入高级启动选项,选择“禁用驱动程序强制签名”。
  2. 重新连接开发板,设备管理器自动识别为“Xilinx USB Cable”,并分配COM端口。
  3. 打开Vivado 2020.1,创建RTL工程,添加Zynq PS核(ZYNQ7 Processing System),保持默认配置。
  4. 在PS配置中,使能UART1(MIO14/15)和GPIO MIO7/MIO8为输出。
  5. 生成比特流,导出硬件到SDK(File->Export Hardware,勾选“Include bitstream”)。
  6. 在SDK中创建“Application Project”,模板选择“Hello World”,修改代码为循环翻转MIO7和MIO8。
  7. 连接开发板,下载比特流和ELF文件,观察LED以约1Hz频率闪烁。

结果对比:驱动修复前,Vivado无法连接目标;修复后,硬件管理器显示两个设备ID,串口终端输出“Hello World”和LED闪烁日志。整个排障耗时约40分钟,其中驱动签名问题占30分钟。

风险与代价:禁用驱动签名会降低系统安全性,仅建议在开发环境使用。若使用Linux主机,则无此问题,但需注意权限配置。

复盘经验:遇到USB设备无法识别,优先检查驱动签名策略,其次才是硬件问题。建议在Windows上安装Vivado后立即重启并禁用驱动签名,避免后续排障。

2.4 常见误区与总结复盘

环境搭建的常见误区集中在三个方面:版本不匹配、驱动安装不完整、硬件连接错误。版本不匹配会导致XSA文件无法导入或PetaLinux构建失败;驱动安装不完整表现为JTAG无法识别但串口正常;硬件连接错误则包括使用了仅充电的USB线、未连接板载电源跳线、JTAG链上多个设备地址冲突等。

风险提示:切勿在开发板通电状态下插拔JTAG线缆,这可能导致FTDI芯片或Zynq的JTAG引脚损坏。正确做法是:先连接USB线,再上电;断电前先断开USB连接。

另一个常见误区是混淆了PS端和PL端的JTAG链。Zynq内部有两个TAP:PS_TAP和PL_TAP,它们通过一条菊花链连接。在Vivado硬件管理器中,你会看到两个设备ID,这是正常现象。如果只显示一个,说明PL端电源未开启或PL_TAP被禁用。