はじめに
UltraZed-EG スターターキットに Debian GNU/Linux (v2017.3版) を構築する方法について、具体的な方法をいくつかに分けて説明します。
この記事では、ZynqMP の Boot Loader である BOOT.BIN の構築に関して説明します。
必要な環境
- Vivado 2017.2
- Vivado SDK 2017.2
Boot Loader 構築環境の準備
次の URL から git clone でリポジトリをダウンロードして v2017.3.0 をチェックアウトします。
shell$ git clone git://github.com/ikwzm/ZynqMP-FPGA-Linux
shell$ cd ZynqMP-FPGA-Linux
shell$ git checkout v2017.3.0
BOOT.BIN を構成するファイル
ZynqMP の Boot Loader は、起動ストレージにある BOOT.BIN です。BOOT.BIN を構築するには以下のファイルが必要です。
- target/UltraZed-EG-IOCC/
- build/
- zynqmp_fsbl.elf (FSBL)
- zynqmp_pmufw.elf (PMUFW)
- bl31.elf (ARM Trusted Firmware Boot Loader state 3-1)
- u-boot.elf (U-Boot)
- build/
それぞれのファイルの構築は構築方法を別記事として投稿しているのでそちらを参照してください。
BOOT.BIN を作るための設定ファイル
BOOT.BIN を作るために、次のような boot.bif ファイルを用意しています。
the_ROM_image:
{
[fsbl_config] a53_x64
[bootloader] zynqmp_fsbl.elf
[pmufw_image] zynqmp_pmufw.elf
[destination_cpu=a53-0, exception_level=el-3, trustzone] bl31.elf
[destination_cpu=a53-0, exception_level=el-2] u-boot.elf
}
BOOT.BIN の構築
Vivado に含まれている bootgen コマンドを使って BOOT.BIN を作ります。-arch zynqmp
でアーキテクチャを、-image boot.bif
で前節で説明した boot.bif を指定します。
shell$ cd target/UltraZed-EG-IOCC/build
shell$ bootgen -arch zynqmp -image boot.bif -w -o ../boot/boot.bin
上のコマンドを実行することにより、target/UltraZed-EG-IOCC/boot/boot.bin が生成されます。
PL の Bitstream File を追加したい場合
前節で生成した BOOT.BIN には PL(Programmable Logic) の Bitstream File が含まれていません。そのため Boot Loader 起動時に PL のコンフィギュレーションは行われません。もし、Boot Loader で PL のコンフィギュレーションを行いたい場合は、次のような boot.bif を用意して BOOT.BIN を作ってください。
the_ROM_image:
{
[fsbl_config] a53_x64
[bootloader] zynqmp_fsbl.elf
[pmufw_image] zynqmp_pmufw.elf
[destination_device=pl] design_1_wrapper.bit
[destination_cpu=a53-0, exception_level=el-3, trustzone] bl31.elf
[destination_cpu=a53-0, exception_level=el-2] u-boot.elf
}
上の例では PL の Bitstream File として design_1_wrapper.bit を指定しています。