組み込みシステム
組み込みシステム(くみこみシステム)あるいはエンベデッドシステム (Embedded system) とは、特定の機能を実現するために家電製品や機械等に組み込まれるコンピュータシステムのこと。
目次
概説
定義はいくつかあるが、おおむね、特定の機能を実現するために家電製品や機械、装置に組み込まれるコンピュータシステムのことを指す(→#定義)。PC等の汎用的なシステムと対比されることが多い(→#汎用システムとの比較)。
組み込みシステムは、家庭用機器、産業用機器、医療用機器等、電子制御を必要とするほとんどの製品に用いられている。2010年の時点で、身の回りにある機械(機器)の多くは、組み込みシステムが内蔵されていると言ってもよい。(→#具体例)
組み込みシステムの中でも携帯電話やデジタル家電、自動車など、必要とする機能が多岐にわたるシステムは、複数のハードウェア、複数のソフトウェアを組み合わせたものとなり、数百人単位の開発人数と数年規模の開発期間を必要とする。このため特に、大規模組み込みシステムと呼ばれることがある。
組み込みシステムが登場する以前の電気・機械製品の制御は、主に電子回路や機械的なハードウェアによる直接的な機能によって実現していた。組み込みシステムの登場により、ソフトウェアの機能によって新しい複雑な機能も実現できるようになった。
また、マイクロプロセッサ等の製造技術の進歩や生産効率の向上などともに、組み込みシステムのハード部分にかかるコストが低減し、導入へのしきいが低くなったこと、さらに、機能の追加や変更に際しては、ソフトウェアを書き換えるだけで回路の変更は最小限に押さえられ、全体的なコストが低減出来ることなどから、広範囲の製品に搭載されるようになった(→#歴史)。
ハードウェアの構成は汎用のもの、独自のもの、両方を組み合わせたものがある(→#ハードウェア)。
ソフトウェアも同様に、汎用のもの、独自のもの、両方を組み合わせたものがある。開発言語としてはC言語が用いられることが多いが、メモリ容量や実行速度等の制約が厳しい用途ではアセンブリ言語が用いられる。メモリ容量等の資源が十分に確保できるシステムではOSも搭載されているものも多い(→#ソフトウェア)。
定義
コンピュータ用語辞典などでは、組み込みシステムは「特定の機能を実現するために機械や機器に組み込まれるコンピュータシステム」などといった説明がされている[1]。
「特定の機能を実現するための必要十分条件を満たす、選択や交換の不可能なハードウェアとプログラムで構成されるコンピュータシステム」[2]と定義されることもある。
具体例
家庭用、産業用問わず電子制御を必要とする製品において一般的に用いられている。以下に一例を挙げる。
他多数
汎用システムとの比較
- 組み込みシステムは、最終製品が多岐に亘るため、汎用的なコンピュータに比べて非常に数と種類が多い。
- ソフトウェアだけでなくハードウェアも専用のものを開発することが多い。また、そのハードウェアに対応したデバイスドライバを作る必要もある。
- 機械の制御を行う場合には特に、汎用システムとは異なり、リアルタイム制御が重要になる。
- 大量生産される製品の場合にはコストが非常に重要となるので、必要最低限のメモリと、安価なCPUで動作可能にする必要がある。小規模なシステムでは1チップマイコンを利用することが多い。
- 専用のハードウェアに専用のソフトウェアが搭載されて製品となるものが多いので、そのテスト工程は、ハードウェア、ソフトウェアの両方にまたがる検証が重要になる。
歴史
組み込みシステムが発達する以前は、電子制御を行う仕組みをアナログ回路やデジタル回路といったハードウェアによる回路(電子回路)により構成していたが、各種機器に新たな機能を追加する場合、いちいち回路を変更する必要があり、コストがかかるという問題があった。
1980年代以降のマイクロプロセッサの発達により、コンピュータを用いた制御方式を導入することで、電子機器の回路は変更せず、ソフトウェアの部分のみを変更することで機能の追加が可能になり、機能追加に必要なコストが削減された。
このため、ほとんどの電化製品に組み込みシステムを搭載するようになり、それにより、製品の付加価値となる新機能が比較的容易に追加できるようになり、高機能化・多機能化が進んだ。
ハードウェア
組み込みシステムを搭載した機器のハードウェアの構成パターンとしては以下のようなものがある[3]。
- 独自のハードウェアのみで機器を構成する。
- 汎用のマイコンボードと独自のハードウェアを組み合わせて機器を構成する。
- 汎用のハードウェアのみで構成する。
製品の目的や、製品が販売されるマーケットの性質に応じて、上記からパターンが選択される[4]。
より具体的には以下のような要素を考慮してハードウェアの構成が検討される。
- 形状、サイズ
- 量産品か否か
形状が特殊であったり、サイズが特別に小さい製品などでは、汎用のハードウェアを内蔵することができないことがあり、その場合は専用のハードを新たに開発しなければならなくなる。 「量産品か、少量生産品か」というのは、独自ハードウェアは、開発コスト(回路設計費、基板設計費等)がかかる、という事実があり、量産品の場合は全体の大きなコストの中にそれを含めてしまえば良いのだが、少量生産品の場合はそうできないというハードルがある、ということである。
厳密で適切な選択となると、原価計算も踏まえて行う必要がでてくる[5]。
組み込み向け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(特にUV-EPROMが使われることが多かった)に書き込まれた状態で出荷されたため、出荷後に製品不具合が発見されると、修正や修理のためにメーカによる製品回収・交換作業などが必要になり、多大な費用がかかった。
- 近年はソフトウェア容量が大きくなり、機能ごとに複数のソフトウェアを搭載する組み込み機器も少なくない。特に、携帯電話、デジタルオーディオプレーヤー、HDDレコーダなどのデジタル家電のファームウェア、パソコン周辺機器のファームウェアにも組み込み用途向けOSを搭載する機種が多い。機能は多様化したが、不具合対処のリスクも高まった。このため製品にフラッシュメモリを採用し、出荷後にユーザサイドで書き換え可能とすることで、以前と比べメーカ側の負担は軽微になった。しかしシステム解析の複雑さから不具合の発覚から修正までにかなりの時間を要することがあるようにもなり、市場に大きな影響を及ぼすことには変わりはない。ソフトウェアの書き換えには様々な手段が用いられており、修正ソフトウェアの入ったリムーバブルメディアをユーザ側で取り込ませる方法、放送電波を経由させて配信する方法などがあるが、インターネットに直接アクセスして自動で修正ソフトウェアにアップデートする機能をもった機器が増えてきている。
- パーソナルコンピュータ本体のBIOSは、マザーボードの機種ごとに組み込まれた組み込みシステムソフトウェアであり、主にマザーボード上のチップセットに対してのファームウェアである。BIOS設定画面でユーザが設定した項目は、大容量コンデンサやボタン電池などでバックアップ(これらはCMOSバックアップ電池と呼ばれる)されたROMに保存されている。
OS
- 組み込みに用いられるOSとしては、日本においてはμITRON仕様OSが採用されることが多い。VxWorks、OS-9、QNXなども広く利用され、また最近では強力なネットワーク機能により本来汎用OSであるNetBSD、OpenBSD、FreeBSDなどのUnix-likeOSにも注目が集まっている。詳しくは、組み込みオペレーティングシステムを参照のこと。
- ただし、現在においても、特に低資源の環境ではOSを採用しないことも多い。
- ほとんどの組み込みシステムでは、ユーザがプログラムを入れ替えたり更新したりすることは想定されない。そのため汎用コンピュータよりも自由にオペレーティングシステムやシステム構成を選択できる。
- 近年ではPCベースのハードウェアの低価格化に伴い、PCベースのハードウェアを使用し、OSも組み込み向けにカスタマイズしたWindows CEやLinuxなども採用されている。現在では、Windows Embeddedは航空券のチェックインシステムからコンビニのPOSレジまで幅広く採用されている。(組み込み版ではなかったWindowsNT 4.0の頃から組み込みシステムに採用されていた)
関連項目
組み込みシステムの技術者
組み込みシステムの開発職は確立された職種として認知されている。日本における組み込みソフトウェア技術者数は、2004年に14.9万人、2005年17.5万人、2006年19.3万人、2007年23.5万人と推計された(経済産業省による推計[7])。
出典
関連項目
外部リンク
- 組込みシステム技術 (技術者Web学習システム)