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

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

Document ID
UG1393
Release Date
2020-02-28
Version
2019.2 Japanese

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>
     }