組み込みソフト開発のしきいを下げる"リアルタイムOS"のすべて
●リアルタイムOSの調達
作ろうとする組み込みシステムにOSが必要な場合,OSをどうやって調達するかを次に検討します.だいたい,以下の四つの方法があげられます.
1)自分で設計から実装まで行う
2)設計はしないけど,実装ならできる
3)ライセンス・フリーのソース・コードを移植する
4)レディ・メイドなOS(市販OS)を利用する
1)は,苦労は多いのですが,技術は残ります.ほかのOSに移行するときにもシステムに対する知識があるので有利です.また,将来にわたってOSを設計できる技術者を確保できます.さらにソース・コードは自前なので,いざというときに自分で変更できます.
反面,教育は自前で行わなければならない,OSを設計できる技術者が必要,実装するための工数と経費がかかる,自作のOSを実用化するだけの工数・納期を確保しなければならないなどの課題も残ります.
2)は,1)よりは比較的楽に行えますが,1)と同じ課題が残ります.
3)は,OSに関する知識と,ターゲットとなるハードウェアの知識を持った技術者がいればなんとか移植が可能です.しかし,利用するソース・コードが想定している計算機アーキテクチャと,ターゲット・システムのアーキテクチャが似ていなければ変更箇所は膨大な数になります.このため,自作のOSを実用化するだけの工数・納期を確保する必要があります.また,プログラマの教育も必要です.
4)は,OSを作り込む期間を短縮でき,工数・納期的にはいちばん楽です.そのOS上で動くアプリケーション・プログラムを作れる技術者がいればOKです.教育も,お金さえだせばOSを提供しているメーカが行ってくれる場合がほとんどです.
しかし,OSの内部的な動作,特に組み込みシステムを作る上で必要なハードウェア・レベルの動作を知ることがむずかしくなります.契約にもよりますが,ソース・コードは公開されない場合が多いようです.
また,ツール・キットやOSのライセンス料など,信じられないくらいお金がかかる...かもしれません.OS周りのサポートはメーカが行ってくれるはずですが,契約条件によってはない場合もあります.
組み込みシステム内の管理しなければならない資源(メモリ,周辺機器の入出力,実行するタスクの数,UIなど)が多ければ,OSの導入を考えるべきだと思います.ただし,規模の小さいシステムや,コンテキスト・スイッチによるオーバヘッドによる実行速度などへの影響が甚大な場合は,OSなしでシステムを作り込んだほうが応答時間も短く,トータルの性能が良い場合もあるでしょう.
●使いかたによってはリアルタイムOSは両刃の剣になる
組み込みシステムの世界だけに限りませんが,開発する環境(人,時間,物,金)は整っているか?という問いは,システムを開発するときの重要な条件であると筆者は考えています.せっかく高いお金を払ってリアルタイムOSを導入したのに,実際に開発作業を始めてみると全然プログラムが組めなかったというのはありがちな話です.実際の作業を考えてみると,OSのAPIを使うために必要なライブラリやドキュメント,果てはデバッガなどのツールが十分にそろっていなければ,思うように工数・経費も短縮できません.
リアルタイムOSの使いかたを知っている人間でなくては,組み込みシステム上で動くプログラムは組めないでしょう.それに,これら諸々の教育には思ったよりお金がかかります.また,開発途上でOSに関する問題が起こったときに,もしも運悪くOSメーカの対応が悪ければ,工数内で作業を終えることはとうてい望めないでしょう.昔からいわれるように「段取り八分,仕事二分」は,どのような仕事にもいえることです.リアルタイムOSを使うからといって,どんなシステムであっても開発工程を計画すること自体に,本質的な違いはないのではないでしょうか.