Monarm
MonaOSをARM上に移植してみます。
同OSはx86べったりだと思いますが、なるべくオリジナルの設計を崩さないように考慮したいと思います。
環境等はARMの擬似環境構築時のものを使用します。
MonaOSは 0.3.0alpha9 です。
とりあえずKernel開始(cstart関数)に到達するところまで移植できたので恥を惜しまず公開します。
追記/お詫び
記載していたsvnリポジトリは、登録ユーザ以外、閲覧することができませんでした。
以下に別のリポジトリを設けましたのでこちらを参照してください。
http://www.assembla.com/spaces/monarm/trac_subversion_tool
メモリマップ
移植前にまず、メモリマップを考えました。オリジナルはこちらのようになっています。
とりあえず以下のようにしました。
最終的なリセットベクタは0からに配置予定です。
従ってオリジナルがBaseとしている0x1200に合致しないのですが、そのあたりは追々考えていきたいと思います。
ブートローダ
オリジナルのブートシーケンスは、
- firstboot(先頭セクタ)
- secondboot
と2本立てになっています。これを1本化して、現状、
といった手順を踏みます。
本来ならば、オリジナルで行っているサーバプロセスの読み込みが必要ですが、そこまでに至っていません。
Kernel
本体であるKernel.cppにはまだ到達していません。
cstart.cppでメッセージを出して止めています。
なんの面白みもありません。これからこれから。
割り算ルーチンには、ARM向けlibgcc.aをリンクするようにしました。
また同ライブラリ内のdiv0関数がraise関数を呼び出すため、とりあえずダミースタブを作成して対応しました。
(in cstart.c)
近々の課題
*1:u-bootを参考にしました