Vitis™ プラットフォームの作成チュートリアル

xilinx.com の Vitis™ 開発環境を参照

PetaLinux のビルドとシステムのカスタマイズ

バージョン: PetaLinux 2022.1

Vitis プラットフォームには、ソフトウェア コンポーネントが必要です。ここでは、ソフトウェア環境のカスタマイズについて説明するため、PetaLinux ツールを使用して XRT サポートを含む Linux イメージと sysroot を作成し、高度な調整を実行します。カスタマイズの中で、XRT のインストールと ZOCL デバイス ツリーのセットアップは必須です。その他のカスタマイズはオプションです。カスタマイズの目的は説明されています。必要に応じて自由にカスタマイズを選択してください。

PetaLinux と同じ Linux 出力ファイルが生成されるのであれば、Yocto やサードパーティの Linux 開発ツールを使用することもできます。

XSA ファイルは PetaLinux プロジェクトの必須入力ファイルです。ユーザーは Vivado プロジェクトからエクスポートされた XSA ファイルを入力できます。今回は、ザイリンクス社のウェブサイトからダウンロードできる zcu104 基本プラットフォームを例にして、システム カスタマイズの方法を紹介します。もちろん、そのページからほかのプラットフォームをダウンロードすることも可能です。

基本プラットフォームの準備

  1. ワークスペースの作成

    mkdir workspace cd workspace
  2. 基本プラットフォームをダウンロードし、workspace フォルダーに保存します。それからファイルの中身を抽出します。

    unzip xilinx_zcu104_base_202210_1.zip #extract the base platform tree -L 2 ├── xilinx_zcu104_base_202210_1 │ ├── hw │ ├── hw_emu │ ├── sw │ ├── version │ └── xilinx_zcu104_base_202210_1.xpfm └── xilinx_zcu104_base_202210_1.zip

PetaLinux プロジェクトの作成

  1. PetaLinux 環境を設定します。

    source<petaLinux_tool_install_dir>/settings.sh
  2. zcu104_petalinux という名前で PetaLinux プロジェクトを作成し、XSA ファイルで hw オプションを設定します。

    petalinux-create --type project --template zynqMP --name zcu104_petalinux cd zcu104_petalinux petalinux-config --get-hw-description=xilinx_zcu104_base_202210_1/hw/hw.xsa # After you extract the base platform you can find hw.xsa or hw_emu.xsa under <xilinx_zcu104_base_202210_1> directory. if you want to do emulation you can choose hw_emu.xsa

    注記: --template オプションはチップセットを指定します。zcu104 ボードは ZYNQMP シリーズのチップを採用しています。したがって、このオプションを「zynqMP」と指定しています。Versal のチップセットを使用している場合は、「versal」と設定してください。

    注記: PetaLinux は XSA を使ってデバイス ツリーを生成します。当社のハードウェア XSA とハードウェア エミュレーション XSA にはまったく同じペリフェラルが含まれているため、どちらを PetaLinux に提供しても違いはありません。ハードウェア エミュレーション用のハードウェア デザインを簡素化する場合は、デバイス ツリーとドライバーを必要とするすべてのペリフェラルを保持して、自動生成されたデバイス ツリーを再利用できるようにしておくことをお勧めします。この 2 つのデザインに異なるアドレス指定可能なペリフェラルがある場合、ハードウェア実行とハードウェア エミュレーション用に 2 セットのデバイス ツリーを別々に作成する必要があります。

  3. petalinux-config メニューが表示されます。この設定ウィンドウで ZCU104 デバイス ツリーが使用されるよう設定します。

    • [DTG Settings] → [MACHINE_NAME] を選択します。

    • zcu104-revc に変更します。

    • [OK] → [Exit] → [Exit] → [Yes] を選択してこのウィンドウを閉じます。

    注記:

    • ザイリンクス開発ボードを使用している場合は、ボード コンフィギュレーションが DTS 自動生成に含まれるようにするため、マシン名を変更することをお勧めします。対応するマシンメイは、ug1144 を確認してください。

    • カスタム ボードを使用している場合は、system-user.dtsi で関連の設定 (PHY 情報 DTS ノードなど) を手動で指定する必要があります。

    • デバイス ツリーは、組み込み Linux の汎用テクノロジです。詳細は、インターネットで検索してください。

ルート ファイル システム、カーネル、デバイス ツリー、および U-Boot のカスタマイズ

  1. ユーザー パッケージを追加します。

    • <your_petalinux_project_dir>/project-spec/meta-user/conf/user-rootfsconfig ファイルに次に示す CONFIG_x 行を追加します。

    注記: この手順は必須ではありませんが、次の手順で必要なパッケージをすべて検出しやすくなります。この手順を省略する場合は、次の手順で必要なパッケージを 1 つずつイネーブルにしてください。

    ベース XRT サポート用のパッケージ:

    CONFIG_xrt
    • xrt が Vitis アクセラレーション フローには必要です。ZOCL ドライバー モジュールなどの依存パッケージが自動的に追加されます。

    システム管理を容易するのに推奨されるパッケージ:

    CONFIG_dnf CONFIG_e2fsprogs-resize2fs CONFIG_parted CONFIG_resize-part
    • dnf はパッケージ管理用です。

    • parted、e2fsprogs-resize2fs、resize-part は、ext4 パーティションのサイズ変更に使用できます。これは、Vitis AI テスト ケースを実行するときに、SD カード サイズ全体を使用できるよう ext4 パーティションを拡張するために使用します。

    Vitis AI 依存サポート用のパッケージ:

    CONFIG_packagegroup-petalinux-vitisai

    ターゲット ボード上に Vitis AI アプリケーションをネイティブにビルドするためのオプションのパッケージ:

    CONFIG_packagegroup-petalinux-self-hosted CONFIG_cmake CONFIG_packagegroup-petalinux-vitisai-dev CONFIG_xrt-dev CONFIG_opencl-clhpp-dev CONFIG_opencl-headers-dev CONFIG_packagegroup-petalinux-opencv CONFIG_packagegroup-petalinux-opencv-dev

    GUI で Vitis AI デモ アプリケーションを実行するためのオプションのパッケージ:

    CONFIG_mesa-megadriver CONFIG_packagegroup-petalinux-x11 CONFIG_packagegroup-petalinux-v4lutils CONFIG_packagegroup-petalinux-matchbox
  2. 選択した rootfs パッケージをイネーブルにします。

    • petalinux-config -c rootfs を実行します。

    • [user packages] を選択します。

    • 上記すべての rootfs ライブラリの名前を選択します。

    petalinux_rootfs.png

    注記: 手順 1 をスキップした場合は、対応するパッケージをイネーブルにしてください。

  3. OpenSSH をイネーブルにし、Dropbear をディスエーブルにします (オプション)。

    Dropbear は、Vitis ベース エンベデッド プラットフォームのデフォルトの SSH ツールです。Dropbear の代わりに OpenSSH を使用する場合は、システムで SSH よりも 4 倍のデータ転送速度を実現できます (1 Gbps イーサネット環境でテスト済み)。Vitis AI アプリケーションでは、リモート表示機能を使用して機械学習結果を表示できるので、OpenSSH を使用すると表示を向上できます。*

    • RootFS 設定メニューで、[Exit] を一度選択してルート ディレクトリに移動します。

    • [Image Features] を選択します。

    • [ssh-server-dropbear] をオフにし、[ssh-server-openssh] をオンにして、[Exit] を選択します。

    ssh_settings.png

    • [Filesystem Packages] → [misc] → [packagegroup-core-ssh-dropbear] を選択し、[packagegroup-core-ssh-dropbear] をオフにします。

    • [Exit] を 2 回クリックして [Filesystem Packages] に戻ります。

    • [console] → [network] → [openssh] を選択し、[openssh][openssh-sftp-server][openssh-sshd][openssh-scp] をオンにします。

    • [Exit] を 4 回選択してルート レベルに戻ります。

  4. パッケージ管理をイネーブルにします。

    パッケージ管理機能を使用すると、ボード上でソフトウェア パッケージのインストールおよびアップグレードをオンザフライで実行できます。

    • RootFS 設定メニューで [Image Features] を選択し、[package-management] および [debug_tweaks] をオンにします。

    • [OK] をクリックし、[Exit] を 2 回クリックしてから、[Yes] をク選択して変更を保存します。

  5. カーネル設定で CPU アイドル機能をディスエーブルにします (デバッグ中に推奨)。

    CPU アイドル機能は、プロセッサが使用されていないときに、プロセッサをアイドル状態 (WFI) にします。JTAG が接続されている場合、ホスト マシン上のハードウェア サーバーはプロセッサと定期的に通信します。アイドル状態のプロセッサと通信すると、AXI トランザクションが完了しないためシステムがハングします。そのため、プロジェクト開発段階では CPU アイドル機能をディスエーブルにすることをお勧めします。デザインが完成した後、最終製品の消費電力を節約するために、再度イネーブルにできます。

    • petalinux-config -c kernel を実行してカーネル設定を起動します。

    • メニュー選択で N を押して、次の項目をオフにします。

      • [CPU Power Management] → [CPU Idle] → [CPU idle PM support]

      • [CPU Power Management] → [CPU Frequency scaling] → [CPU Frequency scaling]

    • 終了して保存します。

デバイス ツリーのアップデート

デバイス ツリーは、システムのハードウェア コンポーネントを記述します。ザイリンクスのデバイス ツリー ジェネレーター (DTG) では、XSA ファイルからのハードウェアの構成に従ってデバイス ツリーを生成できます。対応するハードウェアのないドライバー ノードがある場合や、DTG で自動生成された設定を上書きする必要がある場合など、XSA に含まれていない設定があれ場合は、PetaLinux の system-user.dtsi にカスタム設定を追加する必要があります。

ZOCL ドライバー モジュールには、関連するハードウェアがありませんが、XRT とVitis アクセラレーション フローで必要です。割り込み信号の関係を記述するには、デバイス ツリー ノードが必要です。Vitis と PetaLinux の以前のバージョンでは、ZOCL デバイス ツリー ノードを手動で追加する必要がありました。2021.1 からは、XSA が Vitis エクステンシブル プラットフォーム プロジェクトである場合、PetaLinux で ZOCL デバイス ツリー ノードが自動的に追加できるようになっています。

デバイス ツリー ジェネレーター (DTG) は、割り込みコントローラー (axi_intc_0) の入力番号のパラメーターを 0 から 32 に上書きすることもできます。これは、プラットフォーム XSA では割り込みコントローラーの入力が接続されておらず、v++ がアクセラレーション カーネルをリンクした後に接続されるためです。

PetaLinux で生成されたデバイス ツリーは、project-spec/components/device-tree/device-tree/pl.dtsi ファイルで確認できます。

また、project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi にカスタム デバイス ツリーの変更を追加することもできます。この例では、sdhci1 を低速モードに設定します。

&sdhci1 { no-1-8-v; disable-wp; };
  • sdhci1 ノードは、ZCU104 ボードでのカードの互換性を向上させるため、SD カードの速度を下げます。これは、ZCU104 にのみ関連します。Vitis アクセラレーション プラットフォーム要件の一部ではありません。

注記: ref_files/system-user.dtsi にファイル例があります。

EXT4 rootfs サポートの追加

Vitis アクセラレーション デザインには、EXT4 を使用することをお勧めします。PetaLinux は、デフォルトで rootfs に initramfs 形式を使用します。実行時に rootfs の変更を保持することはできません。initramfs は、rootfs の内容を DDR に保持するので、ユーザーが使用可能な DDR メモリが減少します。ルート ファイル システムの変更を保持し、使用可能な DDR メモリを最大限に利用できるようにするため、2 つ目のパーティションの rootfs には EXT4 フォーマットを使用し、1 つ目のパーティションは FAT32 にしてブート ファイルを格納します。

Vitis AI アプリケーションは、追加のソフトウェア パッケージをインストールします。Vitis AI アプリケーションを実行する場合は、EXT4 rootfs を使用してください。initramfs を使用する場合は、すべての Vitis AI 依存を initramfs に追加してください。

  1. PetaLinux で EXT4 rootfs を生成します。

    • petalinux-config を実行します。

    • [Image Packaging Configuration] を選択します。

    • [Root File System Type] に値を入力します。

    • [Root File System Type] に [EXT4] を選択します。

    • 終了して保存します。

    missing image

  1. Linux でブート時に EXT4 rootfs が使用されるようにします。

    ブート時に使用する rootfs の設定は、bootargs で制御されます。bootargs の設定を変更して Linux が EXT4 パーティションから起動するようにします。bootargs をアップデートする方法は複数あります。次のいずれかの方法を使用してください。

    方法 A: PetaLinux の設定

    • petalinux-config を実行します。

    • [DTG settings] → [Kernel Bootargs] → [generate boot args automatically] を NO に変更し、[User Set Kernel Bootargs]earlycon console=ttyPS0,115200 clk_ignore_unused root=/dev/mmcblk0p2 rw rootwait cma=512M に変更します。[OK] を選択し、[Exit] を 3 回選択して保存します。

    方法 B: デバイス ツリー

    • system-user.dtsi をアップデートします。

    • このファイルに、前述の変更に加え、ルートに chosen ノードを追加します。

    /include/ "system-conf.dtsi" / { chosen { bootargs = "earlycon console=ttyPS0,115200 clk_ignore_unused root=/dev/mmcblk0p2 rw rootwait cma=512M"; }; };

    注記:

    • root=/dev/mmcblk0p2 は、SD カードの 2 つ目のパーティション (EXT4 パーティション) を使用することを意味します。

    • bootargs では、次のオプションも設定します。

      • clk_ignore_unused: このクロックが使用されていない場合でも、Linux カーネルがクロックをオフにしないよう指定します。PL カーネルはデバイス ツリーには含まれないので、これは PL カーネルのみを駆動するのに便利なクロックです。

      • cma=512M: CMA は、PS と PL カーネル間でデータを交換するために使用されます。CMA のサイズは、PL カーネル要件によって決まります。Vitis AI/DPU には、512 MB 以上の CMA が必要です。

PetaLinux イメージのビルド

  1. PetaLinux プロジェクト内の任意のディレクトリから、PetaLinux プロジェクトをビルドします。

    petalinux-build

    PetaLinux イメージ ファイルは/images/linux に生成されます。

  2. ターゲット Linux システム用の sysroot セルフインストーラーを作成します。

    petalinux-build --sdk

    生成された sysroot パッケージ sdk.sh/images/linux ディレクトリにあるので、必要な時に抽出できます。

ファースト トラック

PetaLinux プロジェクトを再作成し、出力を生成するスクリプトが提供されています。

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

    # cd to the step directory, e.g. cd ref_files make all XSA_PATH=<path/to/base_platform/> # to specify the XSA file path
  2. 生成されたファイルをクリーンアップするには、次を実行します。

    make clean

Copyright© 2022 Xilinx