- 在 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。
AMD 嵌入式基本平台将
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 文件的名称作为实参,就像大部分 AMD Vitis™ 示例和教程一样。但您的应用可能已将 xclbin 文件的名称硬编码到主机程序中,或者可能要求采用其他方法来运行此应用。 - 应用运行完成后,即可得到运行时所生成的文件,例如,opencl_summary.csv、opencl_trace.csv 和 xrt.run_summary。在 QEMU 环境内的 /mnt 文件夹下可能可以找到这些文件。但是,要查看这些文件,就必须将其从 QEMU Linux 系统重新复制回本地系统。 注释: 您可使用
scp
命令从访客机或主机复制这些文件。此处值得注意的关键术语是主机和访客机。主机是托管 QEMU 的机器,访客机是在 QEMU 上运行 PetaLinux 的机器。Host-ip-address
是启动 QEMU 的机器的 IP 地址。- 从主机复制文件:
- 首先,在访客机上使用以下命令将所需文件从根目录区域复制到
petalinux
(默认)用户主机区域:cp -rf /mnt/<files> /home/petalinux/
- 使用
exit
命令切换至默认登录用户petalinux
- 使用
sudo chmod 755 <files>
更改已复制的文件的许可权
您可在主机上使用 scp 命令复制这些文件:
scp -P <port-num> <guest-machine-user-name>@<host-ip-address>:<source-file> <dest-path>
。例如:scp -P 1440 root@172.55.12.26:/mnt/xrt.run_summary
。<port-num>
:要将访客机文件复制到主机,连接主机和访客机的端口号是必需的。1440 是连接到访客机端口的 QEMU 端口。-forward-port 1440 22
会传递到launch_emulator
以便将访客机端口映射到主机端口。此处 22 是访客机 TCP 端口,1440 是主机端口。这两个端口都会进行映射。要访问端口 22 上的访客机 TCP 服务,请使用主机的映射端口(即,1440)。访问主机端口 1440 也就意味着访问访客机端口 22。<guest-machine-user-name>
:在 PetaLinux 终端上使用whoami
命令即可找到访客机用户名。<host-ip-address>
:使用如下 Linux 命令即可找到主机 IP 地址:nslookup <machine name>
或hostname-i
<source-file>:要从 QEMU 环境复制的文件的路径和文件名。
<dest-path>:要将文件复制到本地系统上的目标路径。
- 首先,在访客机上使用以下命令将所需文件从根目录区域复制到
- 从访客机复制文件:
您可使用
scp
command:scp <guest-file> <userid-of-hostmachine>@<host-ip-address>:<host's-dir-path>
命令从访客机复制文件。例如:scp /mnt/xrt.run_summary userabcd@172.55.12.26:~
- 从主机复制文件:
- 当应用完成仿真 (emulation) 并且您已复制所需的文件后,按Ctrl + a + x键即可终止 QEMU shell 并返回到 Linux shell。注释: 如果无法终止 QEMU 环境,可结束 QEMU 启动的用于运行此环境的进程。该工具会在转录文本启动时报告进程 ID (pid),或者您可以指定
-pid-file
选项以在启动仿真 (emulation) 时捕获 pid。
建议: 机器的文件大小限制应设置为无限或者较高的值(高于 16 GB),因为嵌入式硬件仿真 (HW Emulation) 为存储器创建的文件大小可能较大。
提示: 运行构建前,请按 设置 Vitis 环境 中所述设置命令 shell 或窗口。