Vitis Unified IDE (2023.2)文档

原文档 https://docs.xilinx.com/r/en-US/ug1400-vitis-embedded/Using-the-Vitis-Unfied-IDE

中文文档 https://docs.xilinx.com/r/zh-CN/ug1400-vitis-embedded/%E4%BD%BF%E7%94%A8-Vitis-Unified-IDE

Vitis 软件平台中的工作空间结构 Workspace Structure

工作空间

打开 Vitis 统一软件平台时,会创建工作空间。工作空间即供 Vitis 统一软件平台用于存储工程数据和元数据的目录位置。初始工作空间位置必须在启动 Vitis 软件平台时提供。

Workspace

When you open the Vitis unified software platform, you create a workspace. A workspace is a directory location used by the Vitis unified software platform to store project data and metadata. An initial workspace location must be provided when the Vitis software platform is launched.

XSA

XSA 是从 Vivado Design Suite 导出的。它包含各种硬件规格,例如,处理器配置属性、外设连接信息、地址映射和器件初始化代码等。创建平台工程时,必须提供 XSA。

XSA

XSAs are exported from the Vivado Design Suite. It has the hardware specifications like processor configuration properties, peripheral connection information, address map, and device initialization code. You have to provide the XSA when creating a platform project.

平台

目标平台(或称平台)是由硬件组件 (XSA) 和软件组件(域/BSP、FSBL 之类的启动组件等)组合而成的。存储库内的平台不可编辑。工作空间内的平台可编辑,称为平台组件。

Platform

The target platform or platform is a combination of hardware components (XSA) and software components (domains/BSPs, boot components such as FSBL, and so on). Platforms in the repository are not editable. Platforms in the workspace are editable, and are referred to as platform components.

平台组件

平台组件是 Vitis Unified IDE 中用于定义平台的工程。

Platform Component

A platform component is a project in Vitis Unified IDE to define a platform.

域即板级支持包 (BSP) 或操作系统 (OS),其中包含软件驱动程序集合,您可在其中构建自己的应用。创建的软件镜像仅包含 AMD 库中的部分内容,即您在自己的嵌入式设计中使用的部分。您可创建多个应用并在同一个域上运行。在平台中,每个域都绑定到单个处理器或者一个由同构处理器组成的集群(例如:A53_0 或 A53)。

Domain

A domain is a board support package (BSP) or the operating system (OS) with a collection of software drivers on which to build your application. The created software image contains only the portions of the AMD library you use in your embedded design. You can create multiple applications to run on the domain. A domain is tied to a single processor or a cluster of isomorphic processors (for example: A53_0 or A53) in the platform.

系统工程

系统工程用于将任一器件上同时运行的应用组合在一起。在系统工程中,同一个处理器的两个独立应用不能组合在一起。在系统工程中,2 个 Linux 应用可以组合在一起。每个工作空间均可包含多个系统工程。 应用(软件工程) 每个软件工程包含一个或多个源文件以及必要的头文件,以允许编译和生成二进制输出 (ELF) 文件。每个系统工程均可包含多个应用工程。每个软件工程都必须包含一个对应的域。

System Project

A system project groups together applications that run simultaneously on a device. Two standalone applications for the same processor cannot sit together in a system project. Two Linux applications can sit together in a system project. A workspace can contain multiple system projects.

应用(软件工程)

每个软件工程包含一个或多个源文件以及必要的头文件,以允许编译和生成二进制输出 (ELF) 文件。每个系统工程均可包含多个应用工程。每个软件工程都必须包含一个对应的域。

Application (Software Project)

A software project contains one or more source files, along with the necessary header files, to allow compilation and generation of a binary output (ELF) file. A system project can contain multiple application projects. Each software project must have a corresponding domain.

meg169 图:Zynq UltraScale+ MPSoC 的 Vitis 软件开发工作空间示例

  • 您可以为 Arm® Cortex®-A53 SMP 集群创建 Linux 集群。可以基于 Linux 域的 sysroot 所提供的库来编译和链接 Linux 应用。
  • Arm Cortex-A53 核 0 与 Arm Cortex®-R5F 核 0 可以同时运行 Hello World 应用,这两个应用可组合到同一个系统工程内。
  • Arm Cortex-A53 核 0 上的裸机内置自检应用可以在自有系统工程内运行并采用自有 BSP 设置。 这些系统工程用于管理多个应用组件。在单个系统工程中添加多个应用组件意味着这些应用将同时运行。如果每次仅运行一个应用,则无需系统工程。
  • FSBL 和 PMU 固件等启动组件可以在平台工程内自动创建。启动组件具有自己的 BSP 设置。

Vitis Unified IDE 视图和功能特性 View and Feature

gzn

  1. 位于屏幕左侧的Toolbar(工具栏)菜单支持轻松访问该工具的主要功能特性:Vitis Component Explorer(组件资源管理器)、Search(搜索)功能、Source Control(源码控制)、Debug(调试)视图、Examples(示例)和Analysis(分析)视图。
  2. Vitis Component Explorer可用于查看工作空间的虚拟层级。此视图显示了一个工作空间,其结构有助于您了解组件或工程的不同元素,例如,磁盘上不存在的“Sources and Outputs”(源码和输出)文件夹。
  3. Central Editor(中心编辑器)窗口用于编辑组件、配置和源文件。
  4. Flow Navigator显示了活动组件的设计流程。不同组件具有不同的工作流程,在Flow Navigator中显示的是活动组件的工作流程。您可在Flow Navigator或Component Explorer中选中组件以将其指定为活动组件。
  5. Console/Terminal(控制台/终端)区域显示的是该工具的输出转录文本,Terminal窗口和Pipeline(流水线)视图等其他窗口也位于此处。“Terminal”窗口显示的是工作空间的文件夹,可用于对内容运行脚本。
  6. Index(索引)显示的是会话期间运行的各种构建步骤的转录文本列表,支持您重新打开先前关闭的进程转录文本。

开发 Develop

本章节旨在描述您如何使用 AMD Vitis™ 集成设计环境 (IDE) 来创建和管理目标平台和应用。

目标平台

在 Vitis 统一软件平台中,应用的运行时环境称为目标平台。目标平台由硬件组件 (XSA) 和软件组件(域、FSBL 或 PLM 之类的启动组件等)组合而成。

平台工程是工作空间内的可定制目标平台。您可添加、修改或移除平台工程中的域。您也可以启用、禁用和修改启动组件。域称为板级支持包 (BSP) 或操作系统 (OS),其目标为同构处理器的单一处理器或集群(例如,含 SMP Linux 的 4x Cortex®-A53 集群)。每个平台可包含的域数量无限。

A platform project is a customizable target platform in a workspace. You can add, modify, or remove domains in a platform project. You can also enable, disable, and modify boot components. A domain is referred as a BSP or an OS, which targets one processor or a cluster of isomorphism processors (for example, a 4x Cortex®-A53cluster with SMP Linux). A platform can contain unlimited domains.

本章节旨在解释如何创建硬件设计,以及如何使用该硬件设计来创建应用工程。

创建硬件设计(XSA 文件)

AMD 硬件设计是使用 AMD Vivado™ Design Suite 创建的,可以赛灵思支持存档 (XSA) 专属文件格式导出,以供 Vitis 软件平台使用。

常规步骤如下所示:

  • 创建 Vivado 工程。
  • 创建块设计。
  • 生成镜像或比特流。
  • 使用File -> Export -> Export Hardware(文件 > 导出 > 导出硬件)以导出硬件,然后选择Fixed Platform(固定平台)选项。

基于 XSA 创建平台组件 Platform Component

  1. 单击 Vitis Unified IDE 中的File(文件)选项,然后选中New ComponentPlatform(新建组件 > 平台)。
  2. 打开Create Platform ComponentWizard(创建平台组件向导)。
  • 输入“Component name”(组件名称)和“Component location”(组件位置),然后单击Next(下一步)。
  • 选择Browse(浏览)查找 XSA 文件,或者选择基于现有平台创建平台,或者使用下拉菜单选择内置 XSA 文件。内置固定 XSA 文件仅包含 PS 初始化。单击Next。
  • 选择 XSA 后,该工具会读取 XSA 并识别可用的处理器和操作系统域。为平台指定Operating system(操作系统)和Processor(处理器),单击Next以继续转至Summary(汇总)页面。
  • Summary页面反映了您在前几个页面上的选择。请复查汇总信息并单击Finish(完成)以创建平台组件,或者单击Back(返回)以返回至先前页面并更改您的选择。

为现有平台添加域 Adding a Domain

每个平台均可包含多个域,以支持不同的操作系统并以不同的处理器为目标。当前支持三种类型的域:Linux 域、FreeRTOS 域和独立(或裸机)域。

  1. 在当前工作空间内,展开Component Explorer(组件资源管理器)下的平台组件以打开Settings(设置)文件夹并选中 vitis-comp.json 文件。
  2. 单击+按钮以Add Domain(添加域)。
  3. 指定Name(名称)和Display name(显示名称)。
  4. 对于OS(操作系统),请选中“Linux”、“FreeRTOS”或“Standalone”(独立)。
  5. 从可用“Processors”(处理器)中选择所需处理器。可选“Processor”随所选OS而变。
  6. 单击OK(完成),将域添加到平台。

对于 FreeRTOS 域和 Standalone 域,会为其创建板级支持包 (BSP)。您可指定要在 BSP 中包含的库。

对于 Linux 域,您可从平台中选择新的 Linux 域来配置其附加详细信息。Boot Components Directory(启动组件目录)必须包含 BIF 所需的所有组件。这些组件可由 PetaLinux 生成。

配置域 Configuring a Domain

域有多种不同类型,其中最常用的是独立域。每个域都有关联的 BSP,可进行广泛配置。此外,域概述页面还包含该域的其他设置。

独立域概述页面与 FreeRTOS 域概述页面完全相同,提供与 QEMU 仿真平台相关的少量配置选项。这些选项是使用预定义的安装文件路径来自动填充的。Linux 域概述页面类似于独立页面,但包含更多配置选项。

切换 FSBL 目标处理器 Switching FSBL Targeting Processor

创建平台时,可为 FSBL 选择目标处理器。创建工程后,可以将其目标调整为 Zynq UltraScale+ MPSoC 器件上的其他处理器。要将平台组件目标调整为 Cortex-R5F,请执行以下步骤。

  1. 单击平台组件,展开Settings(设置)并双击vitis-comp.json文件。
  2. 选择psu_cortexa53_0zynqmp_fsbl。
  3. 单击Re-target to psu_cortexr5_0(重定向至 psu_cortexr5_0)。
  4. 重新构建平台。

修改 FSBL 源代码

在平台生成阶段选中启动组件生成时,会在平台组件内创建 FSBL 应用。要修改这些应用的源代码,请执行以下步骤。

  1. 要修改 FSBL 的源代码,请转至对应平台并展开Source(源代码)。
  2. 展开 zynqmp_fsbl_bsp 文件夹,并修改内部源文件。
  3. 保存更改,并以新更改来重新构建平台。

应用 Applications

在 Vitis 中,嵌入式应用表示一种特定类型的软件应用,该类应用设计为在嵌入式系统或嵌入式平台上运行。在 Vitis 环境内,嵌入式应用通常具有以下特征:

以嵌入式系统为目标

嵌入式应用程序旨在于嵌入式硬件系统上运行,而这些系统通常资源有限,且专为特定任务而设计。这类系统覆盖范围广泛,从小型微控制器到嵌入式 FPGA 或 SoC(片上系统)等更复杂的器件都包含在内。

实时或资源有限

嵌入式应用经常需要满足实时约束或者在严格的资源限制下运行。它们必须高效利用可用的 CPU、存储器和 I/O 资源,以可靠和可预测的方式来执行任务。

多样化的用例

Vitis 中的嵌入式应用可满足各种用途,从控制物联网(IoT)器件、管理传感器和执行器、运行实时控制算法到执行信号处理、通信等都能轻松应对。

硬件集成

嵌入式应用可能会与硬件组件和外设紧密交互。它们通常需要特定的器件驱动程序和低层次硬件访问,以便与传感器、电机、通信接口和其他嵌入式硬件对接。

开发环境

Vitis 提供的开发环境允许开发者在自己的目标硬件平台上创建、编译和部署嵌入式应用。它包含用于代码开发、调试和性能最优化的各种工具。

交叉编译

嵌入式应用通常采用交叉编译,即在主机上开发,但编译后可在含不同架构的目标嵌入式系统上运行。

基于示例创建应用组件 application component

您可通过以下步骤基于示例创建应用组件:

  1. 转至ViewExamples,或者单击“File”(文件)中的New → Component From Example(新建 > 基于示例创建组件),或者单击左侧工具栏,或者使用Ctrl + Shift + R快捷键来打开示例视图。
  2. 单击示例列表中的示例。
  3. 单击“Show”(显示),其中显示了模板的详细要求。
  4. 单击Create Application Component from Template。

创建应用组件

要创建应用组件,您可选中FileNew ComponentApplication(文件 > 新建组件 > 应用)。

  1. 输入应用组件名称并指定位置。单击Next(下一步)
  2. 选择固定平台,然后单击Next。
  3. 选择处理器域用于运行您的应用,然后单击Next。
  4. 复查应用组件的汇总页面,然后单击Finish(完成)以创建组件。
  5. 导入源文件

创建系统工程组件

  1. 转至FileNew ComponentSystem Project(文件 > 新建组件 > 系统工程)。这样会自动显示New System Project(新建系统工程)对话框。
  2. 输入系统工程名称和系统工程位置。单击Next。
  3. 选择系统工程的平台。单击Next。
  4. 在“Embedded Component Path”(嵌入式组件路径)设置对话框中,执行嵌入式开发时,无需设置镜像路径。单击Next。
  5. 请复查系统工程汇总信息,然后单击Finish(完成)。这样就会在组件视图内显示该系统工程。

在系统工程组件内管理多个应用

系统工程可包含多个应用,这些应用可在器件上同时运行。同一个处理器的两个应用不能保持在同一个系统工程内。例如,在 AMD Zynq™ UltraScale+™ MPSoC 器件上, Cortex®-A53 上运行的独立应用和 Cortex®-R5F 上的应用如果预计将同时运行,则可保持在同一个系统工程内。但 Cortex-A53 上的应用和 Linux 中的应用不能组合到同一个系统工程内,因为这些应用使用相同的 Cortex-A53 处理器。

以下步骤演示了将两个应用添加到同一个系统工程的流程:

  1. 单击系统工程并展开Settings(设置),单击vitis-sys.json打开该工程。
  2. 单击System Project SettingsComponentsAdding Existing Components(系统工程设置 > 组件 > 添加现有组件)。
  3. 单击Application(应用)弹出视图,并选择您的工作空间内的应用组件。

运行、调试和最优化

启动配置

要调试、运行和剖析应用,则必须创建启动配置以采集用于执行应用的设置。为此,请转至 Flow Navigator 并选中应用组件,右键单击Run(运行)或Debug(调试)旁的Open Settings(打开设置)。

打开 launch.json 文件后即可供您编辑启动配置。Launch Configuration(启动配置)编辑器顶部有一个工具栏菜单,如下图所示。启动配置的具体内容因所选组件或工程而异。

xop

目标连接

Target Connections(目标连接)对话框 允许您配置多个远程目标。它可显示已连接的目标,并提供可供您添加或删除目标连接的选项。

Vitis 软件平台通过 AMD hw_server 来建立目标连接。为了连接到远程目标,硬件服务器代理程序必须在远程主机上运行,且该远程主机已连接到目标硬件。

目标连接已扩展到 Vitis Unified IDE 内的所有实用工具,这些实用工具会在运行时处理各目标。

要建立目标连接,可使用本地开发板或远程开发板。默认情况下,在Target Connection(目标连接)视图中选择本地目标连接。您可通过检查本地连接来确认到本地开发板的连接。

运行应用组件

  1. 转至 Flow Navigator 并选择要运行的应用组件。
  2. 单击“Open Settings”启动配置。请参阅 启动配置 以了解有关启动和配置启动配置文件的信息。
  3. 请参阅 创建新的目标连接 以了解有关设置目标连接的信息。
  4. 单击run(运行)即可运行应用。

本文章使用limfx的vscode插件快速发布