まるごと大特集OS完全理解!の最後に,Mac OS XのUNIXな使い方に続いて,組み込みシステムを説明します。ちなみに,組み込みシステムに関しては,組み込みLinux入門でも紹介しています。

 携帯電話,湯沸かしポット,エアコン,カーナビ,自動車,産業用ロボット──現在の私たちの身の回りには,マイクロプロセサが組み込まれ,制御を行っている機器が数多くあります。規模の大小を問わず,こうした機器制御のために組み込まれるマイクロプロセサのことを「マイコン」と呼び,マイコンを含む制御システムのことを「組み込みシステム」と呼びます(図1)。

図1●機器制御を行う「マイコン」を組み込んだ「組み込みシステム」は,私たちの身の回りの様々な機器に使われている
図1●機器制御を行う「マイコン」を組み込んだ「組み込みシステム」は,私たちの身の回りの様々な機器に使われている
[画像のクリックで拡大表示]

 組み込みシステムにおいても,ソフトウエアの機能拡張や複雑化に伴い,必要に応じてOSが搭載されます。本特集では,そんな組み込みシステムの役割やソフトウエアの特徴を紹介し,そこで使われるOSについて紹介します。

用途に合わせて多種多様のマイコンがある

 一般にマイコンは,なるべくコンパクトに組み込みシステムを実現するため,必要なI/Oデバイスやメモリーを1チップにまとめ,それだけで完結したコンピュータとして利用できるように作られます。これにセンサー,スイッチ,モーター,また必要に応じて,これらのデバイスを駆動するのに必要な外部回路を接続すると組み込みシステムができあがります。

 例えば,自動車のメーター周辺の表示によく使われる蛍光表示管を直接駆動できるパラレルポートを備えるもの,ステッピング・モーター(電気信号により一定角度で回転するモーター)の制御を行う波形を出力するカウンタ/タイマーとパラレルポートの組み合わせを持つもの,さらには,アナログ・データをデジタル・データに変換するA/D(Analog Digital)コンバータ,その逆のD/Aコンバータを備えるものなどもあります。

 このように目的にあわせて,多種多様なデバイスを備えるマイコンを選択できるのです。その背景には,組み込みシステムの用途が多種多様であり,用途によって求められる機能が異なり,さらにそれぞれにおいて最適設計が徹底されるという事情があります。

 マイコンではこれがCPUコアにも徹底されています。現在のパソコンは事実上,x86互換CPUしかありませんが,組み込み用のマイコンには国内外を含め多種多様なアーキテクチャのCPUが存在します。さらに派生品種と呼ばれる製品(動作クロック周波数や,チップ上に集積されるI/Oデバイスの種類やメモリーの品種・容量などが異なるもの)も合わせると,それこそ数え切れないほどの種類のマイコンが製造・販売されているのです。

組み込みシステムの役割と特徴

 そもそも組み込みシステムは,機器の制御を行うために搭載されます。電子回路や機械とやり取りを行うためのインタフェースを持ち,搭載されたマイコンによってソフトウエア的にタイミング制御や状態の判断を行うことで,複雑な動作や機能を提供します。逆に言えば,機器の複雑化に伴い,ハードウエアでは複雑になりすぎる制御をソフトウエアに置き換えることで,ハードウエアを単純化することを狙ったものです。しかも,ソフトウエアを実行するマイコンは,プログラムを書き換えれば他の用途にも使える汎用性の高い部品なので,量産効果による劇的な低価格化を実現しました。

 こうした背景のもと,高度な機器制御を主な目的として組み込みマイコンのプログラムが開発されます。当然,機器制御の中心になるのは,データのI/O処理です。組み込みシステムの多くは,機器や外界の状態を知るセンサーをいくつも搭載し,アクチュエータと呼ばれるデバイスや各種スイッチを駆動します。したがってマイコンのプログラミングは,このようなI/O処理が中心的なものにります。

 一般にこうしたI/O処理のタイミングは,組み込み対象機器の動作タイミングを決定する重要な要素です。例えば,ステッピング・モーターを定速回転させるためには,一定周期で決められたパルスをモーターに加え続けねばなりません。こうした理由で組み込みシステムのプログラムの動作には時間的な正確さが求められます。

 そのほかにも組み込みシステムは,厳しい動作環境でも堅牢で高い信頼性を備え,24時間365日連続稼働や,ぎりぎり無駄を省いた低コスト化といったことが求められます。例えば携帯電話は,電話としての機能を果たす回路に,無線の送受信回路,音声処理,ユーザー・インタフェースなどがぎっちり組み込まれている一方で,小型で軽いこと,消費電力が少ないことが求められるでしょう。そのため,制御に必要なプログラム・コードは,マイコンのオンチップに集積されたROM(Read Only Memory)領域に書き込まれ,CPUはそこからプログラムを直接読み出して実行します。小型化や低コスト化のため,外部にプログラムを格納したメモリー・チップなどはありません。プログラムで利用する作業領域,電話帳,各種ユーザー設定を格納するRAM(Random Access Memory)も,マイコン・チップ上のものを利用することで部品点数を増やさないようにしています。こうした携帯電話の制御マイコンには,必要以上の高速処理,大容量メモリー,複雑な浮動小数点数演算機能など,不要と思われる機能は一切搭載されません。ROMやRAMの容量も同様です。