ZynqMPのブート
ZynqMPは主に
- FPGA
- Coretex-A53…ARMv8アーキテクチャベースの64bitデュアル(またはクアッド)コアプロセッサ
- Platform Management Unit…PMU、ブート中にシステムを初期化するプロセッサ
で構成されています。ZynqとはPMUがある点で異なっています。
そのため、ZynqMPのブートシーケンスは、Zynqのものと異なる点がいくつかあります。
ZynqMPでは
- PMUのROMが起動する
- ROMによってFSBLがSDカードから読み込まれ、Coretex-A53で起動する
- FSBLがATF(ArmTrusted Firmware)をロードし、Coretex-A53で起動する
- FSBLがU-BOOTをロードし、Coretex-A53で起動する
- U-BOOTがLinux kernelを起動する
というブートシーケンスになっています。トレンツ社が公開しているレファレンスデザインを使い、必要になる実行ファイルをビルドする手順を説明します。以降の作業はWindowsで行います。
これらのファイルをビルドする前に、レファレンスデザインのVivadoプロジェクトを作成します。
レファレンスデザインはこちらのTE0808-StarterKit_noprebuilt-vivado_2017.4-build_10_20180524091231.zipからダウンロードできます。ファイルを適当なディレクトリに解凍しておきます。ここでは解凍したディレクトリをStartKitとします。
StartKitにある_create_win_setup.cmdを右クリックし、管理者として実行します。
どのデザインを作るか聞かれるので、0を入力しミニマムなデザインを作成します。
上記画面でキーを押すとウィンドウが閉じ、StartKitフォルダにいくつか新しいファイルが作成されていることを確認してください。次にdesign_basic_settings.cmdを開いて以下の2点を変更します。
@set VIVADO_VERSION=2017.2 → @set VIVADO_VERSION=2017.4
@set PARTNUMBER=LAST_ID → @set PARTNUMBER=trenz.biz:te0808_9eg_2i_tebf0808:part0:4.0
@set XILDIR=C:/Xilinx → Vivadoがインストールされているディレクトリを指定する。
変更を保存しコマンドを実行します。これによりプロジェクトのターゲットボードなどが設定されます。
最後にvivado_create_project_guimode.cmdを実行すると、Vivadoが自動的に立ち上がりプロジェクトが生成されます。
VivadoのTCLコンソールにTE::hw_build_design -export_prebuiltと打ち込み、hdfファイルを作成します。
hdfファイルはデフォルト設定ではStarterKit/prebuilt/hardware/9eg_2ib_skに出力されます。
参考文献
https://japan.xilinx.com/support/documentation/user_guides/j_ug1085-zynq-ultrascale-trm.pdf