下图描述了使用 Arm® 处理器和内核构建和运行应用所需的步骤,这些处理器和内核在 Versal ACAP、Zynq UltraScale+ MPSoC 和 Zynq-7000 SoC 器件的可编程逻辑区域内运行。这些步骤总结如下,在这整篇文档中均可找到有关每个步骤的详细信息。
图 1.
Versal ACAP 和 Zynq UltraScale+ MPSoC 器件的应用开发流程
- PS 应用编译
- 编译主机应用以在 Cortex®-A72 或 Cortex-A53 核处理器上运行,此类处理器使用 GNU Arm 交叉编译器来创建 ELF 文件。主机程序会与器件的 PL 和 AI 引擎区域中的内核进行交互。如需了解有关写入主机应用的更多信息,请参阅 开发应用。如需了解有关编译主机应用的更多信息,请参阅 构建主机程序。
- AI 引擎阵列(可选,仅供 Versal AI 引擎 Core 系列使用)
- 部分 Versal ACAP 器件将超长指令字 (VLIW) 处理器的 AI 引擎阵列与单指令流多数据流 (SIMD) 矢量单元整合在一起,后者专为计算密集型应用(例如,5G 无线和人工智能 (AI) 应用)而经过高度优化。AI 引擎 Graph 和内核是使用 Vitis 工具(例如,
aiecompiler
)构建的,可集成到嵌入式处理器应用加速流程中,如 Versal ACAP AI 引擎编程环境用户指南 (UG1076) 中所述。 - PL 内核编译和链接
- PL 内核经编译后即可在目标平台的 PL 区域内实现。PL 内核可使用 Vitis 编译器 (
v++
)、Vitis HLS(针对 C/C++ 内核)或package_xo
命令(针对 RTL 内核)编译为赛灵思对象格式 (XO) 文件。如需了解有关内核编码的更多信息,请参阅 C/C++ 内核 或 RTL 内核。Vitis 编译器还会将内核 XO 文件与硬件平台相链接,从而为应用创建器件可执行文件 (.xclbin)。如需了解更多信息,请参阅 构建器件二进制文件。
赛灵思对象 (XO) 文件通过
v++ --link
命令与目标硬件平台相链接,以创建器件二进制文件 (.xclbin),此文件将被加载到目标平台上的赛灵思器件中。 - 系统封装
-
v++ --package
命令可用于收集配置和启动系统以及加载和运行应用(包括主机应用和 PL 内核二进制文件)所需的文件。此步骤会构建必要的封装以运行软件或硬件仿真和调试,或者创建 SD 卡以在硬件上运行您的应用。如需了解更多信息,请参阅 封装系统。 - 运行应用
- 运行应用时,可以运行软件仿真、硬件仿真或者在实际物理加速器平台上运行。在嵌入式处理器平台上运行应用与在数据中心加速器卡上运行应用不同。如需了解更多信息,请参阅 运行应用硬件构建。
- 当构建目标为软件或硬件仿真时,QEMU 环境会对硬件器件进行建模。Vitis 编译器会在器件二进制文件中生成内核的仿真 (simulation) 模型,运行应用则会在系统的 QEMU 模型中运行。如 构建目标 中所述,仿真 (emulation) 目标允许您在相对较快的周期内对设计进行构建、运行和迭代,并进行应用调试和性能评估。
- 当构建目标为硬件系统时,目标平台是物理器件。Vitis 编译器会使用 Vivado Design Suite 生成 .xclbin 来运行综合与实现,并解决时序。运行应用会在硬件上运行系统。构建进程将自动执行以生成高质量的结果,但熟悉硬件的开发者可以在其设计进程中充分利用 Vivado 工具。