ソフトウェア コンポーネントの作成

Vitis プラットフォームには、ソフトウェア コンポーネントが必要です。ベアメタル/スタンドアロン アプリケーションの場合、Vitis プラットフォーム プロジェクト フローで FSBL および PMU ファームウェアなどの必要なブート コンポーネントとボード サポート パッケージ (BSP) を生成します。Linux の場合、PetaLinux ツールを Vitis ツール外で起動して、必要な Linux イメージ、ELF (Executable and Linkable Format) ファイル、および XRT サポートを含む sysroot を作成します。PetaLinux と同じ Linux 出力ファイルを生成するのであれば、Yocto やサードパーティの Linux 開発ツールを使用することもできます。ソフトウェア コンポーネント要件は、ソフトウェア コンポーネント要件 にリストされています。

PetaLinux を使用した Linux 出力ファイルの生成

Linux プロジェクトの場合は、PetaLinux プロジェクトを作成して、XSA で定義されるハードウェアのサポートを追加し、XRT に必要なソフトウェア パッケージを含めるように設定できます。次の手順に従って、Linux ソフトウェア オブジェクトとそのプラットフォームの Linux イメージを生成します。PetaLinux ツールの詳細は、『PetaLinux ツール資料: リファレンス ガイド』 (UG1144) を参照してください。

Linux ソフトウェア オブジェクトと Linux イメージを生成するには、次のコマンドを実行します。

  1. 作業ディレクトリに移動し、サブディレクトリを作成して、Vitis プラットフォーム作成のワークスペースを保持するサブディレクトリと、PetaLinux ツールからの出力ファイルを保持するブート ディレクトリを作成します。
    cd zcu102_min_pkg
    mkdir pfm; cd pfm
    mkdir wksp1
    mkdir boot
    cd ..
  2. PetaLinux ツールへのパスを設定します。
    source <PetaLinux_Tool_Install_Directory>/settings.sh
  3. zcu102_pkg ディレクトリに petalinux という名前の PetaLinux プロジェクトを作成します。

    プロジェクト名はユーザーが定義しますが、この例の場合は、ここで使用される命名規則を使用してください。PetaLinux プロジェクトは、ボード サポート パッケージ (BSP) またはテンプレートに基づいて作成できます。BSP が使用でき、必要な機能が提供されている場合は、それを開始点として使用できます。この例では、Zynq® UltraScale+™ MPSoC テンプレートから開始します。

    petalinux-create -t project --template zynqMP -n petalinux
  4. XSA を含むディレクトリへのパスを指定して、PetaLinux プロジェクトへハードウェア カスタマイズを追加します。
    cd petalinux
    petalinux-config --get-hw-description=../vivado
  5. PetaLinux メニューで必要であれば CONFIG_SUBSYSTEM_MACHINE_NAMEzcu102-rev1.0 に設定します。PetaLinux ツールでは、『PetaLinux ツール資料: リファレンス ガイド』 (UG1144) にリストされる特定のザイリンクス ボードが認識されます。
    注記: petalinux-config と入力すると、GUI インターフェイスが起動されます。メニューおよび選択肢は、方向キーおよび Tab キーを使用して選択できます。

    マシン名を変更するには、次の手順に従います。

    1. DTG Settings > (template) MACHINE_NAME をクリックし、テンプレートを zcu102-rev1.0 に変更します。
    2. プロンプトが表示されたら、保存して終了します。
  6. 次の CONFIG_x 行を petalinux/project-spec/meta-user/conf/user-rootfsconfig ファイルに追加して、XRT サポート用のユーザー パッケージを追加します。XRT が Vitis エンベデッド ソフトウェア専用フローに対して作成され、XRT およびアクセラレーション カーネルを使用しない場合、この手順は飛ばしてください。
    • CONFIG_xrt
    • CONFIG_xrt-dev
    • CONFIG_zocl
    • CONFIG_opencl-clhpp-dev
    • CONFIG_opencl-headers-dev
    • CONFIG_packagegroup-petalinux-opencv
  7. 次のテキストを petalinux/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi ファイルに追加して、zocl ドライバーを含めるようにデバイス ツリーをアップデートします。
    ヒント: XRT が Vitis エンベデッド ソフトウェア開発フローに対して作成され、XRT およびアクセラレーション カーネルを使用しない場合、この手順は飛ばしてください。
    &amba {
     	zyxclmm_drm {
     		compatible = “xlnx,zocl”;
     		status = “okay”;
     	};
     };
    ヒント: コピーして貼り付ける際には、system_user.dtsi ファイルに貼り付けるクォーテーション マークを左右で形の同じまっすぐな方のクォーテーションにしておかないと、PetaLinux ビルド中に解析エラーになります。
  8. 追加したユーザー パッケージすべてをイネーブルにします。XRT が Vitis エンベデッド ソフトウェア専用フローに対して作成され、XRT およびアクセラレーション カーネルを使用しない場合、この手順は飛ばしてください。

    ユーザーのパッケージをイネーブルにするには、次の手順に従います。

    1. petalinux-config -c rootfs と入力します。
    2. ユーザー パッケージを選択します。
    3. 「y」と入力して、xrtxrt-devzoclopencl-hpp-devopencl-headers-dev、および packagegroup-petalinux-opencv のユーザー パッケージをイネーブルにします。
    4. プロンプトが表示されたら、保存して終了します。
  9. CMA メモリの容量割り当てを 1024 MB に増加します (オプション)。
    1. petalinux-config -c kernel と入力します。
    2. Device Drivers > Generic Driver Options > DMA Contiguous Memory Allocator > Size in Mega Bytes をクリックします。
    3. Enter キーを押して、256 を 1024 に変更します。
    4. [ ] メニュー選択肢に 'n' を入力して、次をオフにします。
      • CPU Power Mangement > CPU Idle > CPU idle PM support
      • CPU Power Management > CPU Frequency scaling > CPU Frequency scaling
    5. プロンプトが表示されたら、保存して終了します。
  10. PetaLinux プロジェクト (petalinux) 内から Linux ビルドを開始します。
    petalinux-build
  11. ターゲット Linux システム用の sysroot セルフインストーラーを作成します。
    cd images/linux
    petalinux-build --sdk
  12. sdk.sh セルフインストーラーを使用して、sysroot を出力およびインストールします。プロンプトが表示されたら、出力ディレクトリへの完全パスを指定して、生成した sysroot ファイルを先ほど作成した pfm 作業ディレクトリに保存します。
    1. ./sdk.sh と入力します。
    2. 出力ディレクトリ (<Full_Pathname_to_zcu102_min_pkg>/pfm) への完全パスを指定して、確認します。
  13. PetaLinux ビルドが問題なく終了すると、生成された Linux ソフトウェア コンポーネントが <PetaLinux_Project>/images/linux ディレクトリに含まれるようになります。ザイリンクスの例では、petalinux/images/linux ディレクトリに生成されたイメージと次の ELF ファイルが含まれます。Vitis プラットフォーム作成フローを実行するには、これらのファイルを zcu102_min_pkg/pfm/boot ディレクトリにコピーします。
    • image.ub
    • zynqmp_fsbl.elf
    • pmufw.elf
    • bl31.elf
    • u-boot.elf
  14. 次の内容を含む BIF ファイル (linux.bif) をブート ディレクトリに追加します。ファイル名は、ブート ディレクトリの内容と同じにする必要があります。Vitis ツールは、v++ リンク時または SD カードの生成時、プラットフォームの sw ディレクトリに対して相対的にパス名を展開します。ただし、bootgen コマンドを直接使用して BIF ファイルから BOOT.BIN を作成する場合は、BIF ファイルに完全なパス名が必要です。Bootgen は <> シンボル間の名前を展開しません。
    /* linux */
     the_ROM_image:
     {
     	[fsbl_config] a53_x64
     	[bootloader] <zynqmp_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>
     }