Vitis概述

Vitis 软件开发工作流程

下图显示了Vitis IDE的嵌入式软件应用开发工作流程。

嵌入式软件应用开发工作流程

  • 硬件工程师负责设计软件开发(从 AMD Vivado™ Design Suite 到 XSA 存档文件)所需的逻辑和导出信息。
  • 软件开发者负责通过创建平台来将 XSA 导入 Vitis 软件平台。
  • 软件环境设置称为域,同样属于平台的一部分。
  • 软件开发者基于平台和域来创建应用。
  • 应用可在 Vitis IDE 中进行调试。
  • 在复杂系统中,有多个应用同时运行并彼此通信。因此也需要执行系统级别验证。
  • 全部就绪后,Vitis IDE 即可帮助创建启动镜像,用于初始化系统和启动应用。

Vitis IDE中的Workspace结构

在Vitis内有两种类型的工程:Platform Project和System Project。

平台工程(Platform Project) 是整个应用开发的基础,包含了软件和硬件之间的接口定义,是连接 硬件设计(Vivado 工程)和Vitis 应用程序的桥梁。主要组成:

  1. 硬件描述(XSA 文件)

    • 来自 Vivado 导出的 .xsa 文件(Xilinx Support Archive),定义了处理器架构、外设连接等。
  2. 软件组件

    • FSBL(First Stage Bootloader):在裸机或 Linux 启动时负责初始化硬件。
    • PMU/PLM 程序(对 ZynqMP/Versal 平台):负责管理功耗或生命周期。
    • BSP(Board Support Package):裸机/FreeRTOS/Linux 的设备驱动支持。
  3. 系统配置(domain)

    不同的 domain 表示不同的处理环境(操作系统+cpu组合),比如:

    • standalone(裸机)
    • freertos
    • linux
    • 不同 CPU 核(如 Cortex-A53、R5 等)
  4. device tree(Linux 场景)

    • 提供给 Linux kernel 的硬件描述。

系统工程(System Project) 是一个组织多个应用程序(Application Projects)的工程容器,它基于一个已经构建好的Platform(平台)文件来统一管理这些应用程序的构建、调试和部署。简单说System Project就是一个引用现有 Platform、绑定一个或多个 Domain,并包含多个 Application 的高层项目结构。其中Application Projects是具体的软件程序,可编译为可执行文件(如 ELF),每个Application Projects必须绑定到一个 domain。

WorkSpace应用举例

应用背景为Zynq-7000 系列的 AMP,Zynq-7000中,两个Coetex-A9核心分别运行不同功能程序,配置过程如下: