在嵌入式处理器平台上运行仿真 - 2023.2 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 简体中文
提示: 运行构建前,请按 设置 Vitis 环境 中所述设置命令 shell 或窗口。
  1. xrt.ini 文件中设置期望的运行时设置。

    xrt.ini 文件 中所述,运行主机应用和内核执行时,此文件可指定各种参数用于控制 XRT 中的调试、剖析和消息日志记录。如 在应用中启用剖析 中所述,这样即可支持运行时在运行应用时捕获调试和剖析数据。

    xrt.ini 文件和运行应用所需的所有其他文件都必须包含在输出文件内,如 嵌入式平台封装 中所述。

    提示: 为仿真 (emulation) 模式编译内核代码时,请务必使用 v++ -g 选项。
  2. 运行 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 进程观测命令执行时处于活动状态的转录文本以帮助调试应用。默认不启用该选项,但它对于调试很有用。

  3. 使用所需设置来装载和配置 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) 模式下运行。
  4. 从 QEMU shell 内运行应用。

    通过运行时初始化 (xrt.ini) 设置好 XCL_EMULATION_MODE 环境后,按主机应用要求,通过命令行来运行可执行文件。例如:

    ./host.elf kernel.xclbin
    提示: 此命令行假定主机程序编写时采用 xclbin 文件的名称作为实参,就像大部分 AMD Vitis™ 示例和教程一样。但您的应用可能已将 xclbin 文件的名称硬编码到主机程序中,或者可能要求采用其他方法来运行此应用。
  5. 应用运行完成后,即可得到运行时所生成的文件,例如,opencl_summary.csvopencl_trace.csvxrt.run_summary。在 QEMU 环境内的 /mnt 文件夹下可能可以找到这些文件。但是,要查看这些文件,就必须将其从 QEMU Linux 系统重新复制回本地系统。
    注释: 您可使用 scp 命令从访客机或主机复制这些文件。此处值得注意的关键术语是主机访客机主机是托管 QEMU 的机器,访客机是在 QEMU 上运行 PetaLinux 的机器。Host-ip-address 是启动 QEMU 的机器的 IP 地址。
    1. 从主机复制文件:
      1. 首先,在访客机上使用以下命令将所需文件从根目录区域复制到 petalinux(默认)用户主机区域:cp -rf /mnt/<files> /home/petalinux/
      2. 使用 exit 命令切换至默认登录用户 petalinux
      3. 使用 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>:要将文件复制到本地系统上的目标路径。

    2. 从访客机复制文件:

      您可使用 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:~

  6. 当应用完成仿真 (emulation) 并且您已复制所需的文件后,按Ctrl + a + x键即可终止 QEMU shell 并返回到 Linux shell。
    注释: 如果无法终止 QEMU 环境,可结束 QEMU 启动的用于运行此环境的进程。该工具会在转录文本启动时报告进程 ID (pid),或者您可以指定 -pid-file 选项以在启动仿真 (emulation) 时捕获 pid。