Vitis新手避坑指南:从Vivado 2020.1工程导入到第一个Hello World(图文详解)

📅 发布时间:2026/7/5 14:26:08 👁️ 浏览次数:
Vitis新手避坑指南:从Vivado 2020.1工程导入到第一个Hello World(图文详解)
Vitis 新手避坑指南从 Vivado 2020.1 工程到第一个 Hello World如果你是从 Vivado 2019.2 或更早版本迁移过来的 FPGA 开发者第一次打开 Vivado 2020.1 时可能会有点懵——那个熟悉的 “Launch SDK” 按钮消失了。这不是你的错觉也不是软件安装出了问题而是 Xilinx 进行了一次重大的工具链整合。从 2020.1 版本开始传统的 SDK 功能被完全集成到了Vitis™ 统一软件平台中。对于习惯了在 Vivado 和 SDK 之间来回切换的工程师来说这既是挑战也是机遇。挑战在于操作界面、项目流程和工作流都发生了显著变化机遇在于Vitis 提供了一个更统一、更强大的环境用于开发从嵌入式应用到 AI 加速的各类系统。本文将手把手带你走过从 Vivado 导出硬件平台到在 Vitis 中创建并运行第一个 “Hello World” 应用的完整流程并重点指出那些容易“踩坑”的关键节点帮你平滑过渡到新的开发环境。1. 环境准备与核心概念澄清在动手之前理清几个核心概念至关重要这能帮你理解 Vitis 的设计哲学避免后续操作中的困惑。首先Vitis 不再是一个单纯的嵌入式软件开发工具。它是一个平台旨在支持从边缘到云的全栈应用开发涵盖了嵌入式处理系统如 MicroBlaze 或 Zynq 的 ARM 核和可编程逻辑PL上的加速器开发。对于我们这些从 SDK 迁移过来的用户最关心的部分是它的Vitis IDE组件你可以将其理解为原 SDK 的“超级进化版”。它继承了 SDK 的嵌入式软件开发功能并整合了更强大的调试、性能分析和系统级项目管理能力。其次工作流发生了根本性变化。过去我们在 Vivado 中完成硬件设计包括处理器系统生成.hdf文件然后在 SDK 中基于此创建应用。现在Vivado 导出的硬件描述文件变成了XSA (Xilinx Support Archive)文件。这个文件不仅包含了硬件比特流和硬件描述信息还封装了平台元数据是 Vitis 理解你硬件平台的唯一入口。注意Vivado 2020.1 安装包默认不包含 Vitis。你需要单独下载并安装 Vitis 统一软件平台。安装时请确保选择包含 “Embedded Development” 或 “Application Acceleration Development” 的组件。为了确保环境就绪请检查以下清单Vivado 2020.1用于硬件设计和生成 XSA 文件。Vitis 2020.1用于嵌入式软件开发。版本号必须与 Vivado 匹配。一个可用的 Vivado 硬件工程该工程必须包含一个处理器系统例如 MicroBlaze 或 Zynq 系列的 ARM 核并配置了必要的外设如用于打印的 UART。如果你的 Vivado 工程还没有处理器系统那么第一步是回去把它补上。一个典型的 “Hello World” 最小系统通常包括处理器核MicroBlaze 或 ARM Cortex-A9/A53。时钟与复位逻辑。用于程序运行的块存储器BRAM或外部存储器控制器DDR。一个用于串口输出的 UART IP 核并正确映射到物理引脚。2. 从 Vivado 导出硬件平台 (XSA 文件)这是整个流程的起点也是第一个容易出错的环节。操作本身并不复杂但选项的理解至关重要。在 Vivado 2020.1 中完成硬件设计、综合、实现并生成比特流后不要关闭工程。我们需要导出硬件平台。在 Vivado 的菜单栏中点击File - Export - Export Hardware。在弹出的对话框中你会看到两个关键选项Include bitstream务必勾选。这会将生成的.bit文件打包进 XSA后续 Vitis 可以直接用它来配置 FPGA。Pre-synthesis, Post-synthesis, Post-implementation对于要运行软件的应用必须选择Post-implementation。这个选项导出的 XSA 包含了布局布线后的精确硬件时序和资源信息是软件运行的基石。选择其他选项可能会导致软件无法正确识别硬件外设地址或运行时不稳定。导出选项包含内容适用场景Pre-synthesis仅 RTL 和 IP 配置早期软件协同仿真Post-synthesis综合后的网表功能验证不含时序Post-implementation布局布线后的网表 时序约束 比特流实际硬件上的软件开发与调试点击OK选择一个合适的路径和文件名例如my_hardware_platform.xsa保存。Vivado 会开始打包过程这可能需要几分钟时间。提示建议将 XSA 文件保存在一个独立的、路径中不含中文或空格的目录中。Vitis 对项目路径的支持比 SDK 更严格复杂的路径有时会引发意想不到的工具链错误。导出成功后你就可以关闭 Vivado 了。接下来的所有工作都将在 Vitis 中进行。3. 在 Vitis 中创建平台与应用程序项目Vitis 的启动方式与 SDK 不同。你不能再从 Vivado 内部启动它。你需要像启动一个独立软件一样从开始菜单或桌面快捷方式打开 “Vitis IDE”。初次启动会让你设置一个工作空间Workspace这和 EclipseSDK 的基础的惯例一致。进入 Vitis 主界面后我们遵循“先平台后应用”的步骤。3.1 创建平台项目 (Platform Project)平台项目是 Vitis 引入的新概念它基于你导出的 XSA 文件构建出一个包含硬件描述、板级支持包BSP、启动文件等完整内容的软件运行环境。点击菜单栏File - New - Platform Project。在 “Platform Project” 对话框中输入项目名称例如my_platform。在 “Hardware Specification” 页面点击 “Browse” 按钮选择你刚才导出的.xsa文件。Vitis 会自动识别硬件信息。在 “Software Specification” 页面你需要选择操作系统和处理器。对于简单的裸机Baremetal “Hello World”按如下配置Operating System选择standalone独立/裸机。Processor根据你的硬件选择例如ps7_cortexa9_0Zynq-7000或microblaze_0。点击Finish。Vitis 会基于 XSA 生成平台项目并自动构建 BSP。你可以在 “Platform Project” 视图下看到生成的文件结构。3.2 创建应用项目 (Application Project)有了平台就可以在上面“盖房子”开发应用了。点击菜单栏File - New - Application Project。第一步 “Platform” 中从列表中选择你刚刚创建的my_platform。这是将应用绑定到特定硬件平台的关键。输入应用项目名称如hello_world。在 “Templates” 页面Vitis 提供了丰富的示例模板。滚动找到“Hello World”模板并选中它。这个模板会自动生成包含print语句的主函数并配置好 UART 驱动是我们快速验证环境的绝佳起点。点击Finish。Vitis 会创建应用项目并自动将其与平台项目的 BSP 关联起来。此时你的 Vitis 项目浏览器视图应该类似下图结构hello_world_system ├── hello_world [应用项目] │ ├── src │ │ └── helloworld.c │ └── Debug/Release 配置 └── my_platform [平台项目] ├── export └──硬件描述与BSP4. 配置、构建与硬件验证创建项目只是开始正确的配置和构建设置是成功运行的最后一道关卡。4.1 关键配置检查在构建之前有几处配置必须核对主动域 (Active Domain)右键点击你的应用项目hello_world选择C/C Build Settings。在 “Settings” 标签页下确保Active Domain选择了正确的处理器和操作系统例如my_platform → standalone on ps7_cortexa9_0。这一步确保了编译器使用正确的 BSP 头文件和链接脚本。串口配置由于 “Hello World” 需要通过 UART 打印我们必须确保 BSP 中的串口驱动配置正确。在平台项目my_platform下找到并打开platform.spr文件。在 “Overview” 视图中找到 “standalone” 域下的串口驱动设置检查其是否指向你硬件设计中实际使用的 UART IP 实例和基地址。通常如果你使用了模板这里会自动匹配。4.2 构建项目配置无误后就可以开始构建了。在项目浏览器中右键点击hello_world应用项目。选择Build Project。Vitis 会依次编译 BSP 库、你的应用程序源代码并将它们链接成可在目标硬件上执行的.elf文件。观察底部的 “Console” 视图如果看到Build Finished且没有错误可能有警告通常不影响说明构建成功。4.3 硬件连接与程序运行这是最激动人心也最容易“卡壳”的一步。你需要将开发板连接到电脑。硬件连接使用 JTAG 下载器如 Digilent USB-JTAG连接开发板的 JTAG 接口用于下载比特流和程序。同时使用 USB 转串口线连接开发板的 UART 引脚到电脑用于查看打印信息。在电脑的设备管理器中记下串口对应的 COM 端口号如 COM3。配置运行目标在 Vitis 中点击菜单栏Window - Show View - Other…在对话框中选择Target Connections视图并打开。在 “Target Connections” 视图中右键点击 “Localhost” 下的服务器选择Launch Hardware Server。确保你的开发板已上电服务器应能自动检测到 JTAG 链上的器件。运行配置右键点击hello_world项目选择Run As - Launch on Hardware (Single Application Debug)。如果是第一次运行Vitis 会弹出运行配置对话框。在 “Target Setup” 标签页确认硬件服务器连接正常。在 “STDIO Connection” 标签页这是关键中的关键勾选 “Connect STDIO to Console”。在 “Port” 下拉框中选择你之前记下的串口 COM 号如 COM3。将波特率设置为与你硬件设计中 UART IP 一致的速率通常是 115200。点击Run。Vitis 会执行以下操作通过 JTAG 将比特流来自 XSA下载到 FPGA。将编译好的.elf程序下载到处理器的内存中。启动处理器运行程序。查看结果程序运行后立即切换到 Vitis 的Terminal视图如果没打开通过Window - Show View - Terminal打开。在 Terminal 视图中你应该能看到经典的 “Hello World” 打印信息。如果没看到请检查串口连接、波特率设置以及 BSP 中的 UART 驱动配置。第一次在 Vitis 中看到串口终端打印出 “Hello World” 时那种从旧工具链成功迁移到新环境的成就感是每个工程师都值得体验的。这个过程看似步骤繁多但一旦走通你就会发现 Vitis 在项目管理、多核调试、性能分析等方面带来的便利远超旧的 SDK。记住遇到问题时多检查 XSA 导出选项、平台-应用的绑定关系以及串口 STDIO 的连接配置这三个是新手最常见的“坑点”。