組み込みOS自作入門!!「0日目-開発環境の構築」 (1ステップ)

今日から組み込みOS自作入門を始めたいと思います。

PCのOS自作といえば、河合さんの「30日でできる!OS自作入門」ですが、
組み込みのOS自作といえばもちろん坂井さんの「12ステップで作る組み込みOS自作入門」ですね!(笑)
今まではPICマイコンしか使ったことがなかったので、これを機にH8マイコンの入門もしてしまいます!!

さて!OSつくろう!!

といっても、開発環境がないとお話になりませんね。
最初はUbuntuだけで開発しようと思っていたのですが、問題が発生したため、VMを使って、Windows7(ホスト)+Ubuntu(ゲスト)という構成で開発することになりました。
問題というのは、H8にプログラムを書きこむ時に、PCからシリアルポートを経由してH8にデータを転送するのですが、僕が持っているPCはシリアルポートがありません。そこでUSB-シリアル変換ケーブルで代用するのですが、Ubuntuだとこれがうまく動作してくれませんでした。Windows7ならちゃんと動作してくれました。
Windows7+Cygwinでもよいのですが、動作が重かったり、不便な点もあるだろうということで、コードを書いて、コンパイルし、書き込み用のバイナリを作るところまでは、VM上のUbuntuで行い、書き込み&動作確認はWindows7で行うことにしました。
…ちょっと面倒ではありますが、よい代替策がでるまでこのような感じでいこうかなと思います。

開発環境の構築

今日は0日目ということで、開発環境を構築します。
Windows7には、

  • Virtual Box(Ubuntuを動かすためのVM)
  • Flash Development Toolkit 4.06(いわゆるFDT,マイコンにプログラムを書きこむソフト)
  • Tera Term(シリアルコンソールとして使う)

をインストールしました。
VMには、Ubuntu10.10をインストールしました。
Ubuntuには、

をインストールしました。

ロスコンパイラのビルド

H8用のバイナリをコンパイルするためには、クロスコンパイル環境を作らないといけません。
KPIT GNUツールチェーンというものを使えば簡単に環境が手に入るのですが、クロスコンパイラのビルドも経験としてやっておきたいので、自分でビルドすることにします。
簡単にできるかな?と思ったら、ここでコケました。(実は2日位掛かっていたり…)
binutilsは最新版を使用しても問題なく、gccも最新版を使おうと思っていたのですが、gcc4.3以降はコンパイルするのに別途、「MPC」「MPFR」というライブラリの導入を要求してくるので、gcc4.3よりもちょっと前のgcc4.2.2を使用しました。

binutilsの導入

さて、ビルドしましょう。まずはじめは、binutilsです。
この記事をかいた時点(2010/12/26)での最新版を導入します。
http://www.ring.gr.jp/pub/GNU/binutils/
より、binutils-2.21.tar.gzをダウンロードしてきます。ここからは、端末上での操作になります。binutilsをダウンロードしたディレクトリに移動して、

$ tar xvzf binutils-2.21.tar.gz
$ cd binutils-2.21
$ mkdir object
$ cd object
$ ../configure --target=h8300-elf --disable-nls --disable-werror
$ make

と操作すると、binutilsのビルドがはじまります。終わるまで待ちましょう。
終わったら、このように操作します。

$ sudo make install
(パスワードを入力)

これでbinutilsのインストールができました。

gccのビルド

次は、gccです。
http://www.ring.gr.jp/pub/GNU/gcc/
よりgcc-4.2.2.tar.gzをダウンロードしてきます。
さきほどと同じような感じで、

$ tar xvzf gcc-4.2.2.tar.gz
$ cd gcc-4.2.2
$ mkdir object
$ cd object
$ ../configure --target=h8300-elf --disable-nls --disable-threads --disable shared --enable-languages=c --disable-libssp
$ make

と操作します。
ビルドは、さきほどよりも時間がかかります。気長に待ちましょう。ビルドが完了したら、

$ sudo make install
(パスワードを入力)

これでクロスコンパイル環境が整いました。

端末から、

$ h8300-elf-gcc -v

と打ってみて、gccのバージョンが表示されればOKです。
これで、準備は完了です。
これでOSの本体の開発に取り組める…はず。