「オープンソースを使ってみよう」(第4回:KOZOS編)
01/14
—————————————
KOZOSプロジェクト代表
坂井弘亮(さかい・ひろあき)
—————————————
■ KOZOSって何?
KOZOSは「マイコンボード」(写真1参照)と呼ばれる基板の上で動作する「自作OS」です.
(写真1)
写真のマイコンボードには「H8」というCPUが搭載されており,手のひら程度の大き
さですが,小さいながらもこれでひとつのコンピュータ・システムになっています.
コンピュータなので,当然ながらOSも動作します.KOZOSはこのような「マイコン
ボード」を制御するための,「組込みOS」と呼ばれるOSです.
http://www.saturn.dti.ne.jp/~hsakai/kozos/
PCならばキーボードやマウス,ディスプレイなど様々なI/Oが利用できますが,
マイコンボードに搭載されているI/Oは限られています.たとえば写真のマイコン
ボードは標準的なI/Oとして,シリアル・ポートとLANしかありません.KOZOSでは
これらを操作して,マイコンボードで「遊ぶ」ことができます.KOZOSはこのよう
にマイコンボードをいじって遊んだり,マイコンボードを利用してOSの内部構造
の勉強をするための,ホビー用・学習用のOSです.
マイコンボードの魅力は,その小ささと安さにあります.たとえば写真のマイコン
ボードは「PCに比べると何もできないただのオモチャ」とも言えますが,「数千
円で買える超安価・小型なwebサーバ」とも考えられるわけです.なんだか聞いた
だけで楽しそうです.ここにはPCとはまた違った可能性が見えることでしょう.
■ 「組込みOS」って何?
KOZOSは「組込みOS」です.とはいっても「組込み」と聞いてもなかなかピンと
来ないかたも多いかもしれません.
「OS」には大きく分けて「汎用OS」と「組込みOS」の2種類があります.
「汎用OS」は,いわゆるPC向けのOSです.「組込みOS」は携帯電話やカーナ
ビ,炊飯器,プリンタなどで動くOSです.このような機器は「組込み機器」と呼ば
れます.
組込み機器にもマイコンが搭載されており,ソフトウェア処理によって様々な制御を
行っています.現在ではこれらの「組込みソフトウェア」の開発コストの削減のため
に,組込み機器にもOSが搭載されていることが多くあります.組込みOSはこのよ
うな組込み機器のための,制御用のOSです.よって通常は「製品の中に入っていて
ユーザーは意識しないもの」なのですが,KOZOSはこれを「個人的に遊びで作っちゃ
った」というものです.
「汎用OS」にWindowsやMac OS,GNU/Linux,FreeBSDなど様々あるように,「組込みOS」にも様々なものがあります.その中でもKOZOSは「学習用」を意識して開発されています.
■ KOZOSの特徴は?
KOZOSは独自仕様の組込み向け自作OSです.ホビー用,学習用を強く意識していま
す.とくに個人レベルでの利用を想定しており,他の組込みOSとは一風異なった特徴
があります.
・安価で入手性の良いボード上で動作する.
(写真のマイコンボードは秋葉原の「秋月電子通商」で4000円程度で購入できます),
・誰でも改造や読解ができるように,個人でも読みきれるソースコード量に抑える.
(ブートローダーと合わせても数千行程度)
・メーカ独自のコンパイラなどでなく,GNU環境で開発する.
(無償の開発環境で,つぶしがきく学習ができる)
・ブートローダーも含むすべてのソフトウェアを完全フルスクラッチで開発している.
・オープンソース・フリーソフトウェアである.
■ どういう人が使うといいのか
「遊び感覚でちょっとマイコンでもいじってみるか」とか「OSとか組込みの勉強を
ちょっとしてみたいなあ」と思ったときに,ちょうど良い題材になると思います.
とくにKOZOSはソースコードの分量が少ないため,誰でもOSの内部を読解して,い
じって改造することができます.このように,「使うためのOS」ではなく,いじって
改造して遊ぶための「オモチャ」として考えていただければと思います.ホビープログ
ラミングとしてマイコンいじり,OS自作を行うときに,適切な題材になると思います.
OS作りを遊びにしてしまいましょう!
また組込みOSの学習を始めたいと思ったとき,なかなか適切な教材が無いことがあり
ます.組込みOSの学習用教材は多くあるのですが個人で購入するには高価な場合も多
く,またほとんどはOSが「すでにありき」のもので,「既存の組込みOSを使って制
御アプリを動かす」というものが普通です.これに対してKOZOSは「OSの内部構造を
知る」「OSを作る」「OSを改造する」といった学習に向いています.
■ 利用方法
実機で動作させるには,まずは写真1のマイコンボードを購入する必要があります.
写真2は,マイコンボードのパッケージの中身です.
とりあえず必要なものとして,マイコンボードが3,750円,シリアルケーブルが300円
程度,電源アダプタ(5V)が600円程度です.これらは秋葉原の秋月電子通商で購入する
ことができます.また通信販売でも購入可能です.もっとも現在ではエミュレータ環境
でも動作しますので,(ちょっと難しいですが)エミュレータ環境を構築してしまえば,
PCだけで試してみることもできます.
さらにマイコンボードのソフトウェアの開発方法ですが,「クロス開発」が主流になり
ます.
PC用のアプリケーションは,そのPC上で開発することができます.たとえばWindo
ws用のアプリケーションをWindows上の開発環境で開発し,Windows上で実行もできる
といった具合です.このような開発は「セルフ開発」と呼ばれます.これはPCでは当
り前のように感じられますが,組込み機器では状況が変わってきます.
たとえば炊飯器の上で動作する制御用のソフトウェアを開発するときに,その炊飯器上
でコンパイラを動作させて開発するようなことは考えられません.炊飯器に搭載されて
いるCPUやメモリでは,コンパイラを動作させるようなスペックはありません.
よって組込み機器用のソフトウェアには,開発用の母艦となるPCを用意し,そのPC
上で開発することが主流になります.PCと組込み機器はシリアルケーブルやUSBなど
で接続し,PCで開発したソフトウェアはケーブル経由で組込み機器に転送して実行さ
せます.PCでは組込み機器用のコンパイラを動かします.このような開発スタイルが
「クロス開発」です.
KOZOSの開発もクロス開発で行います.まずはPC上にクロス開発環境を構築します.
具体的には,GNUプロジェクトのbinutilsとgccをH8用に構築します.この方法は以下
で説明されています.PCにはWindowsXP,GNU/Linux,FreeBSD上での開発がサポ
ートされていますが,Mac OSなどでの開発実績もあるようです.
http://www.saturn.dti.ne.jp/~hsakai/kozos/osbook_03.html
クロス開発環境でマイコンボード用のプログラムをコンパイルすることで,実行用の
モジュールが作成されます.まずはブートローダーをコンパイルします.
さらにPCと写真1のマイコンボードをシリアルケーブルで接続します.マイコンボ
ードのディップスイッチをフラッシュROMの書き込みモードにして,PC側でフラッ
シュROM書き込み用の専用プログラムを起動することで,ブートローダーの実行モジ
ュールを転送して書き込むことができます.
フラッシュROMの書き込みには「h8write」というフリーソフトウェアが利用できます.
CPUメーカ純正の「FDT」というツールも利用できますが,筆者はFreeBSDを愛用して
いるということもあり,h8writeを利用しています.
フラッシュROMにブートローダーを書き込んだら,あとはリセットボタンを押せばブー
トローダーが起動します(画像2).起動するとシリアルケーブル経由でPCからコマン
ド操作できます.VGAが無いため,操作の基本はこのようにシリアルケーブル経由にな
ります.画像2はPC側のシリアル通信用ツール(minicom)からマイコンボードに接続
しているところです.
さらにOSの本体をコンパイルし,ブートローダーのシリアル転送機能を利用してOS
の実行モジュールをマイコンボードに転送します.画像3は転送中,画像4は転送が完
了したところです.
あとは起動をかければ,OSが起動して動作を開始します.画像5では,PC側から
「echo」というコマンドを入力して,マイコンボードが応答しています.
このようにまずはブートローダーが起動して,さらにOSをロードして起動するとい
う2段構成になっています.
■ よくわからないときは
KOZOSの開発については筆者のホームページで説明してあるのですが,これはつれづれ
に書いてしまっているため,初心者が参照するには向いていません.
情報交換や質問の場として,「KOZOS友の会」という google group があります.どな
たでも入会することができます.
http://sites.google.com/site/kozostomonokai/
また「12ステップで作る 組込みOS自作入門」という書籍が販売されており,KOZOS
をゼロから作成していく過程を細かく説明してあります.これを読めば,組込みOSの
自作を誰でも追体験することができます.筆者渾身の力作ですのでおすすめです!
http://www.saturn.dti.ne.jp/~hsakai/books/makeos/
■ KOZOSプロジェクトの取り組み
「KOZOSプロジェクト」は,KOZOSの作者である坂井がやっている「一人プロジェク
ト」です.主に以下の活動を行っています.
http://www.saturn.dti.ne.jp/~hsakai/
・KOZOSの開発
通常のOSは実用向けを目指して機能追加の方向に進化しますが,KOZOSはホビー用,
学習用と割り切って,余分な機能を削減してコンパクトにまとめる方向で考えていま
す.最終的な目標は「組込みOSに関連する機能をひととおりフルスクラッチですべ
てサンプル実装してみる」というものです.
「ひととおりの機能」とは,たとえばTCP/IPやデバッガ対応,エミュレータ環境での
動作,フラッシュROMからの起動などです.これらひととおりを実現してみてサンプル
実装として提供できれば,学習用にとてもいい材料になると思います.
・KOZOSの広報
開発に並行して,広報活動も行っています.主にOSCなどのイベントへの出展や,セ
ミナー登壇などです.最新の情報は以下のブログで発信しています.
・勉強会の開催
組込み関連や書籍「12ステップで作る 組込みOS自作入門」のサポートのための
勉強会を主催しています.
読者の方々がこの文章を読んでいるときにはすでに終了していますが,1月10日の祝
日に,12ステップ本の「もくもく会」の第2回が行われます.今後も実施していき
ますので,興味のあるかたはぜひご参加ください.
■ 組込みOSを作ってみよう!
いかがでしたでしょうか.「組込み」に触れる機会はなかなか少ないかと思います.
新鮮に感じていただき,興味を持っていただければ幸いです.
KOZOSプロジェクトはオープンソースカンファレンスに頻繁に出展しており,セミナー
なども精力的に行っています.2010年は9箇所に出展しましたが,今年もさっそく香川,東京,神戸と出展予定です(大分は不参加…).展示ではwebサーバ実演などを行っています.ぜひお立ち寄りください!