5. Zynq SDKでFSBLを作る

ここまでで、回路構成やbitstream、それにLinuxを起動するためのブートローダであるU-Bootを作成しました。
あとはFSBLと一緒にしてBOOT.binを作るだけです。

SDK

SDKを起動します。前回のVivadoのプロジェクトから起動すると楽ちんです。
「File」->「Launch SDK」

lb58

Locationとworkspaceを聞かれますが、そのままで大丈夫です。

lb59

OKを押すとSDKが起動すると思います。

lb60

まずFSBLが必要です。
「File」->「New」->「Application Project」でプロジェクトの新規作成します
lb63

プロジェクトの名前は適当に「myLED_FSBL」としました。(なんでもいいです)

lb64

ここで、Finishを押さずNextを押します。

lb65

テンプレートからFSBLを選択し、Finishします。
問題なくFSBLのプロジェクトが追加されていますね。

lb66

FSBLを編集する

hooks.cを編集する必要があります。zybo_base_systemの中にあるので、それをまるごとコピペして利用します。
場所はzybo_base_system>source>vivado>SDK>fsblです。
lb67

これをなんでもいいのでエディタで開いて中身をコピーし、それでsdkのfsbl_hooks.cを上書きします。
保存するとすぐにコンパイルが行われますので、なんかおかしかったらエラーになります。
成功するとFSBL.elfが作成されます。

lb68

いよいよBOOT.binの作成

プロジェクトフォルダを右クリックし、「Create Boot Image」を押します。

lb69

恐らく最初の段階でこんなふうになっていると思います。
したの「Boot image partisions」がBOOT.binに含まれるものになります。
既に入っているのはFSBLとbitstreamです。
ここでやらなきゃいけないのはUbuntuで頑張って作ったu-boot.elfを追加することです。

lb70

右側の「Add」を押します。

lb71
Browseでファイルを選択します。

lb73

選択したら「開く」

lb74

これでu-bootがpartisionの3つ目に追加されました。
「Create Image」を押すと「Output path」に書かれているフォルダ(そのままだと、 zebu_base_system/source/vivado/hw/zybo_bsd.sdk/myLED_FSBL/bootimage¥BOOT.bin)にBOOT.binが作成されます。

このBOOT.binがSDカードの中では最初に呼ばれるファイルです。
そしてFSBLが最初に起動し、bitstreamでFPGAをコンフィグレーションし、u-bootを起動します。
そして、u-bootはこれから作るLinuxカーネルを起動するのです。

次はこちら VivadoなしのUbuntuでZynq向けLinuxカーネルをビルドする