嵌入式处理器的软件仿真调试 - 2023.2 简体中文

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

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 简体中文

您可以使用以下过程,在嵌入式处理器平台的软件仿真中调试系统,例如,AMD Versal™ VCK190、AMD Zynq™ UltraScale+™ MPSoC、ZCU102 或 ZCU102。此过程会启动新终端,以允许使用 gdb 命令并显示文件用于单步执行代码。

  1. 完成 sw_emu 构建进程后,使用以下任一方法启动含调试的 QEMU 仿真环境:
    • 如果您当前使用的是 PS on x86 流程,请将 kernel-dbg 添加到 xrt.ini 文件,如下所示:

      [Emulation]
      kernel-dbg=true

      如需了解有关 xrt.ini 文件中可用的所有选项的更多信息,请参阅 xrt.ini 文件

    • 否则,请使用来自您的 build 目录的以下命令启动含调试的仿真环境。
      ./emulation/launch_sw_emu.sh -kernel-dbg true

      其中:

      • ./emulationv++ --package 命令的输出目录。
      • -kernel-dbg true 会将仿真器设置为在执行应用内核(PL 和 AI 引擎)时运行 gdb
  2. 在嵌入式处理器平台上运行仿真 中所述,出现 qemu% 提示时,请在 QEMU shell 中运行以下命令:
    mount /dev/mmcblk0p1 /mnt
    cd /mnt
    export LD_LIBRARY_PATH=/mnt:/tmp:$LD_LIBRARY_PATH
    export XCL_EMULATION_MODE=sw_emu
    export XILINX_XRT=/usr
    
  3. 从 QEMU 环境运行 PS 应用。例如:./host.exe a.xclbin

    启动主机应用还会在单独的终端内启动 gdb,以允许您在 .xclbin 中调试 PL 和 AI 引擎内核。在 gdb 中,您可以执行所有典型活动以设置自己的调试环境,例如,为 PL 和 AI 引擎内核插入断点,单步或继续执行各项命令以执行完整代码。

  4. gdb 中,您可使用该语法在函数名称或行号上设置断点。执行期间,当 gdb 到达此断点时,它只要能够找到源代码,就会自动打开含正确行号的文件。例如:
    break <filename>:<function name>
    break <filename>:<line_num >

    此外,您可以使用 b Vadd_A_B 等命令来为内核设置断点。此命令会在调用指定内核时,在 gdb 中暂停执行 .xclbin,在此处示例中,指定内核为 Vadd_A_B 内核。在含多个内核的 .xclbin 文件中,可以为所有内核或部分特定内核添加断点。

    注释:gdb 中设置断点时,您会看到一条有关函数未定义的注释,它会提示您在后续加载时暂挂断点。请输入y继续。
  5. gdb 终端内,按r以运行应用并单步执行代码、设置变量值,然后继续。要获取 gdb 的文本用户界面,请按Ctrl + XCtrl + A。如果使用的是文本界面,则会显示内核源代码。
  6. 单步执行代码,或者按c让代码运行直至完成。软件仿真结果会显示在原始命令终端内。