FSBLの作り方

FSBLの作成手順を完結にまとめます。

  1. Vivadoを起動し、File->Export->Export Hardwareを実行する。hdfファイルを生成。
  2. XSDKでNew→Application Projectを行う。
  3. Hardware PlatformのダイアログでNewを押し、先ほど生成したhdfファイルを読み込む。
  4. FSBLプロジェクトを生成する。
  5. 自動的にビルドが行われ、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は起動しない。その理由と対策方法についてはメールで問い合わせてください。