組み込みシステムとは 定義と特徴 用途とリアルタイム性の解説

組み込みシステムとは、ごく少数の非常に特定の問題を解決するためだけに構築されたコンピュータの一種で、簡単に変更することはできません。組み込みという言葉は、システムに組み込まれているという意味で、大きな機器や装置の一部として動作します。通常、外見は一般的なパーソナルコンピュータのようには見えず、キーボードやモニタ、マウスなどの一般的な入出力装置を備えていないことが多いですが、内部的にはプロセッサソフトウェア、各種の入力(センサ)と出力(アクチュエータや表示装置)を持ちます。多くの場合、組み込みシステムのソフトウェアは「ファームウェア」としてフラッシュメモリなどに書き込まれ、製品出荷後も長期間にわたり動作することを前提に設計されます。

特徴

  • 専用性:特定の機能や用途に最適化されている。
  • リアルタイム性:所定の時間内に応答や処理を行う必要がある場合が多い(後述)。
  • リソース制約:メモリ、CPU性能、電力などが限られていることが多い。
  • 高信頼性と継続稼働:停止や誤動作が許されない用途(自動車、医療、航空など)では特に要求が厳しい。
  • 小型化・低消費電力:バッテリ駆動や小型機器向けに設計されることが多い。
  • 長期のライフサイクル:製品ライフが長く、ソフトウェアの保守やセキュリティ対応が重要。

構成要素

  • ハードウェア:マイクロコントローラ(MCU)やマイクロプロセッサ、システムオンチップ(SoC)、周辺回路(ADC、PWM、UART、I2C、SPIなど)、電源回路、センサやアクチュエータ。
  • ソフトウェア:ブートローダ、ファームウェア、デバイスドライバ、ミドルウェア、アプリケーションロジック。必要に応じてRTOS(リアルタイムOS)を採用。
  • 入出力:スイッチ・ボタン、表示(LED、LCD)、通信(CAN、Ethernet、Wi‑Fi、BLE)など。

用途と具体例

組み込みシステムは日常生活から産業用途まで幅広く使われています。例えば、エレベータに埋め込まれたコントローラは、押されたボタンに基づいてモータを制御し、適切な階へ移動させます。デコーダは、衛星テレビのセットトップボックス(STBと呼ばれる)に組み込まれ、ディッシュからの信号を読み取り、テレビが表示できる形式に変換します。ほかにも、ホテルのドアロックのカードリーダや車の各種制御装置(ECU:エンジン制御やエアバッグ制御など)、MP3 プレーヤーやデジタルカメラの内部、交通信号システムや飛行機の制御、工場の組立ラインの監視・制御など、多岐にわたります。

リアルタイム性の解説

多くの組み込みシステムは「リアルタイムでの応答」を要求します。リアルタイム性とは、処理の正しさだけでなく「決められた時間内に結果を出すこと」が重要になる性質を指します。リアルタイムの分類としては主に次の2種類があります:

  • ハードリアルタイム:期限(デッドライン)を守れないと致命的な結果になる場合。例:エアバッグ制御、飛行制御。
  • ソフトリアルタイム:期限を過ぎると品質が低下するが、致命的ではない場合。例:ビデオストリーミング(STBの画像の乱れ)など。

リアルタイム性を満たすために、優先度ベースのスケジューリング、割り込み処理、タイマ、DMAなどが用いられ、しばしばRTOSが採用されます。リアルタイムコンピューティングとはこれらの概念を広く含みます。

開発上の注意点と制約

  • リソースの最適化:限られたメモリや処理能力で効率的に動作させる必要があるため、コードの最適化や設計の簡潔化が求められます。
  • 安全性・信頼性:フォルトトレランス設計、診断機能(セルフテスト)、冗長化が必要な場合があります。
  • 検証とテスト:単体テスト、統合テスト、ハードウェアインザループ(HIL)やシミュレーション、長時間試験などが重要です。
  • ソフトウェア更新:ブートローダやOTA(Over‑The‑Air)更新機能の設計、更新時の安全性確保が必要です。
  • 開発言語と規約:C/C++が多用され、車載や医療機器ではMISRAや関連規格に準拠することが求められる場合があります。

安全性とセキュリティ

組み込みシステムは物理世界と直接つながっているため、サイバーセキュリティや機能安全(Functional Safety)が重要です。分野によってはISO 26262(自動車)、DO‑178C(航空)、IEC 61508(産業)などの規格に準拠する必要があります。対策としては、セキュアブート、サンドボックス、暗号化、アクセス制御、脆弱性管理、署名付きファームウェアなどが用いられます。

まとめ

組み込みシステムは、特定の機能を高い信頼性で実現するために最適化されたコンピュータシステムです。小型家電から自動車、航空機、産業機械まで幅広く利用され、リアルタイム性やリソース制約、長寿命と安全性が設計上の重要な要件となります。設計・開発ではハードウェアとソフトウェアの両面での最適化と厳格な検証、セキュリティ対策が不可欠です。

ADSLモデム/ルータの内部の写真。組み込みシステムの最新の例。ラベル付けされた部品は、マイクロプロセッサ(4)、RAM(6)、およびフラッシュメモリ(7)を含むZoom
ADSLモデム/ルータの内部の写真。組み込みシステムの最新の例。ラベル付けされた部品は、マイクロプロセッサ(4)、RAM(6)、およびフラッシュメモリ(7)を含む

組込みシステムの事例

組込みシステムは、多くの種類の電気機器に使用されています。

  • 通信システムでは、電話携帯電話網、wi-fiルータなどに使用されています。
  • 家電製品には、放送受信機、MP3プレーヤー携帯電話ビデオゲーム機デジタルカメラDVDプレーヤーGPS受信機、ホームセキュリティシステム、プリンターなどがあります。
  • 電子レンジ洗濯機、防犯カメラ、食器洗浄機などの家電製品には、システムが組み込まれています。
  • 交通機関では、電車や飛行機自動車などの機関車からあらゆるものに組み込みシステムが使われています。
  • 産業界では、電子制御装置、カードリーダー、金属部品を自動的に作るCNCマシンなどを搭載した電動機が使用されています。
  • 除細動器、自動血圧計、自動インスリンポンプなどの医療機器。
  • トランシーバー衛星、ミサイルの誘導装置などの軍事機器。

共通機能

  • 組み込みシステムは、汎用コンピュータとは異なり、特定の作業を行うために設計されています。
  • パソコンではないように見えますが、フルモニターやキーボードはないかもしれません。
  • 多くの組み込みシステムは、リアルタイムで、短時間で(人間から見ればほぼ瞬時に)物事を行うことができなければなりません。
  • 多くの組み込みシステムは、特に医療機器や航空機を制御するアビオニクスにとって、非常に安全で信頼性の高いものでなければなりません。
  • 非常に迅速に起動します。人は、車が始まるまで1~2分待ったり、緊急時の装備が始まるのを嫌がります。
  • それは、リアルタイム・オペレーティング・システム、またはRTOSと呼ばれるこれらの要件を満たすのに役立つ特別なオペレーティングシステム(または時には非常に小さな自作のOS)を使用することがあります。
  • 組込みシステム用に書かれたプログラム命令はファームウェアと呼ばれ、読み取り専用メモリやフラッシュメモリチップに格納されています。ファームウェアは、限られたコンピュータのハードウェアリソース(メモリが少ない、キーボードやスクリーンが小さい、または存在しない)で動作します。

組み込みシステムは、必ずしもスタンドアロンのデバイスではありません。ラジオ、スロットル制御、汚染制御など、自動車の様々な部品のように、セットで作られていることもあります。インターネットや携帯電話のネットワークと通信できる場合もありますし、USBリーダーや他の接続がある場合もあります。

ユーザーインターフェース

組み込みシステムは、ユーザーインターフェースが全くないものから、電気信号を送受信するだけのものまで、現代のコンピュータのようなグラフィカルなユーザーインターフェースを備えたものまで、様々です。多くの場合、いくつかのプッシュボタンと小さなディスプレイ、そしていくつかの LED を備えています。より複雑なシステムでは、スマートフォンのように、画面ごとにボタンの意味を変えることができるタッチスクリーンを備えている場合もあります。

ボタンとシンプルなLCDディスプレイを備えたユーザーインターフェースの一例です。Zoom
ボタンとシンプルなLCDディスプレイを備えたユーザーインターフェースの一例です。

ハードウェア

ハードウェアには、チップ、配線、回路基板、ボタン、ディスプレイなどがあります。

CPU

最も重要なチップは中央処理装置またはCPUです。これは、ソフトウェアの命令を実行します。これは、標準的なマイクロプロセッサまたはマイクロコントローラであることができます。マイクロコントローラには、マイクロプロセッサだけでなく、単純な周辺機器も含まれているため、システムの小型化と低コスト化が可能です。それらの部品を変更することができないので、彼らはより少ない柔軟性を持っています。通常、これらの部品には、フラッシュメモリやシリアルポート、USBなどのサポートが含まれます。

汎用コンピュータのマイクロプロセッサとは異なり、大きくて速いことが必ずしも良いとは限りません。多くの組み込みプロセッサは非常に小さくなっています。これは、使用するスペースや電力を少なくするためであることもあれば、より安価にするためであることもあります。汎用コンピュータは、32ビットや64ビットのワードを読み込んでGHzで計測される速度で動作するマイクロプロセッサを使用しますが、組み込みプロセッサは通常4ビットから32ビットで、通常数十MHz(100倍遅い)で計測される速度で動作します。しかし、プログラムも小さくなり、使わないものはチェックしません)。

既製のコンピュータボード

いくつかの組み込みシステムで使用できる「既製の」コンピュータボードがあります。これらは多くの場合、Windows CE、LinuxNetBSD、または組み込みリアルタイムオペレーティングシステムを使用しています。

すでに作られている回路基板を使った方が簡単な場合もあります。これらは通常、汎用コンピュータと多くのコンポーネントを共有していますが、汎用コンピュータの1つよりも小さくなっています。VIA EPIAのようなボードは、Microsoft Windowsを実行することができます。その利点は、電気工学の時間をある程度節約でき、PCタイプのソフトウェア開発に使用されるのと同じソフトウェア開発ツールを使用できることです。このような組み込みデバイスの例としては、カジノのATMやディスプレイがあります。これは、リアルタイムの要件がそれほど厳しくない場合に有効です(例えば、ジョブが5秒ではなく8秒かかる場合でもあまり問題になりません)。

ASICおよびFPGAソリューション

デバイスが非常に小型である必要がある場合や、非常に大量に販売される(「大量販売」)場合には、必要とされる機能を正確に実行するカスタムまたは特殊なチップを作ることが理にかなっています。これは、プロセッサ浮動小数点演算ユニット、メモリキャッシュ、およびインターフェイスなどの完全なシステムを単一の集積回路に搭載したSoC(System on a Chip)です。SoCは、特別注文のアプリケーション専用集積回路(ASIC)として作ることもできるし、組み込みシステムを構築する人がプログラムするFPGA(Field-Programmable Gate Array)を使って作ることもできる。

周辺機器

組み込みシステムは、外部の世界や他のコンポーネントと、周辺機器などを使って話をします。

  • シリアルポート。RS-232、RS-422、RS-485。これは、9ピン(またはそれ以上)のコネクタを使用して、非常に一般的に使用されていました。
  • 同期シリアル通信インタフェース。I²C相互統合回路、I²S相互統合サウンド、SPI、MIcrowire、...
  • ユニバーサルシリアルバス(USB)。
  • ネットワーク。イーサネット、コントローラエリアネットワーク、LonWorks、...
  • ディスクリート入出力。汎用入出力(GPIO)。これは、オン/オフ信号を持つ単線にすることができます。小型のキーパッドに使用したり、LEDを点灯させたりすることができます。
  • アナログ→デジタル/デジタル→アナログ変換器(ADC/DAC)。光センサーやモーター制御のように強度が変化するものを測定します。
  • デバッグ中。ソフトウェアエンジニアのためのJTAG、ICSPポート。
ネットワークアプリケーションをターゲットにした組み込みシステム「Soekris net4801」。Zoom
ネットワークアプリケーションをターゲットにした組み込みシステム「Soekris net4801」。

ソフトウェア

オペレーティングシステム

組み込みシステムは、多くの場合、完全なオペレーティングシステムを必要としません。特別に構築された小さくてシンプルなオペレーティング・システムを使用していて、非常に早く起動するものもあれば、全く必要ないものもあります。組込みシステムは、簡単には適応されませんが、より信頼性の高いタスクを実行できるように構築されています。ハードウェアがシンプルであるため、多くの場合、構築コストが安くなり、動作が速くなります。

これに対して、汎用コンピュータは、新しいプリンタやハードドライブのように、まだ知らないハードウェアを実行するために、新しいデバイスドライバやソフトウェアを準備する必要があります。また、異なるアプリケーションプログラムを実行する必要があります。

組込みシステムが大きくなるにつれて、今までは汎用コンピュータやメインフレームだけだったものが、組込みシステムでは一般的になってきています。これには、保護されたメモリ空間や、LinuxNetBSDなどのオープンなプログラミング環境が含まれています。

簡単なものから複雑なものまで、OSの例をいくつかご紹介します。

  • シンプルな制御ループ - タイマーとループを使って、異なるサブルーチンを繰り返し呼び出すようにしています。小規模なシステムでは一人で作ることが多い。
  • 割り込み制御 - タスクはさまざまな種類のイベントによって開始されます。イベントは、時限的なもの(例えば、10秒ごと)や、ボタンの押下やデータの受信などです。
  • nonpreemptive multitasking - 各タスクは順番に実行され、終了するとOSのスケジューラを呼び出して次のタスクを実行します。
  • プリエンプティブマルチタスクまたはマルチスレッド - タスクを一定時間後に停止して、別のタスクをしばらく実行させることができます。どのタスクもシステムを占有することはできません。このレベルでは、システムは「オペレーティングシステム」カーネルを持っていると考えられ、タスクを並列に実行することができます。このタイプのOSは、通常、組み込みOSのみを扱う会社から購入します。

リアルタイム オペレーティング システムには、MicroC/OS-II、Green Hills INTEGRITY、QNX、VxWorks などの製品があります。MacOS や Windows 7 とは異なり、これらのオペレーティング システムはほとんどの人にはあまり知られていません。しかし、時間と安全性が非常に重視される多くの場所で使用されています。人々は毎日これらのOSを使用していますが、それに気付いていません。

大規模なカーネルの一般的な例としては、Embedded Linux や Windows CE があります。これらのカーネルは、厳密なリアルタイムシステムに必要な厳しい時間制限はありませんが、特にワイヤレスルータやGPSのようなより強力なデバイスでは、より一般的になりつつあります。これにより、デバイスドライバ、ウェブサーバ、ファイアウォール、その他のコードのために、パブリックドメインのコードを再利用することができます。PC向けのアプリケーションを書くことに慣れているソフトウェア開発者にとっては、これがより身近なものになるでしょう。必要に応じて、FPGA やその他の特別なハードウェアを、厳しい時間制限を必要とするものに使用することができます。

ツール

他のソフトウェアと同様に、組み込みシステムの設計者は、コンパイラ、アセンブラ、デバッガを使用して組み込みシステムソフトウェアを開発します。しかし、より特殊なツールを使用することもあります。

  • デジタル信号処理を使用するシステムでは,開発者はMATLAB,MathCad,Mathematicaなどの数学ツールを使用することができます.
  • カスタムコンパイラとリンカは、特定のハードウェアの最適化を改善するために使用されることがあります。
  • 組込みシステムは、独自の特別な言語やデザインツールを持っていたり、Basic Stampで使用されているような既存の言語に拡張機能を追加したりすることができます。

デバッグツール。

  • インサーキット デバッガ (ICD) は、JTAG インタフェースを介してマイクロプロセッサに接続するハードウェア デバイスです。これにより、マイクロプロセッサがソフトウェアを実行する際に、外部からマイクロプロセッサを起動したり停止させたりする。また、メモリやレジスタを読み込んだり、ソフトウェアプログラムをメモリに格納したりすることもできます。
  • ロギングやシリアルポート出力を使用した外部デバッグで、点滅モニタ(printfs)のいずれかを使用して動作をトレースすることができます。
  • インタラクティブな常駐デバッグ - OS がサポートしている場合、開発者が入力したコマンドを実行する組み込みプロセッサ上のシェルです (Linux など)。
  • インサーキット・エミュレータは、ボード上のマイクロプロセッサに取って代わり、マイクロプロセッサができるすべてのことを完全に制御することができます。
  • 完全なエミュレータは、ハードウェアのすべての機能をシミュレートし、そのすべてを制御して変更することができます。ハードウェアは実際には存在しませんが、そのふりをしたバージョン(「仮想」マシン)が通常のPC上にあります。
  • ロジックアナライザやマルチメータで外線をチェックする。

外部デバッグに制限されない限り、プログラマは通常、ツールを使用してソフトウェアをロードして実行し、プロセッサ内で実行されているコードを表示し、その動作を開始または停止することができます。コードの表示は、アセンブリコードまたはソースコードである場合があります。統合システム(VxWorksやGreen Hillsなど)の中には、ソフトウェアの実行時にどれだけのスペースを必要とするか、どのようなタスクが実行されているか、そして何が起こったかを追跡するなどの特別な機能を備えているものもあります。

どのような組込みシステムが作られているかによって、どのようにデバッグできるかが変わってきます。例えば、単一のマイクロプロセッサシステムをデバッグするのと、ペリフェラル(DSP、FPGA、コプロセッサ)でも処理が行われているシステムをデバッグするのとでは違います。

安全性と信頼性

組込みシステムは、何年もエラーなく動作することが期待される機械に搭載されていることが多く、エラーが発生しても自力で回復する場合もあります。これは、通常、ソフトウェアの開発とテストがパソコン用よりも慎重に行われていることを意味し、ディスクドライブやファンなどの信頼性の低い機械的な可動部は避けられています。

安全性と信頼性を重視する場所

  • システムの中には、修理のために安全に停止することができないものや、修理が困難なものがあります。例えば、宇宙システム(人工衛星ローバー)、海底ケーブル、原子力発電所の制御などです。
  • 航空機の制御、化学工場の制御、列車の信号、心臓の除細動器など、失敗すると人を殺す可能性があります。
  • システムが停止してしまったり、ミスをしてしまうと大損をしてしまいます。電話のスイッチ、工場の制御装置、レジスター自動精算機

エラーから回復する方法 - メモリリークなどのソフトウェアバグや、ハードウェアのソフトエラーの両方があります。

  • 何かが動作しなくなった場合に、組み込みシステムを再起動するウォッチドッグタイマ
  • 別のシステムが動作を停止した場合に、1つのシステムが引き継ぐことができる部品を複製します。
  • 部分的な機能を提供するソフトウェア「リンプモード」。
  • イミュニティ・アウェア・プログラミング

関連ページ

質問と回答

Q: 組み込みシステムとは何ですか?


A: 組み込みシステムとは、特定の問題を解決するために作られた、変更が容易でないコンピュータのことです。

Q: 組み込みシステムは汎用コンピュータとどう違うのですか?


A:組み込みシステムは、通常、キーボード、モニター、マウスを持たず、特殊な機能を持つものです。汎用のコンピュータは、様々なタスクを実行することができます。

Q: 組込みシステムの例にはどのようなものがありますか?


A:エレベーターのコントローラー、セットトップボックス、ホテルのドアロックのカードリーダー、交通信号システム、飛行機、工場の組み立てラインなどが、組み込みシステムの例です。

Q: リアルタイム・コンピューティングとは何ですか?


A: リアルタイム・コンピューティングとは、組込みシステムが特定の時間内に作業を完了させる必要がある場合のことです。もしそれが中断されると、テレビの画質が悪くなるなどの問題が発生する可能性があります。

Q: 組込みシステムの構成要素は何ですか?


A: 他のコンピュータと同様に、組み込みシステムには、プロセッサ、ソフトウェア、入力、出力があります。

Q: 組込みシステムが制御する可能性のあるタスクにはどのようなものがありますか?


A: 組み込みシステムは、MP3プレーヤーやデジタルカメラのような小型デバイスや、交通信号や飛行機のような大型システムを制御することができます。

Q: 組込みシステムに関する「embedded」という用語の意味は何ですか?


A: "embedded "という用語は、コンピュータがより大きなシステムの中に組み込まれ、簡単に変更できないことを意味します。

AlegsaOnline.com - 2020 / 2025 - License CC3