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

特徴

  • 専用性:特定の機能や用途に最適化されている。
  • リアルタイム性:所定の時間内に応答や処理を行う必要がある場合が多い(後述)。
  • リソース制約:メモリ、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(産業)などの規格に準拠する必要があります。対策としては、セキュアブート、サンドボックス、暗号化、アクセス制御、脆弱性管理、署名付きファームウェアなどが用いられます。

まとめ

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