手順 3: Vitis プラットフォームの作成¶
プラットフォーム パッケージ用のファイルの準備¶
Vitis プラットフォームの作成フローに必要なすべてのファイルを保存します。
zcu104_custom_pkg
という名前を付けます。そして、その中にプラットフォーム作成ソース コンポーネントを格納するpfm
フォルダーを作成します。mkdir zcu104_custom_pkg cd zcu104_custom_pkg mkdir pfm
この手順の後、ディレクトリ階層は次のようになります。
- zcu104_custom_platform # Vivado Project Directory - zcu104_custom_plnx # PetaLinux Project Directory - zcu104_custom_pkg # Platform Packaging Directory - pfm # Platform Packaging Sources
sysroot をインストールします。
/images/linux ディレクトリに移動します。
./sdk.sh -d <Install Target Dir>
と入力して PetaLinux SDK をインストールします。-d
オプションを使用して、出力ディレクトリ zcu104_custom_pkg (この例の場合) への完全パス名を指定します。注記: このコマンドを実行する際、環境変数 LD_LIBRARY_PATH は設定しないでください。
テスト段階で、この rootfs に Vitis AI ライブラリをインストールします。
pfm ディレクトリ内に
boot
ディレクトリとsd_dir
ディレクトリを作成します。cd zcu104_custom_pkg/pfm mkdir boot mkdir sd_dir
この手順の後、ディレクトリ階層は次のようになります。
- zcu104_custom_platform # Vivado Project Directory - zcu104_custom_plnx # PetaLinux Project Directory - zcu104_custom_pkg # Platform Packaging Directory - sysroots # Extracted Sysroot Directory - pfm # Platform Packaging Sources - boot # Platform boot components - sd_dir # Files to be put in FAT32 partition of SD card
Vitis プラットフォームを作成するときは、ブート コンポーネントにはブート ディレクトリを、SD カードの FAT32 パーティションの内容には sd_dir を指定します。
ブート コンポーネントを準備します。
生成された Linux ソフトウェア ブート コンポーネントを <yo_petalinux_dir>/images/linux ディレクトリから <full_pathname_to_zcu104_custom_pkg>/pfm/boot ディレクトリにコピーして、Vitis プラットフォームのパッケージ フローを実行する準備をします。
zynqmp_fsbl.elf
pmufw.elf
bl31.elf
u-boot-dtb.elf: 名前を u-boot.elf に変更
system.dtb
注記: これらのファイルは、BOOT.BIN を作成する際のソースで、エミュレーション中に使用されます。
注記: PetaLinux 2021.1 で生成される u-boot.elf からは、デバイス ツリー情報が削除されています。u-boot-dtb.elf は、のために生成されます。Vitis 2021.1 で自動生成された BIF および
qemu_args.txt
ファイル (プラットフォーム作成プロセスを簡素化するために作成) を使用するには、ブート ディレクトリで u-boot-dtb.elf の名前を u-boot.elf に変更します。これで、u-boot がハードウェアとエミュレーションの両方で正常に動作します。次回のリリースでは、Vitis で自動生成された qemu_args.txt が更新され、dtb なしの u-boot.elf とスタンドアロンの system.dtb ファイルがエミュレーションに使用されます。sd_dir ディレクトリを準備します。このディレクトリの内容は、v++ パッケージ ツールにより FAT32 パーティションにパッケージされます。
生成された Linux ソフトウェアコンポーネントを <your_petalinux_dir>/images/linux directory ディレクトリから <full_pathname_to_zcu104_custom_pkg>/pfm/sd_dir ディレクトリにコピーします。
boot.scr: u-boot 初期化用のスクリプト。
system.dtb: Linux がシステム設定を判断するためにブート中に読み取るデバイス ツリー blob。
Vitis プラットフォームの作成¶
Vitis プラットフォームは、Vitis IDE または XSCT コマンド ラインを使用して作成できます。デザインに XSA が 1 つしか含まれない場合、Vitis IDE でプラットフォームを作成できます。XSA (hw および hw-emu) を使用する必要がある場合は、XSCT を使用してプラットフォームを作成してください。
Vitis IDE を使用して Vitis プラットフォームを作成する詳細な手順は、ここをクリックしてください
まず、手順 1 で Vivado により生成された XSA ファイルを使用して、Vitis プラットフォーム プロジェクトを作成します。Vitis IDE を起動します。
作成した zcu104_custom_pkg フォルダーに移動します。
cd <full_pathname_to_zcu104_custom_pkg>
コンソールに
vitis &
と入力して Vitis を起動します。ワークスペース ディレクトリとして zcu104_custom_pkg フォルダーを選択します。
新しいプラットフォーム プロジェクトを作成します。
[File] → [New] → [Platform Project] をクリックし、プラットフォーム プロジェクトを作成します。
プロジェクト名を入力します。この例の場合、「
zcu104_custom
」と入力します。[Next] をクリックします。[Platform] ページで次を実行します。
[Browse] ボタンをクリックし、Vivado で生成された XSA ファイルを選択します。この例では
zcu104_custom_platform.xsa
です。オペレーティング システムに [linux] を設定します。
プロセッサに [psu_cortexa53] を設定します。
[Architecture]: [64-bit]
[Generate boot components]: オフ。ここでは、PetaLinux で生成されたブートコンポーネントを使用します。
[Finish] をクリックします。
[Platform Settings] ビューでソフトウェア設定を指定します。
[linux on psu_cortexa53] ドメインを選択し、[Browse] ボタンを使用して次のようにファイルおよびディレクトリを選択します。
[Bif file]: ドロップダウン アイコンをクリックして、[Generate BIF] を選択します。
注記:
<>
内のファイル名はプレースホルダーです。Vitis は、プラットフォームをパッケージするときに、プレースホルダーをプラットフォームへの相対パスに置き換えます。最終的なアプリケーションのビルド時に実行される v++ パッケージャーは、これをイメージをパッケージするときに完全パスに展開します。ファイル名プレースホルダーは、boot コンポーネント ディレクトリ内のファイルを指定します。boot ディレクトリ内のファイル名は、BIF ファイル内のプレースホルダーと同じである必要があります。<bitstream>
は、予約済みのキーワードです。v++ パッケージャーは、これを最終的なシステム BIT ファイルに置き換えます。[Boot Components Directory]: zcu104_custom_pkg/pfm/boot を選択し、[OK] をクリックします。
[FAT32 Partition Directory]: zcu104_custom_pkg/pfm/sd_dir を選択し、[OK] をクリックします。
注記: 2020.2 以降からは、デフォルトの QEMU 引数を設定して Vitis プラットフォーム エミュレーションをイネーブルにします。QEMU 設定が追加されている場合は、独自の qemu_args.txt を作成し、[QEMU Arguments] フィールドにファイル名を設定してください。
Vivado の [Explorer] ビューで zcu102_min プロジェクトを選択し、[Build] ボタンをクリックしてプラットフォームを生成します。
注記: 生成されたプラットフォームがエクスポート ディレクトリに保存されます。FSBL および PMU を再構築するのに必要な場合は、BSP およびソース ファイルも提供され、プラットフォームと関連付けられます。プラットフォームがアプリケーション開発に使用できるようになりました。
このプラットフォームと同じワークスペースで Vitis アプリケーションを作成した場合は、[New Platform Project] ウィザードの [Platform] ページにこのプラットフォームを選択できます。このプラットフォームを別のワークスペースで再利用するには、Vitis GUI を起動する前にこのパスを PLATFORM_REPO_PATHS 環境変数に追加するか、Vitis GUI のプラットフォーム選択ページで [Add] ボタンをクリックしてパスを追加します。
XSCT を使用して Vitis プラットフォームを作成する詳細な手順は、ここをクリックしてください。
XSCT コマンドを使用して Tcl ファイルを作成します。たとえば、xsct_create_pfm.tcl の主な部分を次に示します
# Create a platform project platform create -name zcu104_custom_platform \ -desc "A custom platform ZCU104 platform" \ -hw <Hardware>.xsa \ -hw_emu <Hardware_Emulation>.xsa \ -out <Output_Directory> \ -no-boot-bsp # If you don't need to support hardware emulation, you can omit the option -hw_emu and its value. # Add Linux domain domain create -name xrt -proc psu_cortexa53 -os linux -arch {64-bit} -runtime {ocl} -sd-dir {./sd_dir} -bootmode {sd} domain config -boot {./boot} domain config -generate-bif domain config -qemu-data ./boot platform write platform generate
注記: スクリプト内のファイル名とディレクトリ名をプロジェクト ファイルの場所に置き換えてください。
注記: ハードウェア エミュレーションをサポートする必要がない場合は、
platform create
コマンドの-hw_emu
オプションとその値を省略できます。
platform create
コマンドには、次の入力値が必要です。
-name
: プラットフォーム名-hw
: ハードウェア XSA ファイルのディレクトリ-hw_emu
: ハードウェア エミュレーションの XSA ファイルのディレクトリ-out
: プラットフォームの出力パス-sd-dir
: SD カード イメージの FAT32 パーティションに含めるファイルを含むディレクトリ。
domain
コマンドを使用すると、SD ブート モードで Linux ドメインが設定されます。この場合、./sd_dir
内のファイルが使用されて、SD カード イメージの FAT32 パーティションと ./boot
ディレクトリにあるファイルが形成され、boot.bin が生成されます。
これらの値は、変数を実際の値に置き換えてスクリプトに直接渡すか、Tcl スクリプトのヘッダーで定義するか、このスクリプトを呼び出すときに値を XSCT に渡すことができます。
次は、xsct_create_pfm.tcl のすべての内容をハード コードした場合の XSCT の呼び出す例です。
xsct xsct_create_pfm.tcl
カスタマイズしやすくするため、ref_files ディレクトリ内の Makefile および xsct_create_pfm.tcl 例では、変数を使用してファイル名およびディレクトリの場所を表しています。これらの例を参照し、スクリプトのプログラム性を高めてください。
スクリプトを使用した実行¶
Vitis プラットフォームを作成するスクリプトが提供されています。これらのスクリプトを使用するには、次の手順を実行します。
ビルドを実行します。
# cd to the step directory, e.g. cd step3_pfm make all
生成されたファイルをクリーンアップするには、次を実行します。
make clean