XSDKを毎回起動するのは手間であるので自動でビルドしたいと思うのは当然である。
検索すると以下のものがとても参考になる。
Vivado SDK でZynq FSBL(First Stage Boot Loader)をビルドするTclスクリプト(hsi編)
ここにfsblを編集したものをビルドするということを想定して少し編集する。
環境準備
Windows
Vivado 2017.3(とそのSDK)
Bash on Windows
aptでgcc-arm-none-eabiをインストールしておく。
をWindowsのPATHに追加しておく。
前提
プロジェクトがある。
u-boot.elfがある。
bootbin.bifを作っておく。
//arch = zynq; split = false; format = BIN the_ROM_image: { [bootloader].\fsbl.elf ..\..\desing_1_wrapper.bit .\u-boot.elf }
VivadoからHardware Exportする。(include bitstream)
コレ自体もtclでできる。
hdfが[project_name].sdkに吐き出される。
こうなっている。
Scriptの準備(とりあえず手動でコマンド確かめる)
xprがあるところに、
参考サイトのtclを少しだけ変更したtclを書く
が、SDK上でnew applicationからfsblを作成する手順に相当する。
ここに -compile
オプションをつけると作成と同時にビルドし始めるが
今回はしない。
修正したfsbl_hooks.cなどをfsblプロジェクトにコピーする行
これを実行すると
となる。
まずはzynq_fsbl_bsp内で依存するライブラリをビルドする。
$ make -C ./ all
その後、fsblに戻って、再びmakeする
$ make
すると、executable.elf
なるELFができるので
これがGUIのSDKで行ったときにDebugフォルダ内にできるfsbl.elfなどと同じもの。
elfとu-boot.elfとbootbin.bifを
Releaseに移動しておく。
$ cp ./u-boot.elf ./script_build.sdk/fsbl/Release/
$ cp ./script_build.sdk/fsbl/executable.elf ./script_build.sdk/fsbl/Release/fsbl.elf
$ cp ./bootbin.bif ./script_build.sdk/fsbl/Release/
あとはここで
$ cmd.exe /c "bootgen.bat -image .\bootbin.bif -arch zynq -o .\BOOT.bin"
そうすると、ReleaseのところにBOOT.binが出来上がる。
bifファイル内のパスはこのbootgen.batを起動するパスに依存している。
あとはこれらをMakefileなどにまとめて
WSL上でmakeすればOKのはず。。
fsblはgenerate_appするたびにfsblを上書きするので、編集したソースコードは別においておいて、
ビルドするときにコピーしてくる方法が良いのではないかと思う。
次回はまとめたものを書く。