QEMU の Versal PS 引数と PMC 引数 - 2022.1 日本語

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

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 日本語

Versal® デバイスでは、PS(a72) が qemu-system-aarch64 で、PMC が qemu-system-microblazeel でエミュレートされます。PS の一般的なコマンド ライン オプションのほとんどは、qemu_args.txt に、PMC コマンド ライン オプションは pmc_args.txt に記述されます。

表 1. qemu_args.txt の Versal オプション
引数名 説明 Source 情報の抽出方法
-boot

mode=<boot-number>

sd1 の例: -boot mode=5

プラットフォームでブート モードを指定します。

  • qspi24 = 1
  • qspi32 = 2
  • sd0 = 3
  • sd1 = 5
  • emmc0 = 6
  • ospi = 8
v++ -p CIPS イネーブルのブート モードと v++ -p 選択の間に必要な DRC
-display none デフォルトでは、QEMU はユーザー I/O のディスプレイを作成します。このオプションは、ディスプレイを無効にします。 スタティック ディスプレイを無効にするには、none を指定します。
-hw-dtb <ps-dtb-file> PS (a72) を記述するデバイス ツリー ファイル。Vitis コンパイラの --package コマンドは dtb ファイルを生成して qemu-args.txt に追加します。 v++ -p  
-M arm-generic-fdt

作成する QEMU マシンを指定します。arm-generic-fdt マシン オプションを指定すると、QEMU はマシン生成のために dtb を解析し、-hw-dtb user.dtb で渡します。

デバイス固有 Versal 用にハード コードされています。
-serial -serial null -serial null -serial mon:stdio

デフォルトでは、QEMU は起動ターミナルを UART0 に接続してユーザー I/O を操作します。このオプションを指定すると、この動作を変更できます。Versal プラットフォームには、位置引数を使用して 4 つの UART が指定されています。最初の 2 つはデバッグ用で、最後の 2 つは UART0 と UART1 です。

ターミナルに UART0 を接続するには、デバッグ関連の UART を無視し、UART 0 をターミナルに接続する -serial null -serial null -serial mon:stdio を指定します。

同様に、ターミナルに UART1 だけを接続する場合は、-serial null -serial null -serial null -serial mon:stdio を指定します。

CIPS コンフィギュレーションでイネーブルになっている UART に基づきます。

Versal デバイスには 4 つの UART があります。最初の 2 つは、デバッグ関連の UART です。

UART0 をイネーブルにする場合:
CONFIG.PS_UART0_PERIPHERAL_ENABLE = 1
CONFIG.PS_UART1_PERIPHERAL_ENABLE =0 or 1

次に -serial null -serial null -serial mon:stdio と指定します。

UART1 のみをイネーブルにする場合:
CONFIG.PS_UART0_PERIPHERAL_ENABLE = 0 
CONFIG.PS_UART1_PERIPHERAL_ENABLE = 1

次に -serial null -serial null -serial null -serial mon:stdio と指定します。

-sync-quantum 時間 (ミリ秒) QEMU が RTL シミュレータと同期する頻度を指定します。これを変更すると、シミュレーションの速度に影響する可能性があります。 スタティック Versal デバイス用にハード コードされています (ユーザーが変更する必要あり)。

Versal CIPS には 2 つのイーサネット インターフェイスがあります。ザイリンクス Versal CIPS ボードのほとんどで eth0 がイネーブルになっています。-net または -netdev が指定されない場合、QEMU はデフォルトで eth0 をイネーブルにし、ユーザー モード バックエンドにマップします。

表 2. pmc_args.txt の Versal オプション
オプション名 説明 コンフィギュレーションのソース 情報の抽出方法
-M microblaze-fdt 作成する QEMU マシンを指定します。QEMU は dtb からノードを使用して MicroBlaze を作成します。 スタティック Versal デバイス用にハード コードされています。
-display none デフォルトでは、QEMU はユーザー I/O のディスプレイを作成します。このオプションは、QEMU にディスプレイの必要がないことを指示します。 スタティック Versal デバイス用にハード コードされています。
-device loader,file=<BOOT_bh.bin>,addr=0xf201e000,force-raw ロード アドレスを含むブート ヘッダー ファイルを 0xF201E000 に指定します (BOOT_bh.bin がアドレス 0xF201E000 でロードされる)。これは pmc_args.txt で固定された引数で、BOOT_bh.bin ファイルの絶対パスを持つ最終引数用に v++ -p で処理されます。BOOT_bh.bin は最終 PDI から v++ -p で生成されます。BOOT_bh.bin は QEMU に直接ロードされます。これは、QEMU が PDI からブート ヘッダーをロードするための BOOT ROM アクセスがないためです。 v++ -pack v++ pack は BOOT_bh.bin を抽出して次のオプションを生成します。
-device loader,file=<pmc_cdo.bin>,addr=0xF2000000,force-raw ロード アドレスを含む pmc_cdo.bin0xF2000000 に指定します。これは pmc_args.txt で固定された引数です。これは pmc_cdo.bin ファイルの絶対パスを持つ最終引数用に v++ -p で処理されます。 v++ -pack v++ pack は pmc_cdo.bin を抽出して次のオプションを生成します。
-device loader,file=<plm.bin>,addr=0xF0200000,force-raw ロード アドレスを含む PLM バイナリ ファームウェアを 0xF0200000 に指定します。これは pmc_args.txt で固定された引数で、最終引数用に v++ -p で処理されます。これには plm.bin ファイルの絶対パスが含まれます。この PLM は、リセットされていないときに PPU1 で実行されます。 v++ -pack v++ pack は plm.bin を抽出して次のオプションを生成します。
-device loader,addr=0xf0000000,data=0xba020004,data-len=4 -device loader,addr=0xf0000004,data=0xb800fffc,data-len=4 PPU0 プロセスがブート ループになるように指定します。QEMU には BOOTROM アクセスがないため、PPU0 がブートループに置かれ、通常は PDI からメモリにブート ヘッダーをロードします。 スタティック Versal デバイス用にハード コードされています。
-device loader,addr=0xF1110624,data=0x0,data-len=4 -device loader,addr=0xF1110620,data=0x1,data-len=4 PPU1 をリセットから解除し、実行モードにします。 スタティック Versal デバイス用にハード コードされています。
-hw-dtb <ps-dtb-file> aout PS(a72) を記述する dtb ファイルです。v++ pack はこの dtb ファイルを生成し、qemu-args.txt に追加します。 v++ pack v++ pack はデバイスの DDR コンフィギュレーションに基づいて dtb ファイルを生成します。