組み込み業界が携帯電話から自動車にシフトし始めたのはなぜか?:組み込みシステムって何?【後編】
前回に続き、組み込みシステムの分類をソフトウェア面から考察するとともに、現在の組み込みシステムのトレンドと今後の展望について述べる。
「意外と知らない組み込みシステムの分類方法」では、ハードウェア構成から見た組み込み(Embedded)システムは明確な区別が難しく、使用方法から判断するのが分かりやすいという話をした。では、ソフトウェアから見た場合、組み込みシステムをほかのシステムと明確に区別することはできるだろうか?
明確な分類ができない理由は開発コストに関係する
一言でいえば、ソフトウェア面から見ても、組み込みシステムを一般的なシステムと明確に分けることは難しい。一般的なシステムとほとんど変わらないことも珍しくない。なぜなのか? 具体的な例を挙げて説明しよう。
情報掲示板(電車のホームにある行き先および発車時刻を示す電光掲示板や、空港におけるフライトの発着案内など)で、Windowsのエラーメッセージが出ているのを見たことはないだろうか。中には、ブルースクリーンを表示するものもある。日常的に見掛ける機器やシステムにWindowsがそのまま搭載されているのは珍しくない。Microsoft Visual Basic(VB)などでプログラムが書き込まれているものもざらにある。
なぜ個別のプログラムを組むのではなく、PCレベルのものを使うのか? その一番の要因は開発コストにある。ハードウェアとインフラは最もコモディティー化しているものを使うのがコスト削減につながるためだ。
最近では、Javaが共通言語の1つになってきたため多少動向が変わってきているが、ほんの数年前まではコストを抑える1つの方法として、デスクトップアプリケーションをVBで記述するのが一般的だった。例えば、前述した電光掲示板の動作は、定期的に表示すべきデータを取得し、そのデータを画面出力するのみとなる。特に複雑な動作はないため、アプリケーション開発に掛かるコストさえ抑えればトータルコストも安くなる。そのため、「PC+Windows」の組み合わせで十分に機能を満たせる場合は、特定用途向けのプログラムをわざわざ組まずに済ませることになる。
PCを使う場合、選ぶOSでコストは変わる
もちろん、VBを使うためにはWindowsプラットフォームを使う必要があり、Windowsのライセンスの購入が必要だ。しかし、たとえWindowsのライセンスで3万〜4万円のコストが掛かっても、開発期間を1週間短縮できるのなら、コスト全体としては多大な釣りが来る計算となる。一般的に量産効果が期待できないアプリケーションを作る場合、単価は多少上がっても許容される。むしろ開発コストや開発期間を抑える方が重要となる。
ただし、「PC+Windows」の組み合わせはPCを使う場合がメインである。これ以上のクラスのもの、例えばPCサーバクラスの通信機器などになると、性能に対する要求もクリティカルになってくるため、OSに関してもチューニングしやすいものが好まれる。結果、LinuxやUNIX、リアルタイムOS(RTOS)を使うケースが非常に多い。もっと上、つまりメインフレームクラスのシステムになると、そのハードウェアを提供するベンダーがOSやミドルウェアを同時に提供し、これを使う形になるのが一般的だ。
「PC+Linux」の組み合わせは、「PC+Windows」の組み合わせの次に多いと思われる。Windowsより数が少ないのは、Linuxでシステムを組むには相応の知識を持つエンジニアを継続的に確保していく必要があるためだ。やはり、高いスキルがなくても使いこなしやすいWindowsの方が一般的といえるだろう。
OSすら必要ないシステムは「組み込み」と区別できる?
ではごく小規模なシステムはどうだろう。こちらは千差万別だ。携帯電話のように、ある程度の機能を搭載しているものにはOSがあり、OS上でアプリケーションソフトウェアが動く。しかし、小規模のものでWindowsが使われることはそれほど多くない。マイクロソフトは、組み込み向けRTOS「Windows Embedded CE」を提供しているが、このクラスになるとどのみちハードウェアはアプリケーションに合わせて作る(つまり、PCの流用はない)。そのため、結局はOSとアプリケーションを全部自分で用意することになるパターンが多い。しかも、OSを実装しない場合も少なくない。例えば、車のドアミラーの制御にはいちいちOSを入れる必要がない。
例に挙げたドアミラーの構成を見てみよう。運転席でミラーの制御ノブを操作すると、その操作結果はLIN(Local Interconnect Network)というバスを経由し、ドアミラー制御システムに「ワンクリック分、上に」「ワンクリック分、左に」などといったコマンドが届く。これをLINインタフェース(I/F)経由で取り込んだCPUは、フラッシュメモリに内蔵された「ワンクリック分上=X軸モーターを右回転2度分」のように指示を解釈し、それに相当するだけの駆動パルスをデジタル−アナログ(D/A)変換経由でX軸モーターに送る。これを受けてモーターは2度回転し、少し上を映すようになるという仕組みだ。
この程度のシステムの場合、OSを使うメリットはない。OSが役に立つのは以下のような場合だ。
- 複数のタスクを並行して実施する
- メモリ管理やデバイス管理などをアプリケーションから切り離して行う
単純なシステムでは、どちらのメリットも享受できない。むしろOSを動かすことで余分なCPUパワーやメモリが必要になり、OS自身のコストも掛かる。Linuxなど無償のOSでもメンテナンスコストが掛かるし、VxWorksなどの有償RTOSを使う場合はそのライセンス料も必要だ。従って、こうしたものにOSを搭載する、といった動きには今のところなっていない。
Copyright © ITmedia, Inc. All Rights Reserved.