エンベデッド プロセッサ プラットフォームでのエミュレーションの実行 - 2021.2 Japanese

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2022-03-29
Version
2021.2 Japanese
ヒント: ビルドを実行する前に、Vitis 環境の設定 で説明されるように、コマンド シェルまたはウィンドウを設定します。
  1. xrt.ini ファイルで必要なランタイムを設定します。

    xrt.ini ファイル で説明されるように、このファイルには、デバッグ、プロファイリング、ホスト アプリケーションおよびカーネルを実行する際に XRT で記録されるメッセージを制御するためのさまざまなパラメーターを指定します。アプリケーションでのプロファイリングのイネーブル で説明されるように、アプリケーションの実行中にランタイムでデバッグおよびプロファイル データを取得できるようになります。

    xrt.ini ファイルには、エンベデッド プラットフォームのパッケージ で説明されるように、ファイルとアプリケーションの実行に必要なその他のファイルも出力ファイルに含める必要があります。

    ヒント: カーネル コードをエミュレーション モードでコンパイルするには、v++ -g オプションを使用してください。
  2. launch_sw_emu.sh スクリプトまたは launch_hw_emu.sh スクリプトを実行して、QEMU エミュレーション環境を起動します。
    launch_sw_emu.sh -forward-port 1440 22

    スクリプトは、パッケージ プロセス中にエミュレーション ディレクトリに作成され、launch_emulator.py コマンドを使用して QEMU を設定して起動します。エミュレーション スクリプトを起動するときに、launch_emulator.py コマンドにオプションを指定することもできます。たとえば、-forward-port オプションを使用すると、QEMU ポートをローカル システムのオープン ポートに転送できます。これは、次の手順 5 で説明するように、QEMU からファイルをコピーしようとする場合に必要となります。コマンドの詳細は、launch_emulator ユーティリティ を参照してください。

    また、launch_hw_emu.sh -enable-debug を指定して、QEMU および PL プロセスのために開く追加の XTERM を設定すると、アプリケーションのデバッグに役立つコマンド実行のライブ トランスクリプトを監視できます。これはデフォルトではイネーブルになっていませんが、デバッグに役立ちつことがあります。

  3. 必要な設定で QEMU シェルをマウントして設定します。

    ザイリンクス エンベデッドのベース プラットフォームには、SD カード上の別の EXT4 パーティションに rootfs があります。Linux の起動後、このパーティションをマウントする必要があります。エミュレーションを手動で実行している場合は、QEMU シェルから次のコマンドを実行する必要があります。

    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 に設定できます。これで、ホスト アプリケーションがエミュレーション モードで実行されるように設定されます。
  4. QEMU シェル内からアプリケーションを実行します。

    ランタイム初期化 (xrt.ini) を使用して XCL_EMULATION_MODE 環境を設定し、ホスト アプリケーションに必要なコマンド ラインを使用してホスト実行ファイルを実行します。次に例を示します。

    ./host.elf kernel.xclbin
    ヒント: このコマンド ラインでは、多くの Vitis サンプルおよびチュートリアルと同様に、ホスト プログラムが xclbin ファイルの名前を引数として使用することを想定していますが、アプリケーションによっては xclbin ファイルの名前がホスト プログラムにコード記述されていたり、アプリケーションの実行に別の方法が必要であったりすることがあります。
  5. アプリケーション実行が終了したら、opencl_summary.csvopencl_trace.csvxrt.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 です。
    • /mnt/<file> は、QEMU 環境からコピーするファイルのパスと名前です。
    • <dest_path> には、コピーするローカル システム先のパスとファイル名を指定します。
    次に例を示します。
    scp -P 1440 root@172.55.12.26:/mnt/xrt.run_summary
  6. アプリケーションのエミュレーションが完了して必要なファイルをすべてコピーしたら、Ctrl + a + x キーをクリックして QEMU シェルを終了し、Linux シェルに戻ります。
    注記: QEMU 環境を終了できない場合は、起動したプロセスを強制終了して、環境を実行できます。ツールがトランスクリプトの開始時にプロセス ID (PID) をレポートします。または、エミュレーションの開始時に PID をキャプチャする -pid-file オプションを指定できます。