前回の続き。参考にしているのは以下の資料。
U-bootをビルドする
まずは、ZedBoard Linux用のU-Bootをコンパイルする。これは、Xilinxのリポジトリからダウンロードしてコンパイルする。
VivadoがインストールされていればARMのクロスコンパイラ群はすでにインストールされている。
また、Xilinxのu-boot-xlnxリポジトリを一からダウンロードすると巨大なので、githubにアップされているリリースパッケージxilinx-v2017.1.tar.gz
を利用した。
sudo apt install device-tree-compiler wget https://github.com/Xilinx/u-boot-xlnx/archive/xilinx-v2017.1.tar.gz tar xfz xilinx-v2017.1.tar.gz cd u-boot-xlnx-xilinx-v2017.1 export CCOMPILER=arm-xilinx-eabi-gcc export CROSS_COMPILE=arm-xilinx-eabi- export ARCH=arm make zynq_zed_config make
u-bootのファイルが生成されている。
ls -1 | grep u-boot u-boot u-boot-nodtb.bin u-boot.bin u-boot.cfg u-boot.cfg.configs u-boot.img u-boot.lds u-boot.map u-boot.srec u-boot.sym
SDKでのU-bootの作成
[File]→[New]→[Application Project]を選択する。
Project Nameには"FSBL"を指定する。
Target Hardwareには何故か生成したハードウェアプロジェクトcf_adv7511_zed_hw_platform_1
が表示されていなかったので、自分で作る羽目になってしまった。
“Target Hardware"のグループで[New]をクリックする。
新しく"Project Name"として"cf_adv_7511_hw_platform_1"を指定し、エクスポートしたハードウェアのhdfファイルを指定する。これは、プロジェクトディレクトリadv7511/zed/adv7511_zed.sdk/system_top.hdf
を指定する。
これ[Finish]をクリックすると、新しくTarget Hardwareが指定されていることがわかる。
上記は別に必要なくて、system_top_hw_platform_0
を指定しておけば良いということが分かった。
[Next]をクリックする。
“Available Templates:"は"Zynq FSBL"を指定する。
FSBLのプロジェクトが作成された。
Zynq Boot Imageを作成する。
SD-Cardに格納すべきブートイメージを作成する。
[Xilinx-Tools]→[Create Zynq Boot Image]をクリックする。
最初は、何も入力されていなかった。まずは、先ほど指定したu-bootのバイナリを指定する。
SDKのディレクトリadv7511/zed/adv7511_zed.sdk/FSBL/Debug/FSBL.elf
と、生成したハードウェアファイルadv7511/zed/adv7511_zed.sdk/cf_adv7511_zed_hw_platform_1/system_top.bit
を指定する。
また、Output BIF file pathにはadv7511/zed/adv7511_zed.sdk/bootimage/boot.bif
を、Output pathにはadv7511/zed/adv7511_zed.sdk/bootimage/boot.bin
を指定した。
どうやら最初にFSBLのプロジェクトを選択した状態で[Create Zynq Boot Image]を選択すると、デフォルトでいくつかファイルが指定される様子。
u-bootのバイナリu-boot
をu-boot.elf
にリネームしておき、指定する。
これでCreate Imageをクリックすると、ブートイメージBOOT.bin
が作成される。
次はカーネルのビルドを行おう。