FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

ZedBoard向けUbuntu Linuxのビルド(U-bootのビルド)

前回に引き続き、今回は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のツールだし、絶対誰かやっているハズだと思い探していたらあった!

qiita.com

ちゃんと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の作成

こちらも、同様のサイトで解説があった!もう、僕の思いついたことなんで皆だれかがやってしまっている。。。

qiita.com

あらかじめ、ワークスペートとなるディレクトリ(./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

これで完成だ。

関連記事

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com