エンベデッド プロセッサのソフトウェア エミュレーション デバッグ - 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-dbgxrt.ini ファイルに追加します。

      [Emulation]
      kernel-dbg=true

      xrt.ini ファイルで使用可能なすべてのオプションの詳細は、xrt.ini ファイル を参照してください。

    • それ以外の場合は、ビルド ディレクトリから次のコマンドを使用して、デバッグ用のエミュレーション環境を起動します。
      ./emulation/launch_sw_emu.sh -kernel-dbg true

      説明:

      • ./emulationv++ --package コマンドの出力ディレクトリです。
      • -kernel-dbg true で、アプリケーション カーネル (PL、AI エンジン) の実行時に gdb を実行するようにエミュレーターを設定します。
  2. エンベデッド プロセッサ プラットフォームでのエミュレーションの実行 で説明するように、qemu% プロンプトが表示されたら、QEMU シェルで次のコマンドを実行します。
    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 などのコマンドを使用して、カーネルのブレークポイントを設定することもできます。このコマンドは、指定されたカーネル (この例の場合、Vadd_A_B カーネル) の呼び出し時に gdb での .xclbin の実行を一時停止します。複数のカーネルを持つ .xclbin ファイルでは、すべてのカーネルまたは特定のカーネルにブレークポイントを追加できます。

    注記: gdb でブレークポイントを設定すると、関数が定義されていないことを示すメッセージが表示され、今後のロードでブレークポイントを保留するかどうか尋ねられます。y を入力します。
  5. gdb ターミナルで r を押てアプリケーションを実行し、コードをステップ スルーし、変数値を設定して続行します。gdb のテキスト ユーザー インターフェイスを使用するには、Ctrl + XCtrl + A キーを押します。テキスト インターフェイスを使用すると、カーネルのソース コードが表示されます。
  6. コードをステップ スルーするか、c を押してコードを完了させます。ソフトウェア エミュレーションの結果が、元のコマンド ターミナルに表示されます。