uClinux for H8/300H を秋月のH8/3068ボードに乗せる
この文章は古くなってます
最新は、uClinux-H8 project Home
にあります。
ようやく実機での起動を確認出来ました。長い道のりだった…。
今の所カニは遊んでる状態なので、
H8/3067のボードでもメモリを乗せれば動くと思います。
RTL8019ASがneドライバで認識出来るようになりました。
割り込みを使うので、改造が必要です。
ネットワークが動くようになりました。PINGに応答します。
つまらんことで悩んでいたので、時間がかかってしまいました。
記念(?)のスクリーンショット
uClinux for H8/300H
H8/300H Porting by Yoshinori Sato
Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne
Calibrating delay loop.. ok - 0.89 BogoMIPS
Memory available: 656k/1616k RAM, 0k/0k ROM (5472k kernel data, 406k code)
Swansea University Computer Society NET3.035 for Linux 2.0
NET3: Unix domain sockets 0.13 for Linux NET3.035.
Swansea University Computer Society TCP/IP for NET3.034
IP Protocols: ICMP, UDP, TCP
uClinux version 2.0.39.uc2 (ysato@vc6300cb1) (gcc version 2.95.3 20010315 (release)) 64 2002年 4月28日(日) 17T
Hitachi SCI driver version 0.01
hitachi-sci.c(1478): info=478962 num=0
ttySC0 at 0xffffb0 (irq = 52 - 55)
hitachi-sci.c(1478): info=478a66 num=1
ttySC1 at 0xffffb8 (irq = 56 - 59)
hitachi-sci.c(1478): info=478b6a num=2
ttySC2 at 0xffffc0 (irq = 60 - 63)
Ramdisk driver initialized : 16 ramdisks of 4096K size
Blkmem copyright 1998,1999 D. Jeff Dionne
Blkmem copyright 1998 Kenneth Albanowski
Blkmem 1 disk images:
0: 4C0000-5223FF (RO)
ne.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)
NE*000 ethercard probe at 0x200000: 00 02 cb xx xx xx
eth0: NE1000 found at 0x200000, using IRQ 17.
VFS: Mounted root (romfs filesystem) readonly.
init start
#
BogoMipsが予想以上に低いです。1は越えると思ってたんですが。
というかタイマーの計算が間違ってるかも。
ということで、なんとか起動出来ましたというレベルです。
いるもの
次のものを用意してください。
- H8/3068ボード
- ↑用増設メモリ (h'400000 - h'4fffff位あれば足りるはず)
- 電源
- RS232Cケーブル
- ホストPC
メモリ以外は特に問題ないでしょう。
よくわからない人は、裏面のパターンに付けてください。
私のところは、それで動かしています。
ネットワークを使う場合は、RTL8019ASのINT4を、CPUのIRQnに入れてください。
番号は、カーネルコンフィグレーションで指定します。
ソース・バイナリ
CVSから取得してください。
uClinux-H8 project Homeから、たどれます。
コンパイル済みバイナリも置いておきます。容量の余裕が出来たので、
容量不足にならない限り残します。
linux.bin.gz
↑のコンフィグレーション
起動方法
ROMに焼けるサイズじゃないので、適当なローダーで外部のRAMに読み込んで、
そこから起動します。
ただし、CPUの制限により割り込みベクタを移動出来ないので、
割り込みがかかったときにカーネルの割込み処理を呼び出す機能が必要です。
この問題があるので、H8/OSから起動させることはできません。
日立の組み込みモニタは、割り込みの中継プログラムをはさむか、
割り込みまわりを合わせれば、動かせるはずです。
ダウンロードする時間が恐ろしいことになりそうですが。
私が使ったローダーは、ここにあります。
で、起動するための手順は、
- RS232Cで接続。サンプルのコンフィグレーションは38400BPS B8S1PNです。
- h'400000にロードする。
650Kぐらいあります。終わるまで気長に待ってください。
- rootimageを
h'4C0000h'4A0000にロードする。
メモリが不足気味なので、ずらしました。
__startから実行する。
$ h8300-hitachi-hms-nm linux|grep __start
0040586e T __start
です。
いちいち調べるのが面倒なので、先頭から実行出来るようにしました。
起動コマンドに、'console=/dev/ttyS1'を渡さないと
SCI0がコンソールになります。注意してください。
うまくいけばメッセージが出てくるはずです。
その他
割り込みベクタの処理は、
- h'ffbf20以降にジャンプテーブルを作る。
- ベクタテーブルは、そのジャンプテーブルに向ける。
という方法で、疑似的に書き換えています。
ecos/packages/hal/h8300/arch/current/src/vectors.Sに実装例があります。
これとカーネルのソースを読めば、
何をやっているかはわかると思うんですが。
詳しいドキュメントは、現在作成中です。もう少し待ってください。
リンクはご自由に
戻る