ZynqのLinux Kernelコンパイル

ひとまず、ZynqのKernelコンパイルはこんな感じですかね?

まず、githubからカーネルをダウンロードする。

% git clone git://github.com/Digilent/linux-digilent.git

% cd linux-digilent

(上位ディレクトリにZedBoard_OOB_Designが展開されていることを仮定している)

Kernelバージョンは3.6.0のようですね。

本家は3.7.8が出てたので、それはそれで旗艦Linuxのカーネルを並行してコンパイル♪

.configとdtsファイルをコピーする。

dtsファイルは元々、digilent_zed.dtsがあるんだけど、Kernelコンパイルで使われないだろうと思うけど同じ場所にコピーした。

% cp ../ZedBoard_OOB_Design/linux/.config .

% cp ../ZedBoard_OOB_Design/linux/devicetree_ramdisk.dts arch/arm/boot/dts/

後は普通にLinuxでのKernelコンパイルです。

% make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- menuconfig

% make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- modules

% make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-

カーネルは下記の場所にできあがる。

arch/arm/boot/zImage

モジュールを仮インストールして、圧縮して移動しやすいようにする。

% make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-  INSTALL_MOD_PATH=../modules_install modules_install

% cd ../modules_install/lib/modules

% tar jcvf ../../../modules-3.6.0-digilent.tar.bz2 3.6.0-digilent-13.01-00002-g06b3889

まぁ、u-bootはzImageで起動できるのでそれはそれでいいけど・・・

せっかくだからuImageにするなら・・・

% make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- uImage

uImageを作るならmkimageが必要でなんだけど、mkimageはu-bootで作られる。

まだ、u-bootをコンパイルしてないのでuImageは後回しで・・・

zImageをSDカードにコピーして起動したら、OKでした。

そりゃそうだよなぁ〜、何も変更してないもん(苦笑)

DTBファイルを作成します。

(ただのコンバートだけど・・・)

% ./scripts/dtc/dtc -o devicetree.dtb -I dts -O dtb arch/arm/boot/dts/devicetree_ramdisk.dts

% ./scripts/dtc/dtc -o devicetree.dtb -I dts -O dtb arch/arm/boot/dts/digilent_zed.dts

どちらのDTSが正解かまだ、決めあぐねている。

わかっているのはデフォルトの設定がdevicefree_ramdisk.dtsはrootfsがRAMディスクであること、digilent_zed.dtsはSDカードの第2パーティションを使用すること。

今回の目的はKernelコンパイルなのでDTBはコンバートしただけです。

DTB/DTSは構成ファイルなので詳細はまた今度にしよう。

それと、linaroの稼働状況です。

HDMIモニタが無いのでテレビのHDMIに繋げました。

起動したらメッセージが流れ始めました。

でも、一瞬だけなんだけど・・・

X WINDOWが立ち上がって来ました。

Window Managerも立ち上がって来ました。

"Linaro"も見えてますね。

ををぉ!

Unityでした!

しかし、USBマウスが認識しなかったので、なにも出来ませんでしたが(^-^;;;

やはり、HDMIモニタを買おうかな・・・

write: 2013/02/17/ 02:11:05