組み込みシステム

組み込みシステムは、家電製品や産業機器などに搭載された、特定の機能を実現するためのコンピュータシステムの総称である。

1. 概説
-----

組み込みシステムとは、機械や装置等の特定の機能を実現するために「組み込まれる」コンピュータシステムのたぐいを指すための総称である。産業用機器、医療用機器、家庭用機器等、制御を必要とする多くの製品に用いられている。特定の機能を実現する目的で組み込まれるという点で、PC等の汎用的なシステムと対比される。

小型・軽量、省電力、安定動作・誤動作防止などの要求から専用に設計されるものが多いが、組み込み用途以外の既存の製品のダウンサイジング、もしくは既存の回路ないしコンポーネントを流用・組み立てを行い製品化しているものも近年増えてきている、これはコンピューターや各種電子回路の小型化と信頼性の向上により特定の組み込み用途の要求を満たしたためである。

組み込みシステムが登場する以前の装置の制御は、制御理論に基づく伝達関数を用いたPID制御などにより主に電気・電子回路がもたらす現象的な電気量や、機械的な機構の組み合わせ等によって直接的に実現していた。これらの制御的機能を、主に専用に設計されたコンピューターシステムとソフトウェアによって行うことで、装置の正確な状態監視、判断、複雑な命令の組み合わせ等が実現できるとともに、機能の追加や変更も容易に行うことができる。組み込みシステムの中でも、例えば、携帯電話やデジタル家電、自動車など多機能なシステムでは、複数のハードウェア、複数のソフトウェアを組み合わせたものとなり、多くの開発人員と開発期間を要し、大規模組み込みシステムなどと呼ばれることがある。

近年におけるマイクロプロセッサの価格の低下、能力の向上などにより組込みシステム導入は広がっている。機能の追加や変更がソフトウェアを書き換えることで可能となるため、電気・電子回路の変更が最小限に押さえられ、コストもおさえられることなどから、広範囲の製品に搭載されるようになっている。

1.1. 定義
-------

コンピュータ用語辞典などでは、組み込みシステムは「特定の機能を実現するために機械や機器に組み込まれるコンピュータシステム」などといった説明がされている。

「特定の機能を実現するための必要十分条件を満たす、選択や交換の不可能なハードウェアとプログラムで構成されるコンピュータシステム」と定義されることもある。

1.2. 組み込みシステムの形態
----------------

ハードウェアの構成は汎用のもの、独自のもの、両方を組み合わせたものがある。

ソフトウェアも同様に、汎用のもの、独自のもの、両方を組み合わせたものがある。開発言語としてはC言語が用いられることが多いが、メモリ容量や実行速度等の制約が厳しい用途ではアセンブリ言語が用いられる。メモリ容量等の資源が十分に確保できるシステムではOSも搭載されているものも多い。

ハードウェアとソフトウェアは別々に設計することもあるが、ハードウェアとソフトウェアの機能をお互いに考慮しながら設計する協調設計と言う設計手法もある。

2. 沿革
-----

組み込みシステムが発達する以前の装置の制御は、アナログ回路、プログラム制御によらないデジタル回路、からくり的な機械的機構といったハードウェアにより構成していたが、新たな機能を追加したり変更したりする場合に、電子回路や機構そのものを変更する必要があり、コストと時間がかかるという問題があった。

1980年代以降のマイクロプロセッサの発達により、コンピュータを用いた制御方式を導入することで、電子機器の回路は変更せず、ソフトウェアの部分のみを変更することで機能の追加が可能になり、機能追加に必要なコストが削減された。

このため、ほとんどの電化製品に組み込みシステムを搭載するようになり、それにより、製品の付加価値となる新機能が比較的容易に追加できるようになり、高機能化・多機能化が進んだ。

3. 具体例
------

家庭用、産業用問わず電子制御を必要とする製品において広く用いられている。以下に例を挙げる。

家庭用電気機械器具
白物家電等
通信用機器
デジタル機器
AV機器
ホームセキュリティ機器
家庭用ゲーム機
高機能な玩具
高機能な教育用機器
一般産業用機器や機械設備類
事務機器
通信機器
業務用空調設備、業務用エアコン
生産用機器・設備
販売用機器
現金自動預け払い機
広告・展示用装置
警備・監視用装置
遊戯産業用機器
信号機
エレベーターの部分制御
乗り物やそこに搭載する機器
自動車、オートバイのエンジンコントロールユニット、自動変速機、エアコンなどの制御
カーナビゲーションシステム
鉄道車両のブロック制御
船舶、航空機、宇宙船、人工衛星
医療機器
バイタルサイン用
除細動器
臨床検査用機器・分析装置
災害対策用機器
レスキューロボット
原子力発電所の事故処理用、廃炉用ロボット他

競技用ロボット他多数

4. 汎用システムとの比較
-------------

組み込みシステムは、最終製品が多岐に亘るため、汎用的なコンピュータに比べて非常に数と種類が多い。
ソフトウェアだけでなくハードウェアも専用のものを開発することが多い。また、そのハードウェアに対応したデバイスドライバを作る必要もある。
機械の制御を行う場合には特に、汎用システムとは異なり、リアルタイム制御が重要になる。
大量生産される製品の場合にはコストが非常に重要となるので、必要最低限のメモリと、安価なCPUで動作可能にする必要がある。小規模なシステムでは1チップマイコンを利用することが多い。
専用のハードウェアに専用のソフトウェアが搭載されて製品となるものが多いので、そのテスト工程は、ハードウェア、ソフトウェアの両方にまたがる検証が重要になる。

5. ハードウェア
---------

組み込みシステムを搭載した機器のハードウェアの構成パターンとしては以下のようなものがある。

独自のハードウェアのみで機器を構成する。
汎用のマイコンボードと独自のハードウェアを組み合わせて機器を構成する。
汎用のハードウェアのみで構成する。製品の目的や、製品が販売されるマーケットの性質に応じて、上記からパターンが選択される。

より具体的には以下のような要素を考慮してハードウェアの構成が検討される。

形状、サイズ
量産品か否か形状が特殊であったり、サイズが特別に小さい製品などでは、汎用のハードウェアを内蔵することができないことがあり、その場合は専用のハードを新たに開発しなければならなくなる。 「量産品か、少量生産品か」というのは、独自ハードウェアは、開発コストがかかる、という事実があり、量産品の場合は全体の大きなコストの中にそれを含めてしまえば良いのだが、少量生産品の場合はそうできないというハードルがある、ということである。

厳密で適切な選択となると、原価計算も踏まえて行う必要がでてくる。

5.1. 組み込み向けCPU
--------------

以下に主なものを挙げる。

8049
8051
8085
Z80
68000
V30 , V850
PIC
Atmel AVR
H8/300
SuperH
PowerPC
M16C
R8C/Tiny
MIPSアーキテクチャ
ARMアーキテクチャ

6. ソフトウェア
---------

「独自に開発したソフトウェアだけで構成する」方法と、「汎用ソフトウェアと独自ソフトウェアを組み合わせて構成する」方法が存在する。

ソフトウェアはC言語で記述されることが多い。32ビット以上のマイコンなど、比較的ハードウェア資源が豊富な環境ではC++やJavaが使用されることもある一方で、4ビットマイコンなどの資源が貧弱な環境や、逆に他言語では間に合わないような極めて高速な処理を求められる場面では、現在でもアセンブリ言語の使用が必須である。
最近では開発にUMLといったオブジェクト指向の手法が取り入れられるようになっている。ただし組み込みシステム開発においては、機能で分類したクラスでプログラムを組み立てるのではなく、信頼性が保証されたモジュールで組み立てるのが普通である。
デバッグは、ICEと呼ばれる機器を用いてパソコンをCPUに接続してリモートで行う。近年では、ICEを使わずJTAGエミュレータやROMエミュレータなどのエミュレータや、パソコン上でCPUの機能をシミュレートするシミュレータも使用される。
かつては、ソフトウェアはEPROMに書き込まれた状態で出荷されたため、出荷後に製品不具合が発見されると、修正や修理のためにメーカによる製品回収・交換作業などが必要になり、多大な費用がかかった。
近年はソフトウェア容量が大きくなり、機能ごとに複数のソフトウェアを搭載する組み込み機器も少なくない。特に、携帯電話、デジタルオーディオプレーヤー、HDDレコーダなどのデジタル家電のファームウェア、パソコン周辺機器のファームウェアにも組み込み用途向けOSを搭載する機種が多い。機能は多様化したが、不具合対処のリスクも高まった。このため製品にフラッシュメモリを採用し、出荷後にユーザサイドで書き換え可能とすることで、以前と比べメーカ側の負担は軽微になった。しかしシステム解析の複雑さから不具合の発覚から修正までにかなりの時間を要することがあるようにもなり、市場に大きな影響を及ぼすことには変わりはない。ソフトウェアの書き換えには様々な手段が用いられており、修正ソフトウェアの入ったリムーバブルメディアをユーザ側で取り込ませる方法、放送電波を経由させて配信する方法などがあるが、インターネットに直接アクセスして自動で修正ソフトウェアにアップデートする機能をもった機器が増えてきている。
パーソナルコンピュータ本体のBIOSは、マザーボードの機種ごとに組み込まれた組み込みシステムソフトウェアであり、主にマザーボード上のチップセットに対してのファームウェアである。BIOS設定画面でユーザが設定した項目は、大容量コンデンサやボタン電池などでバックアップされたROMに保存されている。

6.1. OS
-------

組み込みに用いられるOSとしては、日本においてはμITRON仕様OSが採用されることが多い。VxWorks、OS-9、QNXなども広く利用され、また最近では強力なネットワーク機能により本来汎用OSであるNetBSD、OpenBSD、FreeBSDなどのUnix-likeOSにも注目が集まっている。詳しくは、組み込みオペレーティングシステムを参照のこと。
ただし、現在においても、特に低資源の環境ではOSを採用しないことも多い。
ほとんどの組み込みシステムでは、ユーザがプログラムを入れ替えたり更新したりすることは想定されない。そのため汎用コンピュータよりも自由にオペレーティングシステムやシステム構成を選択できる。
近年ではPCベースのハードウェアの低価格化に伴い、PCベースのハードウェアを使用し、OSも組み込み向けにカスタマイズしたWindows CEやLinuxなども採用されている。パソコン用のアプリケーションやデバイスドライバなどを流用出来るだけでなく、Windowsパソコン感覚での開発・使用・メンテナンスも行えるほか、サービス水準合意を締結することで製造物責任法対策も行えるため、Windows Embeddedは航空券のチェックインシステムからコンビニのPOSレジ、更には銀行のATMまで、幅広く採用されている。

6.2. 関連項目
---------

ファームウェア

7. 組み込みシステムの技術者
---------------

組み込みシステムの開発職は確立された職種として認知されている。日本における組み込みソフトウェア技術者数は、2004年に14.9万人、2005年17.5万人、2006年19.3万人、2007年23.5万人と推計された。

8. 組み込みシステムに関する資格
-----------------

国家資格
情報処理技術者試験 - 経済産業省所管の独立行政法人である情報処理推進機構が実施する国家資格。
エンベデッドシステムスペシャリスト試験 - 日本国内で実施される組み込みシステムに関する資格試験としては最難関にあたる。
システムアーキテクト試験 - 午後1および午後2で組み込みシステムに関する問題が自由選択制で出題される。午後2は論述試験である。
ITストラテジスト試験 - 午後1および午後2で組み込みシステムに関する問題が自由選択制で出題される。午後2は論述試験である。
基本情報技術者試験
応用情報技術者試験 - 午後の問7は例年組み込みシステムに関する内容になっている。 公的資格
組込みソフトウェア技術者試験 - 一般社団法人組込みシステム技術協会認定 民間資格
ISTQB認定資格

9. 出典
-----

10. 関連項目
--------

シーケンス制御
OSGi
組込みスキル標準
LonWorks
ハードウェア記述言語
エンベデッドシステムスペシャリスト試験
組み込みLinux
ソフトウェア危機
プロセス制御

11. 外部リンク
---------

[1]