作業自体は続行しているもののNetBSD的には一段落付いてしまった状態で、このままのタイトルでいくのも如何なものかと・・・(^^;
あ、そうそう、書いておかなきゃいけない事があった。FlashROM化のお話。実際、製品として世に送り出すためには必須の作業<font color=PowderBlue>って言うか当たり前</font>になる。実は前々から<font color=SeaGreen size=+1>その辺どーするんだろうなぁ</font>と思ってはいたのだが、それより目の前の課題が多過ぎて・・・<b>(T_T)</b>
この作業に取り掛かるに当たって、まずはSH4のドキュメント<font color=PowderBlue>日本語なのがホントありがたい(T_T)</font>に目を通す。すると<font color=DarkBlue>PowerON resetでプログラムカウンタは0xa0000000になります</font>とある。これはROMの先頭アドレスだから「じゃ、ここにmapしてやれば一件落着」<font color=SeaGreen size=+1>なんて単純にはいかない</font> ROMよりもRAMの方が動作が速いので、やっぱりRAM上で実行させたいのだ。それに今だってRAM上で動作している訳だしね。で、どうするかって言うと<font color=DarkBlue>まずIPLを起動してNetBSDの部分をRAMに展開した後改めてNetBSDを起動する</font>という手順を踏む事になる訳だが、なんとまぁ嬉しい事に<font color=FireBrick size=+1>NetBSDにはすでにこの部分がカーネルに含まれている</font> locore.Sを見てみると<font color=DarkBlue>ROMIMAGEフラグを定義してカーネルを再構築すれば全てはそこに有る</font>状態。なんだ、やっぱりそのままROMに書き込んどけばいいんじゃん! と思ったのだがどうもそうは問屋が卸してくれない。RAM上では先頭の0x8c000000から0x10000はSH4の動作に必要なテーブルやらなんやら<font color=PowderBlue>細かい事忘れてるし</font>があり、カーネルは0x8c010000からmapされているのだが、どうもROM上でもこの分オフセットしておかないとマズイらしい<font color=PowderBlue>ほんとに?</font> つまり0xa0000000には0xa0010000にジャンプするコードを書いておき、カーネルは0xa0010000からmapしなければならない、というのが結論。長々書いた割には大した内容が・・・【爆】
てな訳で、実際の作業はまだ次回。
コメント