組み込みシステムとは?
組み込みシステムとは?

組み込みシステムとは?

ボードサポートパッケージから最新のアプリケーション開発まで、
組み込みシステムとその設計や開発についてご紹介します。

組み込みシステムとは?

組み込みシステムとは、特定の機能を担うコンピュータシステムであり、さまざまな市場分野で稼働するデバイス、機械、システムに採用されています。これらのシステムには幅広い要件があり、その複雑さもさまざまです。組み込みシステムは、ほぼすべての市場で利用されています。

航空宇宙
自動車
民生用機器
防衛システム
エネルギー
産業用制御システム
製造
医療
モバイル
ロボット工学
通信
輸送

組み込みシステムは、ハードウェアと緊密に統合された専用システムとして構築される場合があります。また、複数の機能を実行するようにプログラム可能な汎用組み込みシステムもあります。航空機、自動運転車、産業用制御システムなどの複雑な組み込みシステムは、その多くの機能を実行するためにより多くのハードウェアおよびソフトウェアリソースを必要とし、こうしたシステムでは、数百万行ものコードを実行するために高性能プロセッサが必要となる場合が多くあります。

多くの種類の組み込みシステムには、機能安全要件が課されています。これらは、失敗が許されないミッションクリティカルかつ安全クリティカルなアプリケーションを実行します。これらのデバイスには、リアルタイムかつ決定論的な結果でタスクを実行するオペレーティングシステムが必要であり、安全要件を満たすために、より高いレベルのセキュリティが求められる場合もあります。

多くの組み込みシステムは特定の用途に合わせて設計されていますが、その要件を特定・定義する上で役立つ共通の特徴がいくつかあります:

  • リアルタイム性
  • 決定性
  • 小さなフットプリント
  • 安全性
  • セキュリティ
  • 高信頼性
  • 信頼性
  • 電力およびサイズ上の制約
  • 堅牢性と過酷な動作環境

組み込みシステムを構築する上での最大の課題の一つは、「万能なソリューションは存在しない」という点です。各デバイス、機械、システムは、ハードウェアプロセッサ、ハードウェアボード、オペレーティングシステム、ソフトウェアコンポーネントを、それぞれ異なる組み合わせで利用します。また、システムが導入される環境によっても、どのようなシステムを構築すべきかが決まります。各デバイスには、その役割を果たすために必要な固有の機能要件があります。

組み込みシステムのアーキテクチャ

組み込みオペレーティングシステムには、5つの主要な構成要素があります:

  1. ハードウェアプロセッサ
  2. ハードウェア抽象化層(HAL)
  3. オペレーティングシステム(OS)
  4. サービス層
  5. アプリケーション層

1. 組み込みシステム向けのハードウェアアーキテクチャとプロセッサ

組み込みシステムでは、8ビット、16ビット、32ビット、および64ビットプロセッサをベースとしたCPUを利用できます。また、シングルコアおよびマルチコアプロセッサの両方を使用することも可能です。 より複雑な機能を備えた組み込みシステムでは、通常、32ビットおよび64ビットのシングルコアおよびマルチコアプロセッサが採用されます。ハードウェアプロセッサメーカーは、Arm®、Intel®アーキテクチャ、Power、RISC-V、Scaleなど、さまざまなハードウェアアーキテクチャに基づいてチップを設計しています。

シングルコアとマルチコアプロセッサの比較
シングルコアプロセッサ マルチコアプロセッサ

シングルコアプロセッサは、チップ上に1つのコアを搭載しています。一度に実行・演算できるのは1つの機能のみです。現在導入されている組み込みシステムの多くは、シングルコアプロセッサを使用しています。

マルチコアプロセッサには、2つ以上の独立した処理コアまたはCPUが搭載されています。各コアは、1つの専用機能を実行・処理できます。最速のマルチコアプロセッサでは、最大64コア、128スレッドを実現しています。

2. ハードウェア抽象化層(HAL)

HALは、オペレーティングシステムがハードウェアとやり取りできるようにするものです。HALは、オペレーティングシステムと物理的なハードウェアが連携するために必要な一連のルーチン、プロトコル、およびツールを定義します。HALの代表的な構成要素には、ボードサポートパッケージ(BSP)、ブートローダー、デバイスドライバー、および設定ファイルなどがあります。HALにより、基盤となるハードウェアプロセッサのアーキテクチャに関係なく、オペレーティングシステムやアプリケーションを実行することが可能になります。

ボードサポートパッケージ(BSP)

デバイスドライバや機能ルーチンから構成されるハードウェア固有のコードを含むBSPは、組み込みシステム開発において極めて重要です。

すべての組み込みハードウェアボードには、オペレーティングシステムを実行するためにBSPが必要です。多くの組み込みプロジェクトでは、複数の供給元からのハードウェアシステムが使用されています。ハードウェアボードごとに、またそのボード上で動作するオペレーティングシステムの種別ごとに、異なるBSPが必要となります。一部のハードウェアベンダーは、Linuxなどの一般的に使用されるオペレーティングシステム向けに標準的なBSPを提供しています。商用オペレーティングシステムベンダーも、一部の一般的なハードウェアシステム向けに標準的なBSPを提供しています。多くの企業は、ハードウェアとオペレーティングシステムの機能を最大限に活用するために、BSPをカスタマイズしています。

» VxWorks® および Wind River® Linux 用の利用可能な BSP カタログをご覧ください

3. 組み込みオペレーティングシステム

組み込みシステムの主要なソフトウェアコンポーネントは、オペレーティングシステム(OS)です。OSは、プロジェクトで選択された基盤となるハードウェアと統合され、システムのハードウェアおよびソフトウェアリソースを管理します。また、アプリケーションが基盤となるハードウェア上で容易に実行できるようにするための共通サービスも提供します。 OSは、機能の管理、タスクのスケジューリング、パフォーマンスの最大化、割り込みや外部I/Oへの対応、システムリソース(ファイルなど)の共有と保護、さまざまなネットワークへの接続を可能にします。また、オペレーティングシステムは、デバイスやそれが生成するデータを悪意のある攻撃から保護するためのセキュリティ層を提供することもできます。

組み込みシステムでは、さまざまな種類のオペレーティングシステムが使用されます:

リアルタイムオペレーティングシステム(RTOS)

組み込みシステムでは、従来からあらゆる種類のデバイスにリアルタイムOSが採用されてきました。RTOSは、高いパフォーマンス、小さなフットプリント、低遅延(リアルタイム)の応答性、および決定論的な動作を提供します。ミッションクリティカル、セーフティクリティカル、および機能安全要件を持つデバイスや機械は、アプリケーションを時間通りに、期待どおりに、かつ確実に実行するためにRTOSに依存しています。VxWorksは、市場をリードする商用RTOSの一例です。

また、FreeRTOSやZephyrなど、オープンソースコミュニティのプロジェクトによってサポートされているRTOSも存在します。FreeRTOSはマイクロコントローラおよびマイクロプロセッサ向けのRTOSであり、Zephyrは、小型でネットワーク接続され、リソースに制約のある組み込みデバイス向けに設計された別のRTOSプロジェクトです。

組み込みLinux

今日、Linuxは組み込み分野で広く使用されているOSです。Linuxは、開発者コミュニティによってサポートされている、自由に利用できるオープンソースのオペレーティングシステムです。組み込みLinuxは、通常、ハードリアルタイム動作や決定性を必要としないデバイス、機械、システムに使用されます。ただし、一部の企業では、プリエンプティブRTカーネル構成を採用し、準リアルタイムのパフォーマンスを実現しています。

特定の業界や市場のニーズに対応するために組織された、コミュニティが支援するLinuxプロジェクトが数多く存在します。OpenEmbeddedは、Linux上での組み込みシステム開発における事実上の標準プロジェクトであり、Yocto Projectで最も一般的に使用されるLinuxパッケージやリソースを定義・整理しています。 Yocto Projectは、開発者が組み込みシステム向けのカスタムLinuxディストリビューションを構築するためのツールセットを提供しています。多くの組み込みハードウェアサプライヤーは、統合ソフトウェアバンドルの一部としてYocto Projectのサポートを含めています。この専用ハードウェアとバンドルされたLinuxソフトウェアは、組み込みシステムプロジェクトの出発点となります。通常、さらなる修正や最適化、そして長期的なサポートやメンテナンスが必要となります。

» 組み込みLinuxの詳細

Wind RiverはYocto Projectの創設メンバーであり、顧客向けに商用レベルで検証・確認され、サポート体制が整ったビルドシステムを提供しています。Wind Riverは、さまざまなハードウェアボードやプロセッサ向けに、多数のYocto Project Linux BSPを提供しています。

組み込みシステムのセキュリティとサイバーセキュリティ

ノートパソコンや携帯電話と同様に、組み込みシステムにもデバイスセキュリティとサイバーセキュリティの両方の機能が必要です。セキュリティを念頭に置いて組み込みシステムを設計することは、ライフサイクル全体にわたるプロセスです。このプロセスは、最初のコードが記述される前から始まり、デバイスが運用から外され、動作不能になるまで続きます。

組み込みセキュリティは、以下の5つのポイントからなるプロセスです:

  1. 開発環境の保護:デバイスの構築に使用されるプラットフォームとツールは安全でなければなりません。つまり、安全なソフトウェア開発環境とインフラストラクチャが整っている必要があります。
  2. デバイスのセキュリティ確保:ハードウェアやオペレーティングシステムに組み込まれたセキュリティ機能を活用し、有効化する。カーネルの強化やセキュアブートなどの追加のセキュリティ機能が必要となる場合もある。
  3. アプリケーションのセキュリティ確保:組み込みデバイス上で実行されるアプリケーションには脆弱性が存在し、標的型攻撃の標的となる可能性があります。
  4. データの保護:今日導入されているインテリジェントな組み込みシステムは、膨大な量のデータを生成します。このデータは、保存中か転送中かを問わず、保護されなければなりません。
  5. 継続的なセキュリティ監視の実施:導入されたすべての組み込みデバイスは、潜在的な攻撃対象となります。デバイス同士やネットワークへの接続が増えるにつれ、この脅威は指数関数的に増大します。デバイスを最新の状態に保ち、最新のセキュリティパッチを適用し続けるためには、一般的な脆弱性および露出(CVE)の継続的な監視、およびそれらを修正するためのソフトウェア更新が必要です。

セキュアな組み込みシステムの設計は、最初のコードが記述される前から始まる、ライフサイクル全体にわたるプロセスです。

業界および政府による認証

多くの組み込みシステムは、導入前に安全性の観点から厳格なガイドラインや認証要件を満たす必要があります。認証要件は、業界や政府機関によって定義される場合があります。また、地域によっても大きく異なることがあります。

多くの業界固有の認証は、デバイスメーカーがより高い水準の基準を達成するのに役立ちます。例えば、産業用アプリケーション向けの組み込みシステムを構築する企業は、TÜV SÜD(テュフ・ズード)の専門知識を活用して、製品の試験、検査、認証を行っています。TÜVの認証プロセスに従うことで、デバイスが国際規格に基づく安全規制や品質基準に準拠していることを確実にすることができます。企業は、製品が導入される安全環境での使用に適していることを確認するために、定期的に製品の検証を行っています。

医療機器を規制・監視する政府機関の一例として、米国食品医薬品局(FDA)が挙げられます。FDAは、医療機器が動作および安全に関する適用基準に準拠していることを確保するために、規制および監視を行っています。

VxWorksは、以下の要件を満たすシステムで使用可能なRTOSです:
  • SIL 3の認証が可能な産業用機能安全規格IEC 61508
  • 航空機システム向けのDO-178C(DAL A認証対応)
  • ASIL-D認証が可能な自動車用安全システム向けのISO 26262
  • クラスCのリスクレベルを要する医療用安全規格IEC 62304
詳細はこちら
ソースコード、バイナリ、およびコンテナ化

OSのソースコードへのアクセスは、組み込みシステムソフトウェアを構築する上で重要な要素です。開発者は、オペレーティングシステムの機能を完全に理解するためにソースコードを必要とします。ソースコードがあれば、開発者はプロジェクトの要件に基づいてオペレーティングシステムの設定、ビルド、およびコンパイルを行うことができます。

すべての組み込み設計においてソースコードへのアクセスが必要というわけではありません。多くの開発者は、あらかじめビルド済みのオペレーティングシステムのバイナリを使用しています。バイナリはすでにコンパイル済みであり、変更することはできません。

組み込みソフトウェア開発における新たなトレンドとして、コンテナ化が挙げられます。コンテナは、OSライブラリやランタイム依存関係を軽量な実行ファイルにパッケージ化します。コンテナベースのソフトウェアは、ほとんどのオペレーティングシステム上で一貫して実行可能です。VxWorksとWind River Linuxは、いずれもオープンコンテナイニシアチブ(OCI)をサポートしています。

ソフトウェアのコンプライアンス

組み込みシステムソフトウェアは、商用展開される前に、標準への準拠や企業のライセンスコンプライアンス方針の遵守が求められる場合があります。多くの場合、組み込みシステムは業界標準に基づいていると説明されます。これは、そのソフトウェアが明確に定義された公開標準の規則に準拠していることを意味します。 また、ソフトウェアは企業のソフトウェアライセンスポリシーに準拠していることが求められる場合もあります。ライセンスコンプライアンスとは、組み込みデバイスに使用されるソフトウェアに正確なドキュメントとライセンス契約の証明が含まれており、それらのライセンス契約に、ソフトウェアを使用する企業のポリシーや慣行に違反する条件が含まれていないことを意味します。多くの組み込み開発者は、設計にオープンソースや無料で入手可能なソフトウェアを利用しています。そのソフトウェアは、大規模で複雑なオペレーティングシステムから小さなスクリプトまで多岐にわたります。ライセンスコンプライアンスにより、著作権で保護されたコンポーネントが文書化され、適切に扱われていることが保証されます。

最近では、組み込みシステム向けの商用ソフトウェアプロバイダーが、ソフトウェア部品表(SBOM)の提供を開始しています。SBOMには、プロプライエタリなものからオープンソースのものまで、すべてのソフトウェアコンポーネントが記載されています。すべてのコンポーネントと具体的なバージョンの一覧を提供することで、欠陥が見つかった際にソフトウェア開発者は問題箇所を容易に特定できるようになります。SBOMは、ソフトウェアにおけるサプライチェーン管理の機能を果たします。

長期サポートと継続的なメンテナンス

組み込みシステムは、長期間にわたって使用されることを前提に設計されています。組み込みデバイスが現場で5~20年もの導入ライフサイクルを持つことは珍しくありません。ライフサイクル全体を通じて、システムへの継続的な改善を確実にするために、ソフトウェアには長期サポートとメンテナンスが必要となる場合があります。ソフトウェアの更新により、新機能の追加、ファームウェアの更新、重大なバグの修正、およびセキュリティ更新が行われます。 現在では、人間が各デバイスを物理的に更新する代わりに、ソフトウェアの更新の多くを無線(OTA)で行うことが可能になっています。

4. 組み込みソフトウェアサービス層

ソフトウェアサービス層は、ミドルウェアとも呼ばれます。この層は、アプリケーション層へのインターフェースとして機能する、さまざまな付加価値サービスをサポートします。サービス層の一般的なコンポーネントには、ファイルシステム、グラフィカルユーザーインターフェース(GUI)、アプリケーションプログラミングインターフェース(API)、タスクマネージャーなどがあります。

5. アプリケーション層

組み込みシステムは、特殊な用途向けにソフトウェアがハードウェアに搭載されて以来、存在してきました。時を経て、組み込みシステムは、高い信頼性、リアルタイム性能、および決定性を必要とするデバイス、機械、システムを駆動する存在へと進化してきました。これらのシステムの多くは、ソフトウェアのフットプリントの制約、高性能、過酷かつ極限の環境下での動作能力など、厳格な運用要件に基づいて構築されています。組み込みシステムには以下が含まれます:

  • 航空機
  • MRI装置
  • 通信システム
  • 信号システム
  • 宇宙機
  • 製造・制御システム
  • 自動車用ブレーキシステム
  • レーダーおよびソナー装置
  • モデム
  • セットトップボックス
  • 携帯電話
  • ロボット工学
  • 衛星システム
  • 医療機器
  • 鉄道
  • ネットワーク機器
  • 通信
  • カメラ
現代のアプリケーション開発

開発者は、オペレーティングシステムがサポートするさまざまなプログラミング言語に依存しています。組み込み開発者は従来、CおよびC++プログラミング言語を使用してきました。Linuxオペレーティングシステムや一部の商用RTOSソリューションは、C、C++17、Ada、Rust、Pythonなど、幅広いプログラミング言語をサポートしています。また、組み込みシステムでは、さまざまなコンパイラ、ライブラリ、オープンソースツールへの対応も拡大しています。 現代的な開発アプローチを採用することで、効率性と移植性が向上します。また、人工知能(AI)や機械学習(ML)に対する新たな要件に対応するためのフレームワークも提供されます(サイドバーに示されているように、VxWorksはこれらすべてをサポートしています)。

DevOpsとクラウドネイティブ開発

ここ数年、組み込み開発者はよりアジャイルなソフトウェア開発手法へと移行しています。多くの組み込みプロジェクトが、DevOpsインフラストラクチャを活用して構築されています。

モノのインターネット(IoT)

組み込みシステム技術の進化に伴い、接続性、処理能力の向上、そして価格の低下により、モノのインターネット(IoT)向けの新たなカテゴリーのデバイスが登場しました。小型で低コスト、かつネットワークに接続された組み込みシステムは、スマートホーム、スマートシティ、ウェアラブルデバイスにおいて広く普及しました。IoTデバイスは、既存のインフラを活用し、導入された環境においてさまざまな種類のデータを収集しました。

インテリジェント・エッジ

次世代の組み込みデバイスは、クラウドネイティブ技術を用いて構築されており、企業は最新のネットワークのエッジにおいて新たなユースケースを模索できるようになっています。組み込みシステムは急速に変化を遂げ、インテリジェント・エッジを構成する新たなクラスのデバイスを生み出しています。 今日、組み込みシステムとそこで実行されるアプリケーションは、クラウドの処理能力やAI・ML技術を活用し、デバイスが展開されるエッジにおいて、より深い洞察と意思決定を可能にしています。インテリジェント・エッジから収集された運用データや環境データは、機能の向上、安全性の確保、そしてリアルタイムのビジネス上の意思決定に活用されています。

Wind Riverのアプローチ

Wind River Studioは、ソフトウェア開発者がVxWorksおよびWind River Linuxランタイム向けのビルドプロセスやワークフローを自動化できる、クラウドネイティブなDevSecOpsプラットフォームです。その主な機能は以下の通りです:

実績のある商用サポートされているオペレーティングシステム

Wind Riverは、RTOSに加え、検証および妥当性確認済みのYocto ProjectベースのLinuxビルドシステムの両方を提供しています。

VxWorks

VxWorksは、安全性とセキュリティが必須とされる重要な組み込みシステム向けに、業界で最も信頼され、広く導入されているRTOSです。実績のあるリアルタイムかつ決定論的なランタイムと、最新の開発アプローチを組み合わせて提供します。業界やデバイスの種類を問わず、多くの企業がVxWorksが誇るセキュリティ、安全性、高性能、信頼性の実績を頼りにしています。

» 詳細はこちら
Wind River Linux

Wind River Linuxは、検証および妥当性確認済みのYocto ProjectベースのLinuxビルドシステムです。Wind River Linuxは、組み込み開発者がLinuxプラットフォームをカスタマイズおよび構築できるようにする、商用サポート付きのOSソリューションです。

» 詳細はこちら

プロフェッショナル・サービス

Wind Riverプロフェッショナル・サービスは、開発および導入ライフサイクルの重要な局面において、組み込み開発者が必要とする支援を提供します。Wind Riverの組み込み専門家チームは、ソフトウェアアーキテクチャおよび設計、Linuxプラットフォームのカスタマイズと管理、安全認証、セキュリティ強化、ライフサイクル管理、およびリソーストレーニングに関する支援を提供します。

» 詳細はこちら

仮想化

Wind River Helix™ Virtualization Platform は、マルチOSおよび重要度が異なるアプリケーションを単一のエッジコンピューティングソフトウェアプラットフォームに統合し、航空宇宙、防衛、産業、医療、自動車市場における重要インフラソリューションの簡素化、セキュリティ強化、将来への対応を実現します。

» 詳細はこちら

セキュリティソリューション

Wind Riverは、VxWorksおよびWind River Linuxの両方に、数多くの組み込みセキュリティコンポーネントを提供しています。また、Wind Riverは、すべての製品について、セキュリティ脅威やCVEをプロアクティブに監視し、顧客にアラートを発信しています。より高度なセキュリティ機能が必要な顧客は、Wind Riverプロフェッショナルサービスを活用して、OSおよびアプリケーションにおける設計評価や機能実装を行うことができます。

» 詳細はこちら

ツール:シミュレータ、コンパイラ、Eclipseベースのツールキット

Wind Riverは、製品ライフサイクルの各段階に対応した数多くのソフトウェア開発ツールを提供しています:

Wind Riverの開発ツールは、ライフサイクルのさまざまな段階に対応しています。

Wind River Workbench

Wind River Workbenchは、Eclipseベースの統合開発環境(IDE)です。

Wind River Diab コンパイラ

Wind River Diab コンパイラは、OS およびアプリケーションのパフォーマンスを向上させ、小さなフットプリントと品質要件を満たすのに役立ちます。

Wind River Simics

Wind River Simics® は、ソフトウェア開発者が複雑な電子システムのハードウェアをシミュレートするために使用するフルシステムシミュレータです。Simics を使用することで、あらゆるターゲットシステムへのオンデマンドかつ容易なアクセス、開発者間のより効率的なコラボレーション、そしてより効率的で安定した自動化が可能になります。また、DevOps および継続的インテグレーション・デプロイメント(CI/CD)への道筋を提供します。

» 詳細はこちら

組み込みシステムに関するFAQ

組み込みシステムとは、より大規模なシステムや製品の中で特定の機能を実行するように設計されたコンピュータシステムのことです。通常、その機能を発揮する製品やデバイスに組み込まれています。
組み込みシステムの例としては、デジタルカメラ、プリンター、医療機器、自動車システム、そして洗濯機や冷蔵庫などの家電製品などが挙げられます。
組み込みシステムは通常、小型で低コスト、かつ消費電力が少ないのが特徴です。また、リアルタイムで動作し、特定の機能セットを実行するように設計されています。
組み込みシステムで一般的に使用されるプログラミング言語には、C、C++、アセンブリ言語などがあります。これらの言語は効率的であり、ハードウェアに直接アクセスできるため、好んで使用されます。
組み込みシステムにおけるオペレーティングシステムは、ハードウェアリソースの管理、タスクのスケジューリング、および組み込みシステムとユーザー間の通信インターフェースの提供を担っています。
組み込みシステムの設計における課題としては、ハードウェアの制約、メモリや処理能力の制限、リアルタイム性能の必要性、そして高い信頼性と安全性の確保が挙げられます。