Edited at

UltraZed 向け Debian GNU/Linux (v2017.3版) の構築(BOOT.BIN編)

More than 1 year has passed since last update.


はじめに

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)





それぞれのファイルの構築は構築方法を別記事として投稿しているのでそちらを参照してください。


BOOT.BIN を作るための設定ファイル

BOOT.BIN を作るために、次のような boot.bif ファイルを用意しています。


target/UltraZed-EG-IOCC/build/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 を作ってください。


target/UltraZed-EG-IOCC/build/boot.bif

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 を指定しています。