ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
webadm
投稿日時: 2006-1-21 4:54
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3084
玄箱でuClinux-H8をビルドする
前回の玄箱上でのuClinux-H8用のクロスコンパイルツールチェインの作り方の説明に続きいよいよuClinux-H8のビルド方法について説明します。

一応h8300-linux-elfのクロス開発環境があればuClinuxのディストリビューションをとってきてビルドするだけなのですが、事前に以下のことをやらないと必ずはまります。

・ncursesをビルド&インストールしておく

uClinuxをビルドするにはvendorとproductをAkizuki/AE3068を選択してコンフィグレーションする必要がありますが、make configでやってもできますが、一般的なメニュー形式設定のmake menuconfigを使うにはあらかじめホストにncursesライブラリがインストールされている必要があります。

ncurses-5.5をとってきて

tar xzf ncurses-5.5.tar.gz

でどっかに展開し

cd ncurses-5.5
./configure
make
make install

とやってビルド&インストールするだけです。

次にuClinux.orgのhttp downloadページから最新のuClinux-distのtarボールをとってきて展開します(今の時点だと、uClinux-dist-20051110.tar.gzの安定版とuClinux-dist-test-20051209.tar.gzのいずれか)

tar xzf uClinux-dist-test-20051209.tar.gz

実はuClinux-H8の最近のメーリングリストを読むとわかるのですが、いくつか公式のソースにパッチを当てないとエラーが出てビルドできません。

・最新のAE3069用パッチをとってくる

パッチはsourceforge.jpのuClinux-h8メーリングリストに今年1月に投稿されたものが必要です。これはリリースファイルとしては公開されていないので要注意です。メーリングリストアーカイブから当該記事を開いてAE3069.diffというファイル名で保存します。

・パッチをあてる

cd uClinux-dist-test
patch -p0 < ../AE3069.diff

これでほぼuClinuxのビルドはできるようになりますがまだはまりどころが残っています。オリジナルのuClinuxソースはintel PC Linux上かCygwin上で構築することを前提としているらしくビルド中に使用される一部のツール(cksum)がintelバイナリ版であるため玄箱上では実行できずにエラーになる点です。

このtools/cksumは普通のGNUのcksumとは違ってBerkley BSD起源のものにオプションを追加したもののようです。いろいろ探しましたがまったく同じものは見つからず困惑していたら、灯台下暗しuser/cksumにソースがありました。これをビルドして実行ファイルをtools/cksumにコピーすれば終わりでした。

・cksumをビルド&コピーする

cd user/cksum
make
cp cksum ../../tools

これでやっと最後までuClinux-H8のビルドができるようになりましたと、思ったらまだ甘かったようです。実際にmake menuconfigしてVendor/ProductをAkizuki/AE3068に設定してやってみるとコンパイルエラーが出ます。最後の段階でbusyboxとかのリンク時にgetopt_longの未解決シンボルが解決できないと怒られます。

これはAkizuki/AE3068のconfig.uClibcのデフォルトコンフィグレーション設定でGETOPT関数をインクルードしないようになっているためです。これはエディタで当該部分を手直しする必要があります(uClibcディレクトリでmake menuconfigして当該コンフィグレーションオプションをONにしてもいいのですが、デフォルトを直しておくのが良いでしょう、busyboxをとりあえず使わないというふうにコンフィグレーションしても当座は回避可能)

・Akizuki/AE3068のconfig.uClibcをパッチ

テキストエディタでvendors/Akizuki/AE3068/config.uClibcを開いてGETOPTを探してください。以下の行が見つかるはずです。

# UCLIBC_HAS_GNU_GETOPT is not set

これを以下のように変更します。

UCLIBC_HAS_GNU_GETOPT=y

これで保存しておしまい。

あとはuClinuxをデフォルトでコンフィグレーションしてビルドするだけです。

make menuconfig

とやるとメニューが出てくるので

Vendor/Product Selection --->

という行と下の方のSelectが選択された状態でENTERキーを押します。するとVendorとProductを選択するメニューが表示されます。

(SnapGear) Vendor

という行と<Select>が選択された状態でENTERキーを押すとVendorリストが表示され、リストの上の方をカーソルキーを使ってスクロールしていくとAkizukiというのがあるのでそこが選択された状態でSpaceキーを押してチェックマークをつけます。それでEnterキーを押しVendor設定を終了すると自動的にPorductの表示がAE3068になっていると思います。Akizukiの場合それしかないのです。また→で<Exit>を選択してEnterを押しVendors/Product設定を終了します。

次にその下の

Kernel/Library/Defaults Selection --->

を<Select>してEnterを押すとその他のコンフィグレーション設定のオプションを指定できます。特に指定しなければ最初はVendor/Productで決まるデフォルトが適用されます。その後何か設定をまずって元に戻したいときは

[ ] Default all settings (lose changes)

これを<Select>してSpaceキーを押して強制的にVendor/Productデフォルトに戻すことができます。

ここではまずLinux-2.6.xカーネルでは構築できても立ち上がらないことが判明しているので立ち上がることが確認できているLinux-2.4.xカーネルを使うようにコンフィグレーション設定を変更します。

・カーネルLinux-2.4.xに変更

(linux-2.6.x) Kernel Version

を<Select>してEnterを押すとカーネルのバージョン選択リストが出てきますので↑キーを押してlinux-2.4.xが選択された状態でSpaceキーを押してチェックマークを移動したのを確認してEnterキーを押しカーネルバージョン設定を終了します。

それとH8-3069netボードの標準の16Mbit DRAMではbusyboxを入れるとメモリ残量が少なくなってしまうのでbusyboxやとりあえず不要なコマンドとかをコンフィグレーションからはずしたほうが無難です。

[ ] Customize Vendor/User Settings (NEW)

を<Select>してSpaceキーを押しチェックを入れときます。

あとは最後まで<Exit>を選択してEnterを押すとコンフィグレーション設定終了です。

Do you wish to save your new kernel configuration?

というボックス表示が出たら<Yes>を選択してEnterを押します。

するとしばらくすると先ほど選択してVendor/Userコンフィグレーション設定変更メニューが表示されます。

Core Applications --->

を<Select>してEnterキーを押し、不要なコアアプリケーションをはずしことにします。

[*] reboot (sash)
[*] shutdown (sash)

となっているのをそれぞれ選択してSpaceキーを押して

[ ] reboot (sash)
[ ] shutdown (sash)

とチェックを外します。<Exit>でこの設定は終了します。

次にBusyboxもとりあえず動作確認にはいらないので外します。

BusyBox --->

これを<Select>してEnterを押し、

[*] BusyBox

上記の様になっているBusyboxのチェックをSpaceキーを押して外します

[ ] BusyBox

あとは最後まで<Exit>を選択してEnterを押せば設定変更終了です。同様に最後<Yes>を選択してEnterを押すとコンフィグレーション完了します。

・make depを実行する

ビルドする前にLinux 2.4.xカーネルの場合必ずmake depを実行する必要があります。これはしばらく表示がいろいろ出てきますので終わるまで待ちます。

・makeを実行する

make depが終わってプロンプトが戻ってきたら、やっとビルドできます。makeとだけ実行します。最終的にカーネルとromfsのバイナリが連結されてaki3068net-image.binとなって/tftpbootディレクトリにコピーされます。これはredbootでTFTPプロトコルを使って簡単に出来たイメージをダウンロードして実行できるように作られているためです。

実際にredbootを使って出来たイメージをロードして実行するには別途、玄箱側でTFTPサーバーを設定する必要があります。それはまた後日。

最後にこれで出来たイメージをロードして実行したログを載せておきます。

+DP83902A - eeprom ESA: 00:02:cb:01:eb:1a
... waiting for BOOTP information
Ethernet eth0: MAC address 00:02:cb:01:eb:1a
IP: 192.168.1.16/255.255.255.0, Gateway: 192.168.1.1
Default server: 192.168.1.17

RedBoot(tm) bootstrap and debug environment [ROM]
Non-certified release, version UNKNOWN - built 21:28:57, Apr 11 2004

Platform: Akizuki H8/3068 Network micom (H8/300H)
Copyright (C) 2000, 2001, 2002, Red Hat, Inc.

RAM: 0x00400000-0x005f4000, [0x00400000-0x005e1000] available
FLASH: 0x00000000 - 0x00080000, 8 blocks of 0x00010000 bytes each.
RedBoot> load -r -b 0x400000 aki3068net-image.bin
Using default protocol (TFTP)
Raw file loaded 0x00400000-0x004ce9f7, assumed entry at 0x00400000
RedBoot> exec -c console=ttySC1,38400
Now booting linux kernel:
Entry Address 0x00400000
Cmdline : console=ttySC1,38400
Linux version 2.4.31-uc0 (root@KURO-BOXHG) (gcc version 3.4.0) #6 Fri Jan 20 18:15:31 JST 2006

uClinux H8/300H
Target Hardware: AE-3068
H8/300 series support by Yoshinori Sato <ysato@users.sourceforge.jp>
Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne
On node 0 totalpages: 1536
zone(0): 0 pages.
zone(1): 1536 pages.
zone(2): 0 pages.
Kernel command line: console=ttySC1,38400
virtual vector at 0x00fffd20
Calibrating delay loop... 3.26 BogoMIPS
Memory available: 1024k/1217k RAM, 0k/0k ROM (653k kernel code, 174k data)
Dentry cache hash table entries: 1024 (order: 1, 8192 bytes)
Inode cache hash table entries: 512 (order: 0, 4096 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 2048 (order: 1, 8192 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
SuperH SCI(F) driver initialized
ttySC0 at 0x00ffffb0 is a SCI
ttySC1 at 0x00ffffb8 is a SCI
ttySC2 at 0x00ffffc0 is a SCI
ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
Last modified Nov 1, 2000 by Paul Gortmaker
NE*000 ethercard probe at 0x200000: 00 02 cb 01 eb 1a
eth0: NE1000 found at 0x200000, using IRQ 17.
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: 4CFBB0-4EBFAF [VIRTUAL 4CFBB0-4EBFAF] (RO) <ROMFS>
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 512 bind 1024)
VFS: Mounted root (romfs filesystem) readonly.
Freeing unused kernel memory: 24k freed (0x4ac000 - 0x4b1000)
Shell invoked to run file: /etc/rc
Command: hostname AE3068
Command: mount -t proc proc /proc
Command: cat /etc/motd
Welcome to
____ _ _
/ __| ||_|
_ _| | | | _ ____ _ _ _ _
| | | | | | || | _ \| | | |\ \/ /
| |_| | |__| || | | | | |_| |/ \
| ___\____|_||_|_| |_|\____|\_/\_/
| |
|_|

Akizukidenshi/AE-3068 (aki3069net) port.
For further information check:
http://www.uclinux.org/

Execution Finished, Exiting
init: Failed to open /etc/inittab.
Sash command shell (version 1.1.1)
/>
/>
/> free
total: used: free: shared: buffers: cached:
Mem: 1073152 811008 262144 0 114688 122880
Swap: 0 0 0
/> help
cd [dirname]
sleep seconds
chgrp gid filename ...
chmod mode filename ...
chown uid filename ...
cmp filename1 filename2
cp srcname ... destname
df [file-system]
echo [args] ...
exec filename [args]
exit
free
help
hexdump [-s pos] filename
hostname [hostname]
kill [-sig] pid ...
ln [-s] srcname ... destname
ls [-lidC] filename ...
mkdir dirname ...
mknod filename type major minor
more filename ...
mount [-t type] devname dirname
mv srcname ... destname
printenv [name]
pwd
pid
quit
rm filename ...
rmdir dirname ...
setenv name value
source filename
sync
touch filename ...
umask [mask]
umount filename
cat filename ...
date date [MMDDhhmm[YYYY]]
/>
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
 » 玄箱でuClinux-H8をビルドする webadm 2006-1-21 4:54

投稿するにはまず登録を
 
ページ変換(Google Translation)
サイト内検索