KZM-CA9-01 Linux 開発環境の構築方法
KZM-CA9-01 用 Linux は buildroot を使用して、カーネル、クロスツールチェイン、ユーザーランド
を提供しています。本書は
KZM-CA9-01 用 Linux のビルド、ブートなどの方法を記述しています。
用法
本書でのコマンド記述を以下に示します。
HOSTPC$ホスト
PC 上での一般ユーザのコマンド
HOSTPC#ホスト
PC 上での管理者のコマンド
U-BOOT$u-boot 上のコマンド
WINPC>
PARTNER-Jet を利用する WindowsPC のコマンド
PT>PARTNER-Jet のコマンド
1 Linux ビルド環境
KZM-CA9-01 用の Linux ビルド環境を構築するには、ホスト PC として LinuxPC が必要です。
カーネルビルドやクロスツールチェイン、ユーザーランドのビルド時には、以下のパッケージが導
入されている必要があります。また、ビルドエラーが発生した場合は不足しているパッケージを導
入してください。
主なパッケージ(パッケージ名は各ディストリビューションによって違います)
make gcc g++ bison flex gettext zlib-dev ncursesこの説明書で説明しているディストリビューションは
Ubuntu です。固有のコマンドは各ディストリ
ビューションのコマンドに置き換えてください。
2 ビルド手順
KZM-CA9-01 用の Linux カーネル、クロスツールチェイン、ユーザーランドをビルドする手順を以
下に示します。
2.1 buildroot 環境の準備
ビルドに必要なパッケージをインストールします。
HOSTPC# apt-get install bison flex gettext g++ zlib1g-dev 注意)ビルド時にエラーになる場合は、不足しているパッケージを追加してください。
提供されている
buildroot の tarball を展開します。
HOSTPC$ tar xvzf KZMCA9_buildroot-XXXXXX.tgz
クロスツール用ディレクトリの準備を行います。
HOSTPC# mkdir /opt/KMC HOSTPC# chmod a+w /opt/KMC
2.2 KZM-CA9-01 用のデフォルトコンフィグの適用
KZM-CA9-01 用のコンフィグレーションを適用します。
HOSTPC$ cd KZMCA9_buildroot HOSTPC$ make kzm-ca9_defconfig
2.3 buildroot でのビルド
ビルドを開始します。
2.4 buildroot で生成される主なファイル
buildroot で生成される主なファイルは以下の通りです。
/opt/KMC/kzmca9/staging
クロスツールチェイン
KZMCA9_buildroot/output/images/uImage
Linux カーネルバイナリイメージ
KZMCA9_buildroot/output/images/u-boot.bin
u-boot バイナリイメージ
KZMCA9_buildroot/output/images/rootfs.arm.cramfs
cramfs ユーザーランドバイナリイメージ
KZMCA9_buildroot/output/images/rootfs.arm.ext2
ext2 ユーザーランドバイナリイメージ
2.5 クロスツールチェインの使い方
生成されたクロスツールチェインを使用するには、PATH 変数に設定する必要があります。
.bash_profile 等、スクリプトに追加すると便利です。
3 Linux ブート方法
KZM-CA9-01 での Linux のブート方法について主な方法を説明します。
HOSTPC の IP アドレスは 192.168.0.20 、KZM-CA9-01 の IP アドレスは 192.168.0.10 として記述
しています。
3.1 はじめに
KZM-CA9-01 にネットワークとターミナルを接続してください。
KZM-CA9-01 とターミナルを接続するには、COM1 にクロス(インターリンク)ケーブルで接続
(115200bps)してください。
3.2 u-boot の初期設定
KZM-CA9-01 に初めて電源を投入するときに、ネットワークの設定を行います。
いずれかのキーを押して、プロンプト表示状態にし、ネットワーク関連の設定を行います。
ethaddr の設定値については、KZM-CA9-01 ボード上に記述している値を設定してください。
U-Boot 2009.03-rc1-00250-g1b432b1-dirty (12 月 02 2009 - 17:17:06) Board: A9TC boardDRAM: 256 MB Flash: 64 MB In: serial Out: serial Err: serial
Hit any key to stop autoboot: 3
<--- いずれかのキーを押す U-BOOT$ setenv ethaddr XX:XX:XX:XX:XX:XX
U-BOOT$ ipaddr 192.168.0.10 U-BOOT$ serverip 192.168.0.20 U-BOOT$ saveenv
Saving Environment to Flash... . done
Un-Protected 1 sectors Erasing Flash...
3.3 ネットワークを利用してブート
Linux カーネルを tftp サーバーからダウンロードし、ルートファイルシステムを nfs サーバーからマ
ウントするシステムとしてブートします。
tftp
サーバを立ち上げる
HOSTPC# apt-get install tftpd HOSTPC# vi /etc/inetd.conf
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.ftpd /home/foo/KZMCA9_buildroot/output/images
HOSTPC# chmod 777 /home/foo/KZMCA9_buildroot/output/images HOSTPC# service openbsd-inetd restart
nfs
サーバーを立ち上げる
HOSTPC$ mkdir /opt/KMC/kzmca9/nfsroot HOSTPC# apt-get install nfs-kernel-server HOSTPC# vi /etc/exports
/opt/KMC/kzmca9/nfsroot *(rw,no_root_squash,no_subtree_check) HOSTPC# service nfs-kernel-server restart
HOSTPC# mount -t ext2 -o loop
/home/foo/KZMCA9_buildroot/output/images/rootfs.arm.ext2 /opt/KMC/kzmca9/nfsroot
注意)ext2 イメージを再ビルドする前には必ず unmount を行ってください。 HOSTPC# umount -l -d /opt/KMC/nfsroot
u-boot
の設定
U-BOOT$ setenv bootargs root=/dev/nfs init/initrc mem=192M console=ttyAMA0,115200 ip=192.168.0.10:192.168.0.20::255.255.255.0 nfsroot=192.168.0.20:/opt/KMC/kzmca9/nfsroot U-BOOT$ saveenv
Linux
カーネルのブート
U-BOOT$ tftpboot U-BOOT$ bootm3.4 フラッシュメモリを利用してブート
Linux カーネル、ルートファイルシステムをフラッシュメモリに書き込んだものを利用してブートしま
す。
『4.1 フラッシュメモリの更新方法』を参照して、uImage,cramfs ルートファイルシステムをフラッシュメ
モリに書き込みます。
u-boot
の設定
U-BOOT$ setenv bootargs root=/dev/null init/initrc mem=192M console=ttyAMA0,115200 ip=192.168.0.10 rootflags=physaddr=0x00400000 U-BOOT$ saveenv
Linux
カーネルのブート
U-BOOT$ bootm 001000003.5 PARTNER-Jet を利用してブート
HOSTPC の Samba サーバーを利用してカーネルファイル(vmlinux)を PARTNER-Jet から
KZM-CA9-01 の DRAM 領域にダウンロードしてブートします。
Samba
サーバーの設定
HOSTPC# apt-get samba HOSTPC# vi /etc/samba.conf
[foo]
comment = foo volume path = /home/foo read only = No
HOSTPC# service samba restart
Samba
ボリュームのマウント
core0\init.mcr
内の
load_linux
の編集
WINPC にマウントしたドライブに合わせて、core0\init.mcr 内の load_linux 部分を変更します。
また、KERNEL_CMDLINE.opt ファイルのパス部分を変更します。
l W :\KZMCA9_buildroot\output\build\linux-2.6.28\ vmlinux ,/offs=0xa0000000 rd C:\WORK\KZMCA9_SMP\core0\KERNEL_CMDLINE.bin,default_command_line+0xa00 00000
KERNEL_CMDLINE.opt
の編集
Linux カーネルのカーネルコマンドラインを、KERNEL_CMDLINE.opt ファイル内に記述します。
root=/dev/nfs nfsroot=192.168.0.20:/opt/KMC/kzmca9/nfsroot ip=192.168.0.10:192.168.1.20::255.255.255.0:kzmca9 console=ttyAMA0,115200 mem=192MPARTNER-Jet
での
Linux
カーネルのブート
KZM-CA9-01 用のプロジェクトで PARTNER-Jet を起動して下記のコマンドを入力すると、Linux
カーネルがブートします。
PT> load_linux PT> g
4 補足事項
4.1 フラッシュメモリの更新方法
フラッシュメモリ内容の更新について
u-boot を使う方法と、PARTNER-Jet を使う方法の両方を説
明します。
ブートローダー
u-boot
の更新
u-boot
を使用
U-BOOT$ tftpboot 0x60000000 u-boot.bin SMSC9118 is identified successfully.
TFTP from server 192.168.0.20; our IP address is 192.168.0.10 Filename 'u-boot.bin'.
Load address: 0x60000000
Loading: ####################### done
Bytes transferred = 115040 (1c160 hex) U-BOOT$ protect off 0x40000000 +0x1c160 . done Un-Protected 1 sectors U-BOOT$ erase 0x40000000 +0x1c160 . done Erased 1 sectors U-BOOT$ cp.b 0x60000000 0x40000000 0x1c160 Copy to Flash... done
U-BOOT$ protect on 0x40000000 +0x1c160 . done Protected 1 sectors
PARTNER-Jet(ARM)
を使用
PT> rd w:\KZMCA9_buildroot\output\images\u-boot.bin,0 Read w:\KZMCA9_buildroot\output\images\u-boot.bin 00000000 - 0000EFFF Completeカーネルイメージ
uImage
の更新
u-boot
を使用
U-BOOT$ tftpboot 0x60000000 uImage SMSC9118 is identified successfully.
TFTP from server 192.168.0.20; our IP address is 192.168.0.10 Filename 'uImage'.
Load address: 0x60000000
Loading: ########################################################## done
Bytes transferred = 2961696 (2d3120 hex) U-BOOT$ erase 0x40100000 +0x2d3120
... done Erase 12 sectors
U-BOOT$ cp.b 0x60000000 0x40100000 0x2d3120 Copy to Flash... done
PARTNER-Jet(ARM)
を使用
PT> rd w:\KZMCA9_buildroot\output\images\uImage,00100000 Read w:\KZMCA9_buildroot\output\images\uImage
00100000 - 003C0FFF Complete
Read memory : 71.261 sec 2892 Kbyte (40 Kbyte/sec)
cramfs
ルートファイルシステムの更新
u-boot
を使用
U-BOOT$ tftpboot 0x60000000 rootfs.arm.cramfs
TFTP from server 192.168.0.20; our IP address is 192.168.0.10 Filename 'rootfs.arm.cramfs'.
Load address: 0x60000000
Loading: ########################################################## done
Bytes transferred = 1089536 (10a000 hex) U-BOOT$ erase 0x40400000 +0x10a000
... done Erase 4 sectors
U-BOOT$ cp.b 0x60000000 0x40400000 0x10a000 Copy to Flash... done
PARTNER-Jet(ARM)
を使用
PT> rd w:\KZMCA9_buildroot\output\images\rootfs.arm.cramfs,00400000 Read w:\KZMCA9_buildroot\output\images\rootfs.arm.cramfs
4.2 buildroot コンフィグレーションの補足
シングルコア版
Linux
カーネルの生成
buildroot のコンフィグレーション項目[KZM-CA9 SMP mode]を OFF に設定してください。
Target options ---> KMC KZM-CA9 ---> KZM-CA9 SMP mode
デバッグ情報付きライブラリの生成
buildroot のコンフィグレーション項目[uClibc configuration file]を以下の様に設定してください。
Toolchain --->
uClibc configuration file