ここまでで、回路構成やbitstream、それにLinuxを起動するためのブートローダであるU-Bootを作成しました。
あとはFSBLと一緒にしてBOOT.binを作るだけです。
SDK
SDKを起動します。前回のVivadoのプロジェクトから起動すると楽ちんです。
「File」->「Launch SDK」
Locationとworkspaceを聞かれますが、そのままで大丈夫です。
OKを押すとSDKが起動すると思います。
まずFSBLが必要です。
「File」->「New」->「Application Project」でプロジェクトの新規作成します
プロジェクトの名前は適当に「myLED_FSBL」としました。(なんでもいいです)
ここで、Finishを押さずNextを押します。
テンプレートからFSBLを選択し、Finishします。
問題なくFSBLのプロジェクトが追加されていますね。
FSBLを編集する
hooks.cを編集する必要があります。zybo_base_systemの中にあるので、それをまるごとコピペして利用します。
場所はzybo_base_system>source>vivado>SDK>fsblです。
これをなんでもいいのでエディタで開いて中身をコピーし、それでsdkのfsbl_hooks.cを上書きします。
保存するとすぐにコンパイルが行われますので、なんかおかしかったらエラーになります。
成功するとFSBL.elfが作成されます。
いよいよBOOT.binの作成
プロジェクトフォルダを右クリックし、「Create Boot Image」を押します。
恐らく最初の段階でこんなふうになっていると思います。
したの「Boot image partisions」がBOOT.binに含まれるものになります。
既に入っているのはFSBLとbitstreamです。
ここでやらなきゃいけないのはUbuntuで頑張って作ったu-boot.elfを追加することです。
右側の「Add」を押します。
Browseでファイルを選択します。
選択したら「開く」
これで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カーネルを起動するのです。