前回に引き続き、今回はU-bootのビルドにトライした。
1. ZedBoard向けU-bootのビルドにトライ
U-Bootのビルドも、marseeさんのブログとほぼ同一の内容で成功した。 ブランチをxilinx-v2015.2に変更するだけで、それ以外はほぼ変えるところが無い。
FPGAの部屋 ZedBoard用のUbuntu Linuxをビルド2(u-bootをビルド)
一点注意しなければならない点として、僕はUbuntuの64ビットで実行しているのだが、Ubuntu64ビットでarmのgccを利用するためには余分なパッケージの導入が必要なようだ。
AR# 63561: 2014.4 SDK - 「arm-xilinx-eabi-gcc: No such file or directory」というエラー メッセージが表示される
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0 lib32stdc++6
あとは、上記ブログと作業内容はほぼ同一である。 これがうまくいけば、とりあえず全てスクリプト化してしまいたい。
2. ZedBoard向けFSBLを作成
こちらも、marseeさんのブログを読みながら進めようと思ったのだが、Xilinx SDKのボタンをポチポチ叩く必要があるらしく、どうも面倒だ。どうにかしてスクリプト化できないだろうか?
FPGAの部屋 ZedBoard用のUbuntu Linuxをビルド3(BOOT.BINを生成)
Xilinxのツールだし、絶対誰かやっているハズだと思い探していたらあった!
ちゃんとtclの解説まで載っている。ありがたい。 っていうかここまで解説されていたら僕今日やること無くない?(笑)
注意点としては、一度ビルドに失敗した場合には、ワークスペースディレクトリの.metadataまでしっかり削除する必要があることくらいか。 そうしないと、次回ビルド時に既にプロジェクトが作られていると怒られる。
$ cat build_fsbl.tcl #!/usr/bin/tclsh set app_name "fsbl" set app_type {Zynq FSBL} set bsp_name "fsbl_bsp" set hw_name "system_top_hw_platform_0" set hwspec_file "system_top.hdf" set proc_name "ps7_cortexa9_0" set project_directory [file dirname [info script]] set workspace [file join $project_directory "adv7511_zed.sdk"] sdk set_workspace $workspace sdk create_hw_project -name $hw_name -hwspec [file join $workspace $hwspec_file] hsi::open_hw_design [file join $workspace $hw_name "system.hdf"] hsi::create_sw_design $bsp_name -proc $proc_name -os standalone hsi::add_library xilffs hsi::generate_bsp -sw $bsp_name -dir [file join $workspace $bsp_name] -compile hsi::close_sw_design $bsp_name sdk create_app_project -name $app_name -hwproject $hw_name -proc $proc_name -os standalone -lang C -app $app_type -bsp $bsp_name sdk build_project $app_name exit vivado -batch build_fsbl.tcl ...
3. BOOT.BINの作成
こちらも、同様のサイトで解説があった!もう、僕の思いついたことなんで皆だれかがやってしまっている。。。
あらかじめ、ワークスペートとなるディレクトリ(./adv7511_zed.sdk)にu-bootのバイナリを配置しておいた。
$ less FSBL.bif the_ROM_image: { [bootloader]./adv7511_zed.sdk/fsbl/Debug/fsbl.elf ./adv7511_zed.sdk/system_top_hw_platform_0/system_top.bit ./adv7511_zed.sdk/u-boot } $ bootgen -image FSBL.bif -w on -o BOOT.BIN
これで完成だ。