- 构建裸机平台。
构建裸机应用要求平台内具有裸机域。基础平台
xilinx_vck190_base_202210_1
并不具有裸机域,因此您必须创建含裸机域的平台。从v++
链接进程起(如 系统链接 中所述),您必须创建定制平台,因为 PS 应用需要适用于设计中的 PL 内核的驱动程序。使用以下命令,以链接进程期间生成的 XSA 创建新平台:
generate-platform.sh -name vck190_baremetal -hw <filename>.xsa \ -domain psv_cortexa72_0:standalone
其中:
-
-name vck190_baremetal
:指定将创建的平台的名称。此平台将根据指定名称来创建。在此示例中,它将写入:./vck190_baremetal/export/vck190_baremetal -
-hw <filename>.xsa
:指定v++ --link
命令期间生成的输入 XSA 文件的名称。<filename> 将与针对 .xclbin 输出指定的文件名相同。 -
-domain psv_cortexa72_0:standalone
:指定处理器域和操作系统以供应用于新平台。
您可在自己的
$PLATFORM_REPO_PATHS
环境变量内添加此文件的位置来给自己的平台存储库添加新平台。举例来说,这样此平台即可供 Vitis IDE 访问,或者您可以在命令行中通过直接引用平台名称而不是整个路径的方式来指定平台。注释: 生成的平台将仅用于在整个流程中构建裸机 PS 应用,而不可作他用。 -
- 编译并链接 PS 应用。
要为裸机流程构建 PS 应用,请使用先前步骤中生成的平台。您需要 PS 应用 (main.cpp) 和裸机 AI 引擎控制文件 (aie_control.cpp),此文件是由
aiecompiler
命令创建的,可在 ./Work/ps/c_rts 文件夹下找到。使用以下命令编译 main.cpp 文件:
aarch64-none-elf-gcc -I.. -I. -I../src \ -I./vck190_baremetal/export/vck190_baremetal/sw/vck190_baremetal/standalone_domain/bspinclude/include \ -g -c -std=c++14 -o main.o main.cpp
注释: 您必须为生成的平台包含 BSP include 文件,这些文件位于:./vck190_baremetal/export/vck190_baremetal/sw/vck190_baremetal/standalone_domain/bspinclude/include使用以下命令编译 aie_control.cpp 文件:
aarch64-none-elf-gcc -I.. -I. -I../src \ -I./vck190_baremetal/export/vck190_baremetal/sw/vck190_baremetal/standalone_domain/bspinclude/include \ -g -c -std=c++14 -o aie_control.o ../Work/ps/c_rts/aie_control.cpp
使用两个已编译的对象文件来链接 PS 应用:
aarch64-none-elf-gcc main.o aie_control.o -g -mcpu=cortex-a72 -Wl,-T -Wl,./lscript.ld \ -L./vck190_baremetal/export/vck190_baremetal/sw/vck190_baremetal/standalone_domain/bsplib/lib \ -ladf_api -Wl,--start-group,-lxil,-lgcc,-lc,-lstdc++,--end-group -o main.elf
注释: 链接期间还需要 BSP libxil.a,它位于:./vck190_baremetal/export/vck190_baremetal/standalone_domain/bsplib/lib。此处假设在平台管理控制器 (PMC) 启动期间,已启用 AI 引擎。 - 系统封装
最后,您必须运行封装进程生成最终可启动镜像 (PDI),以供在裸机平台上运行设计。此命令会生成 SD 卡内容,以供启动器件和运行应用。如需了解更多信息,请参阅 封装。这需要使用
v++ --package
命令,如下所示:v++ -p -t hw \ -f xilinx_vck190_base_202210_1 \ libadf.a project.xsa \ --package.out_dir ./sd_card \ --package.domain aiengine \ --package.defer_aie_run \ --package.boot_mode sd \ --package.ps_elf main.elf,a72-0 \ -o aie_graph.xclbin
提示: 对于 PS 核上运行的裸机 ELF 文件,还应将package.ps_elf
选项添加到--package
命令。是否使用
--package.defer_aie_run
与 AI 引擎 graph 的运行方式有关。如果在镜像启动时加载并启动应用,则无需这些选项。如果主机应用启动并控制 graph,那么在编译和封装系统时则需要使用这些选项,如 系统部署 中所述。./sd_card 文件夹由
--out_dir
选项来指定,其中包含为硬件构建生成的下列文件:|-- BOOT.BIN //BOOT.BIN file containing PDI and the application ELF |-- boot_image.bif //bootgen input file used to create BOOT.BIN `-- sd_card //SD card folder |-- aie_graph.xclbin //xclbin output file (not used) `-- BOOT.BIN //BOOT.BIN file containing PDI and the application ELF
请将
sd_card
文件夹的内容复制到 SD 卡上以便为系统创建启动器件。
构建裸机系统在先前所述的标准应用流程基础上需执行多个附加步骤。所需具体步骤如下所述。
鉴于您已构建了裸机系统,现在您可对其进行运行或调试。