手順 2: PetaLinux でのソフトウェア コンポーネントの作成

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

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

PetaLinux プロジェクトの作成

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

    source <petaLinux_tool_install_dir>/settings.sh
  2. zcu104_custom_plnx という名前の PetaLinux プロジェクトを作成し、前の手順で作成した XSA ファイルを使用してハードウェアを設定します。

    petalinux-create --type project --template zynqMP --name zcu104_custom_plnx cd zcu104_custom_plnx petalinux-config --get-hw-description=<vivado_design_dir> # The directory where your *.xsa file locates. if you do as step1 says strictly here, the <vivado_design_dir> is the path of <zcu104_custom_platform> 

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

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

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

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

    • zcu104-revc に変更します。

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

    注記:

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

    • カスタム ボードを使用している場合は、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 パーティションのサイズ変更に使用できます。これは、手順 4 で 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/system-user.dtsi にカスタム デバイス ツリーの変更を追加することもできます。この例では、sdhci1 を低速モードに設定します。

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

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

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 step2_petalinux make all 
  2. 生成されたファイルをクリーンアップするには、次を実行します。

    make clean

注記: スクリプトは、sysroot を /images/linux ディレクトリに抽出します。スクリプト記述のため、上記の詳細な手順とは異なります。

次の手順

注記: ハードウェア プラットフォームとソフトウェア プラットフォームがすべて生成されます。次に、Vitis プラットフォームをパッケージします。

Copyright© 2021 Xilinx