LoginSignup
24
15

More than 5 years have passed since last update.

ZYBO (Zynq) 初心者ガイド (7) Boot Imageを作る

Last updated at Posted at 2018-01-09

この記事の内容を2分で見る ( https://www.youtube.com/watch?v=tiS0v1DPRL0 )

環境

  • 開発用PC: Windows 10 64-bit
    • Vivado 2017.4 WebPACKライセンス
    • Xilinx SDK 2017.4
  • ターゲットボード: ZYBO (Z7-20)

Windows環境は1回目を参照。
使用するハードウェア(hdf)は6回目を参照。

Boot Imageを作る

これまで、バイナリファイルの書き込みはJTAGで行っていました。そのため、電源をOFF/ONするたびに書き込みが必要でした。今回は、ブートイメージを作成して、それを使ってSDカード/QSPIから起動するということをやります。
使用するプロジェクトは何でもいいのですが、前回のプロジェクトを使います。これは、PL単体だと全LEDがONになる。PSから制御するとLEDがチカチカするというものです。

Zynq起動の流れ

Boot Image作成に必要なファイルを理解するために、起動シーケンスについて簡単に説明します。詳細はZynqやZyboのリファレンスマニュアルに記載されています。

Zynqの起動は以下の3つのステージに分かれています。設定によって色々と変わりますが、典型例は以下の通りです。

  • Stage 0 (内蔵BootROMの起動コードが働く)
    • 内蔵BootROMの起動コードがCPU0で動く。これが、FSBL (First Stage Boot Loader)を読み込み、制御を移譲する。FSBLをどこから読むかはジャンパーで決まる。
  • Stage 1 (FSBLが働く)
    • FSBLがPS周辺回路(DDRなど)をコンフィギュレーションする
    • もしもビットストリームファイルがあれば、PLのコンフィギュレーションをする
    • もしもユーザーアプリケーションがあれば、ロードする
  • Stage 2
    • ユーザプログラムを実行する。 (もしもLinuxの場合は、U-BootなどのSecond Stage Boot Loaderが呼ばれる)

Boot Imageの構成

作成するブートイメージは、BOOT.binという1つのバイナリファイルです。この中に、以下のデータを格納します。

  • FSBLバイナリ (これから作る)
  • PL用のビットストリーム (Vivadoで作成済み)
  • PS用のユーザアプリケーションバイナリ (SDKで作成済み)

BOOT.binを作る

FSBLバイナリを作る

前回のプロジェクトの続きとして考えます。SDK上に、blinkというLEDチカチカ用のプロジェクトと、blink_bspプロジェクトが既にあります。ここに、FSBL用のプロジェクトを追加します。

  • Xilinx SDKのメニューバー -> File -> New -> Application Projectで新しいプロジェクトを作る
    • プロジェクト名は適当に、「fsbl」とする (何でもいい)
    • テンプレートとして、「Zynq FSBL」を選んでFinish
  • fsblプロジェクトをビルドして、fsbl/Debug/fsbl.elfを作っておく

01.jpg
02.jpg

BOOT.binを作る

  • Project Explorerで、搭載したいユーザアプリケーションプロジェクト(今回はblink)を選んでおく
  • メニューバー -> Xilinx -> Create Boot Image
  • BOOT.binに含めるバイナリを追加する。前述したように、以下のバイナリを含める。順番もこの通りにする必要がある。
    • FSBLバイナリ (さっき作った、fsbl.elf)
    • PL用のビットストリーム (Vivadoが出力した、design_1_wrapper.bit)
    • PS用のユーザアプリケーションバイナリ (SDKで作った、blink.elf)
  • Create Imageをクリックすると、blink\bootimage\BOOT.binが作られる

03.jpg

SDカードから起動する

  • FAT32でフォーマットしたSDカードにBOOT.binをコピー
  • JP5のジャンパピンで「SD」を選ぶ
  • 電源を入れなおすと、SDカード内のBOOT.binで起動する

QSPIから起動する

  • 念のため、JP5のジャンパピンで「JTAG」を選んで電源OFF/ONしておく
  • メニューバー -> Xilinx -> Program Flash
  • Image Fileに、blink\bootimage\BOOT.binを指定
  • FSBL Fileに、fsbl\Debug\fsbl.elfを指定
  • Programをクリック

(ここで、なぜfsbl.elfの指定が必要なのかが不明。バイナリ自体はBOOT.binに含まれているはずなのに。。。アドレス情報とかが必要なのかな?)

04.jpg

QSPIへの書き込み完了後、JP5のジャンパピンを「QSPI」にして、電源を入れなおすと、QSPI内のBOOT.binで起動する

おまけ: PLだけのプロジェクトの場合

PSで動くユーザアプリケーションがない場合(ZynqをFPGAとして使う場合)、必要なのはFSBLとビットストリームファイルだけになります。fsblプロジェクトを選んだ状態で、Create Boot ImageすればOKです。

24
15
5

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
24
15