(H8移植編第8回)いよいよOS移植だ!

2009/09/20

あなたは 人目のお客様です.

KOZOS移植のためにブートローダー作ったりH8の割り込み周りを試したりと いろいろ準備していたが,いよいよKOZOSを移植しよう.

まず移植にあたってだが,とりあえず PowerPCへの移植ソースの最新版 をベースにしてみた.

で,移植したのがこれ.とりあえずコマンドプロンプトを出して, コマンド受け付けて動作するようになっている.まあ移植にあたっては いろいろそれなりに苦労したのだけど,詳しい説明は次回に回して, とりあえず公開しよう. ブートローダーにちょこっと手を入れているので,ブートローダーも修正版を公開.

移植なのだけど,まずH8が16ビットマイコンなので,intの16ビット対応が いろんなとこに手が入っている.あと割り込み周りをH8に合わせて書き直してある.

まず,OSをビルドしてみよう.ビルド方法は今までと同じ.

hiroaki@teapot:~/h8/os/kozos>% ./make.sh
+ LOCAL=/usr/local
+ TARGET=h8300-elf
+ TARGETDIR=/usr/local/h8300-elf
+ PATH=/usr/local/h8300-elf/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/usr/pkg/sbin:/usr/pkg/bin:/usr/X11R6/sbin:/usr/X11R6/bin:/home/hiroaki/bin: export PATH
+ GCC_EXEC_PREFIX=/usr/local/h8300-elf/bin export GCC_EXEC_PREFIX
+ AR=/usr/local/h8300-elf/bin/ar export AR
+ AS=/usr/local/h8300-elf/bin/as export AS
+ CC=/usr/local/h8300-elf/bin/gcc export CC
+ /usr/local/h8300-elf/bin/gcc -print-prog-name=cpp
+ CPP=cpp export CPP
+ CXX=/usr/local/h8300-elf/bin/gcc export CXX
+ FC=/usr/local/h8300-elf/bin/f77 export FC
+ LD=/usr/local/h8300-elf/bin/ld export LD
+ NM=/usr/local/h8300-elf/bin/nm export NM
+ RANLIB=/usr/local/h8300-elf/bin/ranlib export RANLIB
+ SIZE=/usr/local/h8300-elf/bin/size export SIZE
+ ADDR2LINE=/usr/local/h8300-elf/bin/addr2line export ADDR2LINE
+ GASP=/usr/local/h8300-elf/bin/gasp export GASP
+ OBJCOPY=/usr/local/h8300-elf/bin/objcopy export OBJCOPY
+ OBJDUMP=/usr/local/h8300-elf/bin/objdump export OBJDUMP
+ STRINGS=/usr/local/h8300-elf/bin/strings export STRINGS
+ STRIP=/usr/local/h8300-elf/bin/strip export STRIP
+ HOSTED_CC=/usr/bin/cc export HOSTED_CC
+ NOGCCERROR=yes export NOGCCERROR
+ OBJECT_FMT=ELF export OBJECT_FMT
+ MAKE=gmake -f Makefile
+ export MAKE
+ set -x
+ exec gmake -f Makefile
/usr/local/h8300-elf/bin/gcc -c startup.s  -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKOZOS
/usr/local/h8300-elf/bin/gcc -c main.c  -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKOZOS
/usr/local/h8300-elf/bin/gcc -c interrupt.c  -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKOZOS
/usr/local/h8300-elf/bin/gcc -c lib.c  -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKOZOS
/usr/local/h8300-elf/bin/gcc -c serial.c  -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKOZOS
/usr/local/h8300-elf/bin/gcc -c thread.c  -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKOZOS
/usr/local/h8300-elf/bin/gcc -c syscall.c  -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKOZOS
/usr/local/h8300-elf/bin/gcc -c memory.c  -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKOZOS
/usr/local/h8300-elf/bin/gcc -c idle.c  -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKOZOS
/usr/local/h8300-elf/bin/gcc -c extintr.c  -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKOZOS
/usr/local/h8300-elf/bin/gcc -c kozos.c  -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKOZOS
/usr/local/h8300-elf/bin/gcc -c command.c  -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKOZOS
/usr/local/h8300-elf/bin/gcc startup.o main.o interrupt.o lib.o serial.o thread.o syscall.o memory.o idle.o extintr.o kozos.o command.o -o kozos  -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKOZOS -static -T ld.scr -L.
cp kozos kozos.elf
/usr/local/h8300-elf/bin/strip kozos
hiroaki@teapot:~/h8/os/kozos>% 
では実行してみよう.ブートローダーも修正してあるので,ブートローダーを フラッシュROMに書き込んで起動する.
teapot# cu -l /dev/cuad0
Connected
kzboot (kozos boot loader) started.
kzboot> 
ブートローダーの起動メッセージだけど,まあいままでは開発中の名残で Hello World とか出していてそのままでちょっとアレだったので, ついでにちょっと変えてみた.プロンプトもついでに修正.

で,OSをダウンロード.

kzboot> load
~CLocal command? lsx kozos
Sending kozos, 56 blocks: Give your local XMODEM receive command now.
Bytes Sent:   7296   BPS:767                             

Transfer complete
                 eceive succeeded.
kzboot> 
けっこうサイズがギリギリになってしまっている.

で,OSを起動してみる.

kzboot> run
starting from entry point.
kozos boot succeed!
command> 
とりあえず問題なく起動できている.

てきとうにコマンド入力してみよう.

command> echo aaa
 aaa
OK
command> threads
extintr
idle
command1
OK
command> 
おー,ちゃんと動作している.すげえ.感動.

うーむ,これでひとまずブートローダーから起動して自作OSをダウンロード, 起動するとこまでひととおりできたわけだ. まあ実作業はたいした時間はかかってないのだけど, 昔むかしに「OS作ってみたい!」とおもっていろいろ勉強してきた成果というか, なんというか,感慨深いなあ.感動だー.

ソースの詳しい説明はとりあえず次回.いやー,動いた動いた.


メールは kozos(アットマーク)kozos.jp まで