今だに PC-98 上でカーネルが動きません。
一応前回よりメモリーを9Mbyteに増設するなどはしていますが駄目です。あ
っさり動いている方がいるところを見ると、もしかしたら新しいpc-98の問題
かもしれません。
今の状態ですが、
1.itron.image での実行
ITRONの起動後(init_itron: start表示後) pmemory.c の pmem_init()関数内
でboot_info->count に設定されている 3145978 という数分 release_memory
をかけようとして300個目でフォルト(KERNEL PAGE FALT (memory fault).)し
て停止します。(もともと256しかないのに)
これは多分私の勘違いで、もともとこのようなことは出来ないと思われる
(src/kernel/make/での作成がいる?)ので調査中止。
2.src/kernel/make/btron での実行
ITRON起動後初期化作業が正常に終了して(いるように見えるだけかもしれない
)、
src/kernel/itron-3.0/common/main.c の itron() の最後の task_switch()
を呼び出し、
task.c で task_switch() 内でキーボードタスク (ID = 3) を選んで、
resume()を呼び出したあとにリセットがかかる。
キーボードタスクは呼び出されないようである。
resume()呼び出し前にprint_task_list()を実行すると、以下の表示
1 <RDY> 0x0 初期タスク
3 <RUN> 0x80018BE8 keyboard_task() の先頭
4 <RDY> 0x80019988 debugger() の先頭
21 <RDY> 0x80019750 echo_server() の先頭
今は GDTR の設定やディスクプリタデーブルの設定を調べています。
なかなかうまくいきませんね。これに手がかかって他のことが出来ない(;_;)
リセットがかかるということはダブルフォルトでしょうか。リセット直前の状
態を調べたいのですが、どのようにするのが良いでしょうか? どこかで
printf()を呼べれば良いのだが。
明日のミーティングは出席します。