2013/08/15

[電子工作]ZedBoard用Linuxカーネルのコンパイル

,
 面倒くさかった。ネットに上がっているやってみた系サイトの情報の殆どが古くてなかなか進まなかった。
※私はLinux系を扱い慣れていませんので、冗長になっているかもしれません…

参考にさせていただいたサイト
Matrixのゆらぎ: Zed BoardのLinuxカーネルビルド編 http://goo.gl/jfC5ZP
FPGAの部屋 ZedBoardのLinuxカーネルコンパイルのテスト http://goo.gl/pgwT7z

ビルドした環境
OS:Ubuntu12.04 (Oracle VM VirtualBox上)
CPU:i7-3770K 1コア制限
メモリ:RAM 1GB割り当て

 基本的には、GitHubからソースコードをDLしてきて、後コンパイルに必要な物を揃える→makeするだけなんですが。以下やり方です。

1)まず最初に参考にした(上の方の)サイトに従って、色々とパッケージを入れていきます。ひたすらsudo apt-get install *****です。
※Cygwin環境だと、apt-getが存在しないので、代替としてapt-cygとか言うものを使うのが常套手段みたいです。しかし、自分がやってみたところ、setup.iniが無いだの、Package *** not found or ambiguous name, exitingというエラーが出てどれもインストールが出来なかったので、仮想マシン上のUbuntuで作業することにしました…
apt-cygは色々とダメ

2)GitHubからカーネルのソースコードとかをダウンロードします。コマンドは
git clone https://github.com/Digilent/linux-digilent.git kernel
です。(結構時間が掛かる)

3)参考にしたサイト(の下の方)通りに、ZedBoard_OOB_Design.zipを解凍し、でてきた/linux/.configをkernelフォルダにコピー。/linux/devicetree_ramdisk.dtsを/kernel/arch/arm/boot/dtsにコピー。
 
 で、参考にしたサイトを見ると、この先configurationをしていますが、まあZedBoard_OOB_Design.zipに入っている.configのままでいいかなあと思ったので、先ずコンパイルしてみます。

4)コンパイルにはXilinxのarm-xilinx-linux-gnueabi-gccが必要です。これはVivadoのSDKに入ってるみたいなので、それもDLしてきます。
 Xilinxのダウンロードページから、ソフトウェア開発キットの「Vivado 2013.2:スタンドアロン SDK 単一ファイル ダウンロード イメージ」を選択してDLしてきます(約1.7GB、tarファイル)。
SDKのダウンロードページ
解凍したら、/Xilinx_SDK_2013.2_0616_1/bin/linにあるxsetupを実行して、適当なフォルダにインストールします。(/Xilinx_SDK_2013.2_0616_1/xsetupではない模様、そっちを起動しても変なインストーラが出てきて終わる)
xsetupの実行

5)パスを通す
インストールフォルダが/home/***(ユーザー名)/Xilinx/とかの場合、端末から
export PATH=$PATH:/home/***/Xilinx/SDK/2013.2/gnu/arm/lin/arm-xilinx-linux-gnueabi/bin
export PATH=$PATH:/home/***/Xilinx/SDK/2013.2/gnu/arm/lin/bin
としてパスを通しておきます
Xilinxのページなどを見ると、/CodeSourcery/Sourcery_CodeBench_Lite_for_Xilinx_GNU_Linux/binに通せと書いてありますが、そんなフォルダは存在してません…このページに書かれているのが古いバージョンとかなんでしょうか…
多分どっちか一つでいいんだろうけど、どっちなのかあまり良く分からなかったので両方…後者でした
どっちが呼ばれるんだろう…(右側だった)

6)Makeする
パスを通したら、
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
として、コンパイルします。私が実行した限りでは、数分でコンパイルが完了しました。
コンパイルの終わり
kernel/arch/arm/boot以下に、zImageが生成されています。
zImageが生成されている。
実際にZedBoardで動かすには、SDカードにあるREADMEだかの内容のとおりにします、元からあるファイルのうちzImageだけを、コンパイルして出来たものに書き換えます。ジャンパの設定と、ZedBoardの電源を落としてまた付けたときは、TeraTermの方でも再接続することを忘れずに…
 シリアルポートでのモニタによると、今回コンパイルしたカーネルのバージョンは3.6.0っぽいです(本当か?)
kernelバージョンの確認
SDカードのファイル:
BOOT.BIN
devicetree_ramdisk.btb
ramdisk8M.image.gz
zImage
(README)
ファイルたちの解説
以上が流れになります。ボトルネックはVivadoとGitHubからのDL時間ですね

0 コメント to “[電子工作]ZedBoard用Linuxカーネルのコンパイル”

コメントを投稿