ソフトウェアとハードウェアの境界

ホビー開発に関する誰得情報満載☆

01-01 KOZOS開発環境の構築 (自己流編)

KOZOSは素晴らしい

「12ステップで作る 組込みOS自作入門」は本当に素晴らしい書籍だった。 AND回路、OR回路、XOR回路の話から、演算器の話、アセンブリももちろんのこと、ハードウェアリソースの扱いとか物理アドレスとかメモリマップドIOとかリンカとか、エンベデッドに必要っぽい話題をたくさん紹介してくれていた。 あくまでもOSを作成する上で必要な内容がほとんどだったが、様々な技術に触れる手引きの書としても読むことができると思う。

さて、実際僕もこのOSをコーディングしたのだが、書籍に記載されている内容をただ書き写す、はたまたウェブサイトからソースコードをダウンロードする、なんてことをしてしまうと、ただ動作させるだけで満足してしまいそうな気がする。 そこで僕は、初心に還り、ソースコードに関数ヘッダやファイルヘッダ、各種冗長すぎるコメントを加え、更に命名規則を与えプレフィックスを加え、更に更にディレクトリ構成も直してローダとOSで同じソースを共有するようにcommonディレクトリに置いたり、などなど、自分流にアレンジしてみた。 自分の思うままに、楽しく、気持ち良く、をモットーにいじりまくった。

動作確認を終え、ある程度ソースコードが(自分的に)綺麗に整理されると、今度は既存の組込みOS、TOPPERS/JSP(uITRON)とかHOSとかも動作させたくなってきた。 いろいろ調べてみると、MONIXというローダに行き着き、こちらを使用させていただこうと思い至る。

この辺を踏まえて、自己流で開発環境を整えたいと思う。

h8300-elf-gcc

どんな理由だったか忘れたけど、「12ステップで作る 組込みOS自作入門」で紹介されているgcc-3.4.6だと、JSPかHOSかMONIXのどれかのコンパイル中に致命的なエラーが生じた。調べてみるとコンパイラのバグだみたいなことがどっか異国のサイトで書いてあったので、このバージョンのgccを使うことを諦めた(こういうバグとかエラーこそちゃんとメモっとくべきだった…)。
gcc-4系のソースコードをダウンロードしてコンパイルすれば良かったのだが、それも単純ではないらしい。
普通に書籍とおんなじ方法でやろうとしてコンパイルエラーが出まくって全然うまく行かなかったので、泣く泣く諦めた。
そこで「KPIT」gccコンパイラを使用することにした。
本ソフトウェアを入手するには、無料ではあるがアカウントの作成が必要となる。
アカウント登録をし、「Free Downloads」の「All Downloads」に「GNUH8 v12.02 Linux Tool Chain (ELF Format)」的なパッケージがあるはずなのでダウンロード。
このパッケージは.rpmパッケージである。
僕の開発環境はLinuxBean14.04、つまりはUbuntu系なので、.rpmパッケージはインストールできない(rpmRedHat系)。
そこで以下を実行。

% sudo apt-get install alien
% alien gnuh8300_v12.02_elf-1-1.i386.rpm

すると、.debパッケージが作成される。
これをインストール。
ちなみに、binutilsGNUプロジェクトアーカイブスgnu/binutils/から新しそうなソースコードをダウンロードしてきて、書籍と同様にコンパイルして使用する。
h8300-elf-gccのバージョンはこんな感じだ。

% h8300-elf-gcc --version  
h8300-elf-gcc (GCC) 4.7-GNUH8_v12.02  
Copyright (C) 2012 Free Software Foundation, Inc.  
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

このコンパイラだと、c++コンパイラもついてくるので、c++でオブジェクト作りたい方なんかもいいかもしんない。

現在、自分のソースコードがそれほど綺麗な状態ではないので、「01-02」くらいにライセンスの話も踏まえて公開できればいいなと思う。