原文档 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 统一软件平台时,会创建工作空间。工作空间即供 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.
图:Zynq UltraScale+ MPSoC 的 Vitis 软件开发工作空间示例
本章节旨在描述您如何使用 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.
本章节旨在解释如何创建硬件设计,以及如何使用该硬件设计来创建应用工程。
AMD 硬件设计是使用 AMD Vivado™ Design Suite 创建的,可以赛灵思支持存档 (XSA) 专属文件格式导出,以供 Vitis 软件平台使用。
常规步骤如下所示:
每个平台均可包含多个域,以支持不同的操作系统并以不同的处理器为目标。当前支持三种类型的域:Linux 域、FreeRTOS 域和独立(或裸机)域。
对于 FreeRTOS 域和 Standalone 域,会为其创建板级支持包 (BSP)。您可指定要在 BSP 中包含的库。
对于 Linux 域,您可从平台中选择新的 Linux 域来配置其附加详细信息。Boot Components Directory(启动组件目录)必须包含 BIF 所需的所有组件。这些组件可由 PetaLinux 生成。
域有多种不同类型,其中最常用的是独立域。每个域都有关联的 BSP,可进行广泛配置。此外,域概述页面还包含该域的其他设置。
独立域概述页面与 FreeRTOS 域概述页面完全相同,提供与 QEMU 仿真平台相关的少量配置选项。这些选项是使用预定义的安装文件路径来自动填充的。Linux 域概述页面类似于独立页面,但包含更多配置选项。
创建平台时,可为 FSBL 选择目标处理器。创建工程后,可以将其目标调整为 Zynq UltraScale+ MPSoC 器件上的其他处理器。要将平台组件目标调整为 Cortex-R5F,请执行以下步骤。
在平台生成阶段选中启动组件生成时,会在平台组件内创建 FSBL 应用。要修改这些应用的源代码,请执行以下步骤。
在 Vitis 中,嵌入式应用表示一种特定类型的软件应用,该类应用设计为在嵌入式系统或嵌入式平台上运行。在 Vitis 环境内,嵌入式应用通常具有以下特征:
以嵌入式系统为目标
嵌入式应用程序旨在于嵌入式硬件系统上运行,而这些系统通常资源有限,且专为特定任务而设计。这类系统覆盖范围广泛,从小型微控制器到嵌入式 FPGA 或 SoC(片上系统)等更复杂的器件都包含在内。
实时或资源有限
嵌入式应用经常需要满足实时约束或者在严格的资源限制下运行。它们必须高效利用可用的 CPU、存储器和 I/O 资源,以可靠和可预测的方式来执行任务。
多样化的用例
Vitis 中的嵌入式应用可满足各种用途,从控制物联网(IoT)器件、管理传感器和执行器、运行实时控制算法到执行信号处理、通信等都能轻松应对。
硬件集成
嵌入式应用可能会与硬件组件和外设紧密交互。它们通常需要特定的器件驱动程序和低层次硬件访问,以便与传感器、电机、通信接口和其他嵌入式硬件对接。
开发环境
Vitis 提供的开发环境允许开发者在自己的目标硬件平台上创建、编译和部署嵌入式应用。它包含用于代码开发、调试和性能最优化的各种工具。
交叉编译
嵌入式应用通常采用交叉编译,即在主机上开发,但编译后可在含不同架构的目标嵌入式系统上运行。
您可通过以下步骤基于示例创建应用组件:
要创建应用组件,您可选中FileNew ComponentApplication(文件 > 新建组件 > 应用)。
系统工程可包含多个应用,这些应用可在器件上同时运行。同一个处理器的两个应用不能保持在同一个系统工程内。例如,在 AMD Zynq™ UltraScale+™ MPSoC 器件上, Cortex®-A53 上运行的独立应用和 Cortex®-R5F 上的应用如果预计将同时运行,则可保持在同一个系统工程内。但 Cortex-A53 上的应用和 Linux 中的应用不能组合到同一个系统工程内,因为这些应用使用相同的 Cortex-A53 处理器。
以下步骤演示了将两个应用添加到同一个系统工程的流程:
要调试、运行和剖析应用,则必须创建启动配置以采集用于执行应用的设置。为此,请转至 Flow Navigator 并选中应用组件,右键单击Run(运行)或Debug(调试)旁的Open Settings(打开设置)。
打开 launch.json 文件后即可供您编辑启动配置。Launch Configuration(启动配置)编辑器顶部有一个工具栏菜单,如下图所示。启动配置的具体内容因所选组件或工程而异。
Target Connections(目标连接)对话框 允许您配置多个远程目标。它可显示已连接的目标,并提供可供您添加或删除目标连接的选项。
Vitis 软件平台通过 AMD hw_server 来建立目标连接。为了连接到远程目标,硬件服务器代理程序必须在远程主机上运行,且该远程主机已连接到目标硬件。
目标连接已扩展到 Vitis Unified IDE 内的所有实用工具,这些实用工具会在运行时处理各目标。
要建立目标连接,可使用本地开发板或远程开发板。默认情况下,在Target Connection(目标连接)视图中选择本地目标连接。您可通过检查本地连接来确认到本地开发板的连接。
本文章使用limfx的vscode插件快速发布