手順 3: Vitis プラットフォームの作成

プラットフォーム パッケージ用のファイルの準備

  1. Vitis プラットフォームの作成フローに必要なすべてのファイルを保存します。zcu104_custom_pkg という名前を付けます。そして、その中にプラットフォーム作成ソース コンポーネントを格納する pfm フォルダーを作成します。

    mkdir zcu104_custom_pkg cd zcu104_custom_pkg mkdir pfm 

    この手順の後、ディレクトリ階層は次のようになります。

    - zcu104_custom_platform # Vivado Project Directory - zcu104_custom_plnx # PetaLinux Project Directory - zcu104_custom_pkg # Platform Packaging Directory - pfm # Platform Packaging Sources 
  2. sysroot をインストールします。

    • /images/linux ディレクトリに移動します。

    • ./sdk.sh -d <Install Target Dir> と入力して PetaLinux SDK をインストールします。-d オプションを使用して、出力ディレクトリ zcu104_custom_pkg (この例の場合) への完全パス名を指定します。

    • 注記: このコマンドを実行する際、環境変数 LD_LIBRARY_PATH は設定しないでください。

    テスト段階で、この rootfs に Vitis AI ライブラリと DNNDK をインストールします。

  3. pfm ディレクトリ内に boot ディレクトリと image ディレクトリを作成します。

    cd zcu104_custom_pkg/pfm mkdir boot mkdir image

    この手順の後、ディレクトリ階層は次のようになります。

    - zcu104_custom_platform # Vivado Project Directory - zcu104_custom_plnx # PetaLinux Project Directory - zcu104_custom_pkg # Platform Packaging Directory - sysroots # Extracted Sysroot Directory - pfm # Platform Packaging Sources - boot # Platform boot components - image # Files to be put in FAT32 partition 

    BIF ファイルと参照されるファイルを boot ディレクトリに、FAT32 パーティションに必要なすべてのファイルを image ディレクトリに準備します。

  4. Bootgen のブート コンポーネント構造を記述する BIF (linux.bif) を作成します。

    • 次の内容を含む BIF ファイル (linux.bif) を <full_pathname_to_zcu104_custom_pkg>/pfm/boot ディレクトリに追加します。

    • ファイル名は、ブート ディレクトリの内容と同じにする必要があります。プラットフォームの sw ディレクトリに相対するこれらのパス名は、Vitis ツールにより v++ リンク時または SD カードの生成時に展開されます。ただし、bootgen コマンドを直接使用して BIF ファイルから BOOT.BIN を作成する場合は、BIF ファイルに完全なパス名が必要です。Bootgen は、<> シンボル間の名前を展開しません。

    /* linux */ the_ROM_image: { [fsbl_config] a53_x64 [bootloader] <fsbl.elf> [pmufw_image] <pmufw.elf> [destination_device=pl] <bitstream> [destination_cpu=a53-0, exception_level=el-3, trustzone] <bl31.elf> [destination_cpu=a53-0, exception_level=el-2] <u-boot.elf> } 
    • <> のファイル名はプレースホルダーです。Vitis は、プラットフォームをパッケージするときに、プレースホルダーをプラットフォームへの相対パスに置き換えます。最終的なアプリケーションのビルド時に実行される v++ パッケージャーは、これをイメージをパッケージするときに完全パスに展開します。

    • ファイル名プレースホルダーは、boot ディレクトリ内のファイルを指定します。boot ディレクトリ内のファイル名は、BIF ファイル内のプレースホルダーと同じである必要があります。

    • <bitstream> は、予約済みのキーワードです。v++ パッケージャーは、これを最終的なシステム BIT ファイルに置き換えます。

    • v++ パッケージャーには、<fsbl.elf> の FSBL のみが認識されるという既知の問題があります。そのため、MPSoC では、PetaLinux で生成された zynqmp_fsbl.elfを image ディレクトリの fsbl.elf にコピーする必要があります。この問題は、2020.2 で修正されています。

  5. ブート コンポーネントを準備します。

    生成された Linux ソフトウェア ブート コンポーネントを <yo_petalinux_dir>/images/linux ディレクトリから <full_pathname_to_zcu104_custom_pkg>/pfm/boot ディレクトリにコピーして、Vitis プラットフォームのパッケージ フローを実行する準備をします。

    • zynqmp_fsl.elf: Vitis の既知の問題の回避策として、fsbl.elf という名前に変更します。

    • pmufw.elf

    • bl31.elf

    • u-boot.elf

    注記: これらのファイルは、linux.bif に記載されている BOOT.BIN を作成するソースです。linux.bif 内のビットストリーム コンポーネントは、v++ リンカーで生成されるので、現時点ではまだ使用できません。これは、v++ パッケージャーにより自動的に処理されます。

  6. image ディレクトリを準備します。このディレクトリの内容は、v++ パッケージ ツールにより FAT32 パーティションにパッケージされます。

    • 生成された Linux ソフトウェアコンポーネントを <yo_petalinux_dir>/images/linux ディレクトリから <full_pathname_to_zcu104_custom_pkg>/pfm/image ディレクトリにコピーします。

      • boot.scr: u-boot 初期化用のスクリプト。

      • system.dtb: U-Boot がシステム設定を判断するためにブート中に読み取るデバイス ツリー blob。

    注記:

    • Vitis 2020.1 では、XRT で環境変数を設定するため image ディレクトリに init.sh と platform_desc.txt が必要です。XRT 2020.2 では必要ありません。

Vitis プラットフォームの作成

まず、手順 1 で Vivado により生成された XSA ファイルを使用して、Vitis プラットフォーム プロジェクトを作成します。

  1. Vitis IDE を起動します。

    • 作成した zcu104_custom_pkg フォルダーに移動します。

    cd <full_pathname_to_zcu104_custom_pkg> 
    • コンソールに vitis & と入力して Vitis を起動します。

    • ワークスペース ディレクトリとして zcu104_custom_pkg フォルダーを選択します。

  2. 新しいプラットフォーム プロジェクトを作成します。

    • [File] → [New] → [Platform Project] をクリックし、プラットフォーム プロジェクトを作成します。

    • プロジェクト名を入力します。この例の場合、「zcu104_custom」と入力します。[Next] をクリックします。

    • [Platform] ページで次を実行します。

      • [Browse] ボタンをクリックし、Vivado で生成された XSA ファイルを選択します。この例では zcu104_custom_platform.xsa です。

      • オペレーティング システムに [linux] を設定します。

      • プロセッサに [psu_cortexa53] を設定します。

      • [Architecture]: [64-bit]

      • [Generate boot components]: オフ。ここでは、PetaLinux で生成されたブートコンポーネントを使用します。

      • [Finish] をクリックします。

  3. [Platform Settings] ビューでソフトウェア設定を指定します。

    • [linux on psu_cortexa53] ドメインを選択し、[Browse] ボタンを使用して次のようにファイルおよびディレクトリを選択します。

    • [Bif File]: zcu104_custom_pkg/pfm/boot/linux.bif ファイルを選択し、[OK] をクリックします。

    • [Boot Components Directory]: zcu104_custom_pkg/pfm/boot を選択し、[OK] をクリックします。

    • [Linux Image Directory]: zcu104_custom_pkg/pfm/image を選択し、[OK] をクリックします。

    vitis_linux_config.png

    注記:

    • Vitis 2020.2 では、デフォルトの QEMU 引数を設定して Vitis プラットフォーム エミュレーションをイネーブルにします。QEMU 設定が追加されている場合は、独自の qemu_args.txt を作成し、[QEMU Arguments] フィールドにファイル名を設定してください。

  4. Vivado の [Explorer] ビューで zcu102_min プロジェクトを選択し、[Build] ボタンをクリックしてプラットフォームを生成します。

    ../../../../_images/build_vitis_platform.png

    注記: 生成されたプラットフォームがエクスポート ディレクトリに保存されます。FSBL および PMU を再構築するのに必要な場合は、BSP およびソース ファイルも提供され、プラットフォームと関連付けられます。プラットフォームがアプリケーション開発に使用できるようになりました。

    ../../../../_images/vitis_platform_output.png

    このプラットフォームと同じワークスペースで Vitis アプリケーションを作成した場合は、[New Platform Project] ウィザードの [Platform] ページにこのプラットフォームを選択できます。このプラットフォームを別のワークスペースで再利用するには、Vitis GUI を起動する前にこのパスを PLATFORM_REPO_PATHS 環境変数に追加するか、Vitis GUI のプラットフォーム選択ページで [Add] ボタンをクリックしてパスを追加します。

次に、このプラットフォーム上でいくつかのアプリケーションをビルドし、テストします。

スクリプトを使用した実行

Vitis プラットフォームを作成するスクリプトが提供されています。これらのスクリプトを使用するには、次の手順を実行します。

  1. ビルドを実行します。

    # cd to the step directory, e.g. cd step3_pfm make all 
  2. 生成されたファイルをクリーンアップするには、次を実行します。

    make clean

Copyright© 2020-2021