FSBLの作り方
FSBLの作成手順を完結にまとめます。
- Vivadoを起動し、File->Export->Export Hardwareを実行する。hdfファイルを生成。
- XSDKでNew→Application Projectを行う。
- Hardware PlatformのダイアログでNewを押し、先ほど生成したhdfファイルを読み込む。
- FSBLプロジェクトを生成する。
- 自動的にビルドが行われ、Debugフォルダの中にfsbl.elfがあるはず。
FSBLのデバッグ
fsbl_debug.hで
#define FSBL_DEBUG_INFO
を定義するようにする。これでデバッグ情報をUARTに吐き出すので、FSBLが起動したかがわかりやすくなる。
UARTの選択
ZYNQには2つのSCIがあるが、どちらがデバッグ出力に使用されるかは、 下記のファイルで決まる。
fsbl_bsp\ps7_cortexa9_0\include\xparameters.h
この中のSTDOUT(IN)_BASEADDRESSが0xE0000000ならSCI0が、0xE0001000ならSCI1が使用される。
FSBLへのパッチ
GigaZeeは、USBのリセットをオンボードのCPLDで行っている。ZynqBerryは、FrameBufferの初期化をCPLDで行っている。これらの初期化をFSBLで行わなければならない。(そうしないと、USBが使えなかったり、HDMIに画面が出なかったりする)
パッチのあたったFSBLはTernz社のプロジェクトの中にある。(Windowsのエクスプローラで*.cで検索して探す)
Trenz社のプロジェクト中のFSBLソースファイルを、自分で作ったSDKのソースに入れてビルド。これでGigaZeeのU-Bootは起動するようになる。
ただし、同じ手順でやってもZynqBerryのFSBLは起動しない。その理由と対策方法についてはメールで問い合わせてください。