ひでみのアイデア帳

くだらないことなんだけど、忘れないために・・・

Zynq FSBLの作成

普段はu-bootのSPLを使用してBOOT.BINを作成しているので、そう滅多なことではFSBLを作成する機会がないんだけど、Zynq UltraScale+でubootからSPLを作成して、BOOT.BINを生成すると起動できるイメージができなかったので久々にFSBLを作成した。

まずはVivadoで「File」→「Export」→「Export Hardware...」でHDF(Hardware Design File)を出力する。

Vivadoプロジェクトディレクトリの配下に"project名.sdk"というディレクトリが作成され、"ブロックデザイン名.hdf"というファイルが出来上がっている。

次に次のようにtclファイル(build_fsbl.tcl)を作成する。

set hwdsgn [open_hw_design "デザイン名.hdf"]

# ZynqMP FSBL
generate_app -hw $hwdsgn -os standalone -proc psu_cortexa53_0 -app zynqmp_fsbl -compile -dir zynqmp_fsbl
exec cp zynqmp_fsbl/executable.elf ./zynqmp_fsbl.elf

tclファイルができたら次のように実行する。

$ cd project名.sdk
$ source /opt/Xilinx/SDK/2016.4/settings64.sh
$ hsi -mode tcl -source build_fsbl.tcl

そうすると、"project名.sdk"に"zynq_fsbl.elf"が生成されている。

hsiはHardware Software Interfaceの略で、Xilinxが用意しているHardwareリソースからSoftwareを生成するサポートアプリである。

generate_appを実行するとHDFからBSP(Board Support Package)を生成し、指定したアプリケーションを生成する。

ビルドしたアプリケーションは"executable.elf"として生成される。

tclファイル内で"zynqmp-fsbl.elf"にしているのは単にこの"executbale.elf"をコピーしているだけに過ぎない。

もし、FSBLに手を加えたい場合であれば、上記のtclファイルの場合、zynqmp_fsblにファイルが展開されているので修正してzynqmp_fsblのディレクトリで再度、makeコマンドを実行することで"executbale.elf"が生成される。