手順 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> 

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

    - 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_packagegroup-petalinux-xrt 
    • Vitis アクセラレーション フローには、packagegroup-petalinux-xrt が必要です。XRT と ZOCL が含まれます。

    • xrt-dev は、2020.1 では開発環境を作成しない場合でも必要です。これは、運用環境に必要なソフト リンクがパッケージされるという既知の問題があるからです。XRT 2020.2 では、この問題は修正されています。

    システム管理を容易にするパッケージ:

    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 Mangement] → [CPU Idle] → [CPU idle PM support[

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

    • 終了して保存します。

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

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

ZOCL ドライバー モジュールは、関連するハードウェアのないモジュールですが、Vitis アクセラレーション フローで必要です。これはザイリンクス ランタイム (XRT) の一部です。これを system-user.dtsi に追加します。

また、XSA では割り込みコントローラーに何も接続されていので、axi_intc_0 のパラメーター割り込み入力の数を 0 から 32 に変更します。これは、v++ でカーネルをリンクした後に実行します。

  1. project-spec/meta-user/cetie-bsp/device-tree/files/system-user.dtsi ファイルに次の内容を追加します。

    &amba { zyxclmm_drm { compatible = "xlnx,zocl"; status = "okay"; interrupt-parent = <&axi_intc_0>; interrupts = <0 4>, <1 4>, <2 4>, <3 4>, <4 4>, <5 4>, <6 4>, <7 4>, <8 4>, <9 4>, <10 4>, <11 4>, <12 4>, <13 4>, <14 4>, <15 4>, <16 4>, <17 4>, <18 4>, <19 4>, <20 4>, <21 4>, <22 4>, <23 4>, <24 4>, <25 4>, <26 4>, <27 4>, <28 4>, <29 4>, <30 4>, <31 4>; }; }; &axi_intc_0 { xlnx,kind-of-intr = <0x0>; xlnx,num-intr-inputs = <0x20>; }; &sdhci1 { no-1-8-v; disable-wp; }; 
    • zyxclmm_drm ノードは ZOCL ドライバーに必要です。

    • axi_intc_0 ノードは、割り込み入力の数を 0 から 32 に変更し、割り込みのタイプをレベル High に設定します。

    • 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 は、linux/image ディレクトリにあります。これを、次の手順で抽出します。

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

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

PetaLinux プロジェクトを再作成し、出力を生成するスクリプトが提供されています。これらのスクリプトを使用するには、次の手順を実行します。

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

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

    make clean

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

Copyright© 2020-2021