LoginSignup
1

More than 5 years have passed since last update.

Ultra96 向け Debian GNU/Linux (v2018.2版) の構築(BOOT.BIN編)

Last updated at Posted at 2018-10-28

はじめに

Ultra96 に Debian GNU/Linux (v2018.2版) を構築する方法について、具体的な方法をいくつかに分けて説明します。

この記事では、ZynqMP の Boot Loader である BOOT.BIN の構築に関して説明します。

必要な環境

  • Vivado 2018.2
  • Vivado SDK 2018.2

Boot Loader 構築環境の準備

次の URL から git clone でリポジトリをダウンロードして v2018.2.1 をチェックアウトします。

shell$ git clone git://github.com/ikwzm/ZynqMP-FPGA-Linux
shell$ cd ZynqMP-FPGA-Linux
shell$ git checkout v2018.2.1

BOOT.BIN を構成するファイル

ZynqMP の Boot Loader は、起動ストレージにある BOOT.BIN です。BOOT.BIN を構築するには以下のファイルが必要です。

  • target/Ultra96/
    • build-v2018.2/
      • boot.bif (Boot Image Format file)
      • zynqmp_fsbl.elf (FSBL)
      • zynqmp_pmufw.elf (PMUFW)
      • bl31.elf (ARM Trusted Firmware Boot Loader state 3-1)
      • u-boot.elf (U-Boot)
      • design_1_wrapper.bit (PL-Bitstream)

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

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

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

target/Ultra96/build-v2018.2/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
}

BOOT.BIN の構築

Vivado に含まれている bootgen コマンドを使って BOOT.BIN を作ります。-arch zynqmpでアーキテクチャを、-image boot.bif で前節で説明した boot.bif を指定します。

shell$ cd target/Ultra96/build-v2018.2
shell$ bootgen -arch zynqmp -image boot.bif -w -o ../boot/boot.bin

上のコマンドを実行することにより、target/Ultra96/boot/boot.bin が生成されます。

補足

UltraZed の場合は PL-Bitstream を boot.bin に含みませんでした。そのため boot.bin のファイルサイズも 1MByte 程度で済みました(下記参照)。

しかし Ultra96 では PL-Bitstream を boot.bin に含むことにしました。そのため boot.bin のファイルサイズが 6MByte 程度と大きくなってしまいました。
これは Linux が起動した際に Bluetooth が使えるようにするためです。Ultra96 では Bluetooth を使うために PS の UART0 の CTS と RTS を PL 側の I/O ピンに接続する必要があります。Linux を起動した際に Bluetooth が使えるためには PL 側ではすでに CTS と RTS が接続された状態でなければなりません。そのため Sample Design の PL-Bitstream を boot.bin に含めて FSBL で PL をプログラムするようにしています。

注意: 2018年10月28日現在、Bluetooth と GPIO の動作確認が済んでいません。U-Boot と Linux が起動出来ることだけ確認しています。ご了承ください。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1