建议: 机器的文件大小限制应设置为无限或者较高的值(高于 16 GB),因为嵌入式硬件仿真 (HW Emulation) 为存储器创建的文件大小可能较大。
提示: 运行构建前,请按 设置 Vitis 环境 中所述设置命令 shell 或窗口。
- 在 xrt.ini 文件中设置期望的运行时设置。
如 xrt.ini 文件 中所述,运行主机应用和内核执行时,此文件可指定各种参数用于控制 XRT 中的调试、剖析和消息日志记录。如 在应用中启用剖析 中所述,这样即可支持运行时在运行应用时捕获调试和剖析数据。
xrt.ini 文件和运行应用所需的所有其它文件都必须包含在输出文件内,如 嵌入式平台封装 中所述。
提示: 为仿真 (emulation) 模式编译内核代码时,请务必使用v++ -g
选项。 - 运行 launch_sw_emu.sh 脚本或 launch_hw_emu.sh 脚本即可启动 QEMU 仿真环境。
launch_sw_emu.sh -forward-port 1440 22
此脚本是在封装进程期间在仿真 (emulation) 目录中创建的,它使用
launch_emulator.py
命令来设置和启动 QEMU。启动仿真 (emulation) 脚本时,您还可以为launch_emulator.py
命令指定选项。例如,指定-forward-port
选项即可将 QEMU 端口转发到本地系统上打开的端口。尝试从 QEMU 复制文件时,需使用该选项,如以下步骤 5 中所述。请参阅 launch_emulator 实用工具 以获取该命令的详细信息。另一个示例是指定
launch_hw_emu.sh -enable-debug
以配置要打开的其它 XTERM,以供 QEMU 和 PL 进程观测命令执行时处于活动状态的脚本以帮助调试应用。默认不启用该选项,但它对于调试很有用。 - 使用所需设置来装载和配置 QEMU shell。
赛灵思嵌入式基本平台将
rootfs
包含在 SD 卡的独立 EXT4 分区内。启动 Linux 后,需装载此分区。如果手动运行仿真 (emulation),则需要从 QEMU shell 运行以下命令:mount /dev/mmcblk0p1 /mnt cd /mnt export LD_LIBRARY_PATH=/mnt:/tmp:$LD_LIBRARY_PATH export XCL_EMULATION_MODE=hw_emu export XILINX_XRT=/usr export XILINX_VITIS=/mnt
提示: 您可以将XCL_EMULATION_MODE
环境变量设置为sw_emu
(用于软件仿真)或hw_emu
(用于硬件仿真)。这样即可将主机应用配置为在仿真 (emulation) 模式下运行。 - 从 QEMU shell 内运行应用。
通过运行时初始化 (xrt.ini) 设置好
XCL_EMULATION_MODE
环境后,按主机应用要求,通过命令行来运行可执行文件。例如:./host.elf kernel.xclbin
提示: 此命令行假定主机程序编写时采用 xclbin 文件的名称作为实参,就像大部分 Vitis 示例和教程一样。但您的应用可能已将 xclbin 文件的名称硬编码到主机程序中,或者可能要求采用其它方法来运行此应用。 - 应用运行完成后,运行时可能已生成某些文件,例如,opencl_summary.csv、opencl_trace.csv 和 xrt.run_summary。在 QEMU 环境内的 /mnt 文件夹下可能可以找到这些文件。但是,要查看这些文件,就必须将其从 QEMU Linux 系统重新复制回本地系统。可使用
scp
命令复制这些文件,如下所示:scp -P 1440 root@<host-ip-address>:/mnt/<file> <dest_path>
其中:
-
1440
是要连接到的 QEMU 端口。 -
root@<host-ip-address>
是位于指定 IP 地址的 QEMU 下运行的 PetaLinux root 用户登录信息。默认 root 用户密码为“root”。 - /mnt/<file> 是要从 QEMU 环境复制的文件的路径和文件名。
- <dest_path> 用于指定将文件复制到本地系统上的路径和文件名。
例如:scp -P 1440 root@172.55.12.26:/mnt/xrt.run_summary
-
- 当应用完成仿真 (emulation) 并且您已复制所有必要文件后,单击Ctrl + a + x键即可终止 QEMU shell 并返回到 Linux shell。 注释: 如果无法终止 QEMU 环境,可结束 QEMU 启动的用于运行此环境的进程。该工具会在脚本启动时报告进程 ID (pid),或者您可以指定
-pid-file
选项以在启动仿真 (emulation) 时捕获 pid。