組込みシステムとは?
組込みシステムは、複数の市場セグメントで動作するデバイス、機械、システムに使用される専用機能を持つコンピューターシステムです。これらのシステムは、幅広い要件とさまざまなレベルの複雑性を持っています。組込みシステムは、ほぼすべての市場で使用されています。
組込みシステムは、ハードウェアと緊密に統合された専用設計のものもあります。また、複数の機能を実行するようにプログラムできる汎用の組込みシステムもあります。航空機、自律走行車、産業用制御システムなどの複雑な組込みシステムは、その多くの機能を実行するために、より多くのハードウェアとソフトウェアのリソースを必要とします。また、これらのシステムはしばしば、数百万のコード行を実行するために高性能プロセッサを必要とします。
多くの種類の組込みシステムには、機能安全が要求されます。これらのシステムでは、故障が許されないミッションクリティカルなアプリケーションやセーフティクリティカルなアプリケーションが実行されています。これらの機器では、リアルタイムかつ決定論的な結果でタスクを実行するオペレーティングシステムが必要とされ、安全要件を満たすためにより高いレベルのセキュリティが必要とされる場合があります。
多くの組込みシステムは目的に応じて構築されていますが、その要件を特定し定義するのに役立つ、いくつかの共通した特徴があります。
- リアルタイム性
- 決定性
- 小フットプリント
- 安全性
- セキュリティ
- 高性能
- 信頼性
- 消費電力とサイズの制約
- 過酷な環境での動作
組込みシステム構築の最大の課題の一つは、1つのサイズですべてに対応できないことです。デバイス、マシン、システムごとに、ハードウェアプロセッサー、ハードウェアボード、オペレーティングシステム、ソフトウェアコンポーネントの組み合わせは異なります。また、システムがデプロイされる環境によっても、何を構築する必要があるかが決まります。各デバイスは、目標を成し遂げるための独自の機能要件を持っています。
組込みシステムのアーキテクチャ
組込み用オペレーティングシステムには、5つの主要なコンポーネントがあります。
- ハードウェアプロセッサ
- ハードウェア抽象化層(HAL)
- オペレーティングシステム(OS)
- サービス層
- アプリケーション層
1. 組込みシステムのハードウェアアーキテクチャとプロセッサ
組込みシステムは、8ビット、16ビット、32ビット、64ビットのCPUを利用することができます。また、シングルコアとマルチコアの両方のプロセッサーを使用することができます。より複雑な機能を持つ組込みシステムには、通常、32ビットおよび64ビットのシングルコアおよびマルチコアプロセッサーが使用されます。ハードウェアプロセッサのメーカーは、Arm®、Intel® アーキテクチャ、Power、RISC-V、Scaleなど、さまざまなハードウェアアーキテクチャをベースにチップを設計しています。
シングルコアプロセッサとマルチコアプロセッサの比較
シングルコアプロセッサ | マルチコアプロセッサ |
---|---|
シングルコアプロセッサは、1つのチップに1つのコアを搭載しています。一度に一つの機能だけを実行し、コンピューティングすることができます。現在の組込みシステムの多くは、シングルコアプロセッサを使用しています。 |
マルチコアプロセッサは、2つ以上の独立した処理コアまたはCPUを備えています。各コアは、単一の専用機能を実行し、コンピューティングすることができます。最速のマルチコアプロセッサは、最大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への対応、システムリソース(ファイルなど)の共有と保護、異なるネットワークへの接続を可能にします。OSはまた、デバイスとそれが生成するデータを悪意のある攻撃から保護するためのセキュリティ層を提供することができます。
組込みシステムでは、さまざまな種類のオペレーティングシステムを使用します。
リアルタイムオペレーティングシステム(RTOS)
組込みシステムでは、従来からあらゆる種類の機器にリアルタイムOSが使われてきました。RTOSは、高性能、小フットプリント、低レイテンシ(リアルタイム)応答性、決定性動作を提供します。ミッションクリティカル、セーフティクリティカル、機能安全 などの要件を満たすデバイスやマシンは、アプリケーションを時間通りに、期待通りに、確実に実行できるRTOSに依存しています。VxWorksは、市場をリードする 商用RTOSの代表格です。
また、FreeRTOSやZephyrなど、オープンソースコミュニティプロジェクトでサポートされているRTOSもあります。FreeRTOSは、マイクロコントローラやマイクロプロセッサ向けのRTOSです。Zephyrは、小型で接続性が高く、リソースに制約のある組込みデバイス向けに設計されたもう1つのRTOSプロジェクトです。
組込みLinux
現在、組込み用OSとして広く使われているのがLinuxです。Linuxは、開発者のコミュニティによって支援されている、自由に利用できるオープンソースのOSです。組込みLinuxは、通常、ハードリアルタイム動作や決定性を必要としないデバイス、機械、システムに使用されています。しかし、一部の企業では、リアルタイムに近い性能を実現するために、pre-empt RTカーネルコンフィグレーションを使用しています。
特定の産業や市場のニーズに対応するために、コミュニティがサポートするLinuxプロジェクトが数多くあります。OpenEmbeddedは、Linuxでの組込みシステム開発のデファクトプロジェクトであり、Yoctoプロジェクトとともに、最もよく使われるLinuxパッケージやリソースを定義し、管理しています。Yocto プロジェクトは、開発者が組込みシステム用のカスタム Linux ディストリビューションを構築するためのツールセットを提供しています。多くの組込みハードウェアサプライヤは、統合ソフトウェアバンドルの一部として Yocto Project のサポートを含んでいます。このバンドルされたLinuxソフトウェアと専用ハードウェアは、組込みシステムプロジェクトの出発点となります。通常、追加の修正と最適化、および長期サポートとメンテナンスが必要になります。
» 組込みLinuxの詳細はこちらウインドリバーは、 Yocto Project の創設メンバーであり、商用に検証、評価、サポートされたビルドシステムをお客様に提供します。ウインドリバーは、さまざまなハードウェアボードやプロセッサ向けに、多数のYocto Project Linux BSPを提供しています。
組込みシステムのセキュリティとサイバーセキュリティ
ノートパソコンや携帯電話と同様に、組込みシステムには、デバイスのセキュリティとサイバーセキュリティの両方の機能が必要です。セキュリティを考慮した組込みシステムの設計は、ライフサイクル全般にわたるプロセスです。組込みシステムのライフサイクルは、最初の1行のコードが書かれる前に始まり、デバイスが稼働場所から取り外され、動作できない状態になったときに終了します。
組込み型セキュリティには5つのポイントがあります。
- 開発環境のセキュリティーの確保: ハードウェアとオペレーティングシステムに組み込まれたセキュリティ機能を活用し、実行します。カーネルハードニングやセキュアブートなど、追加のセキュリティ機能が必要な場合もあります。
- デバイスの安全性の確保: ハードウェアとオペレーティングシステムに組み込まれたセキュリティ機能を活用し、実行します。カーネルハードニングやセキュアブートなど、追加のセキュリティ機能が必要な場合もあります。
- アプリケーションのセキュリティ: 組込み機器上で動作するアプリケーションは、脆弱性によって標的型攻撃の対象となる可能性があります。
- データの保護: デプロイされているインテリジェントな組込みシステムは、膨大な量のデータを生成しています。このデータは、ディスクに保存されている間か転送中かにかかわらず、セキュアに保護されていなければなりません。
- 継続的なセキュリティ監視: 導入されたすべての組込みデバイスは、潜在的な攻撃対象です。この脅威は、より多くのデバイスが他のデバイスやネットワークに接続されるにつれて、大幅に増加します。デバイスを最新のセキュリティパッチに対応させるためには、一般的な共通脆弱性識別子(CVE)に対する継続的な監視と、それらを修正するためのソフトウェアアップデートが必要です。
安全な組込みシステムの設計は、最初の1行のコードが書かれる前から始まる、完全なライフサイクルプロセスです。
業界と政府の認証
多くの組込みシステムは、デプロイする前に安全性に関する厳しいガイドラインと認証を満たす必要があります。認証の要件は、業界や政府機関によって定義されることがあります。また、地域によっても大きく異なる場合があります。
多くの業界固有の認証は、デバイスメーカーがより高いレベルの標準を満たすのに役立ちます。例えば、産業用アプリケーションの組込みシステムを構築する企業は、製品の試験、検査、認証を行う技術検査協会(TÜV SÜD)の専門知識を活用しています。 TÜVの認証プロセスを経ることで、国際規格に基づく安全規制や品質基準への適合が保証されます。企業は、製品がデプロイされる安全環境での使用に適合していることを日常的に検証しています。
医療機器の規制や監視を行う政府機関の一例として、米国食品医薬品局(FDA)があります。FDAは、医療機器 が操作と安全性に関して適用される基準に適合していることを確認するために、規制と監視を行います。
VxWorksは、以下のような要件を満たすシステムで使用できるRTOSです。
- 航空機搭載システム向けIEC 61508 SIL 3SIL 3
- 航空機搭載システム向けDO-178C DAL A
- 自動車搭載システム向けISO 26262 ASIL-D
- クラスCのリスクレベルを必要とするIEC 62304医療機器向け標準規格
ソースコード、バイナリ、コンテナ化
OSのソースコードへのアクセスは、組込みシステムソフトウェアを構築する上で重要な要素です。開発者は、OSがどのように機能するかを完全に理解するためにソースコードを必要とします。ソースコードによって、開発者はプロジェクトの要件に基づいてOSを設定、ビルド、コンパイルすることができます。
すべての組込み設計がソースコードへのアクセスを必要とするわけではありません。多くの開発者は、オペレーティングシステムのビルド済みバイナリを使用しています。バイナリはすでにコンパイルされており、変更することはできません。
組込みソフトウェア開発における新しいトレンドは、コンテナ化です。コンテナは、OSのライブラリとランタイムの依存関係を、軽量の実行ファイルにパッケージ化します。コンテナベースのソフトウェアは、ほとんどのOS上で一貫して実行することができます。VxWorksとWind River Linuxの両方が、オープンコンテナイニシアチブ(OCI)をサポートしています。
ソフトウェアコンプライアンス
組込みシステムのソフトウェアは、商業的にデプロイする前に、標準に準拠し、企業のライセンスコンプライアンスポリシーを遵守することが要求されることがあります。多くの場合、組込みシステムは業界標準をベースにしていると言われます。これは、ソフトウェアが明確に定義された公共規格の規則を遵守していることを意味します。ソフトウェアはまた、企業のソフトウェアライセンシングポリシーを遵守することが要求されることがあります。ライセンスコンプライアンスとは、組込み機器に使用されるソフトウェアが正確なドキュメントとライセンス契約のエビデンスを有し、それらのライセンス契約がソフトウェアを使用する企業のポリシーや慣習に違反する条件を含んでいないことを意味します。多くの組込み機器開発者は、設計の際に、オープンソースや自由に利用できるソフトウェアを利用しています。そのソフトウェアは、大規模で複雑なオペレーティングシステムから小さなスクリプトまで、あらゆるものである可能性があります。ライセンスコンプライアンスは、著作権で保護されたコンポーネントが文書化され、適切に対処されていることを保証します。
組込みシステム用の商用ソフトウェアプロバイダは、ソフトウェア部品表(SBOM)を提供するようになりました。SBOMは、プロプライエタリやオープンソースを問わず、すべてのソフトウェアコンポーネントをリストアップしています。すべてのコンポーネントのリストと具体的なバージョンを提供することで、ソフトウェア開発者は、不具合が見つかったときに問題箇所を容易に特定することができます。SBOMは、ソフトウェアのサプライチェーンマネジメントの役割を果たします。
長期サポートと継続的なメンテナンス
組込みシステムは、絶え間なく発生する課題に対応できるように構築されています。組込み機器のライフサイクルは、5~20年に及ぶことも珍しくありません。ライフサイクルを通じて、ソフトウェアには、システムの継続的な改良を保証するための長期的なサポートとメンテナンスが必要になることがあります。ソフトウェアのアップデートは、新機能、ファームウェアの更新、クリティカルなバグの修正、セキュリティアップデートを提供します。ソフトウェアのアップデートの多くは、人間がすべてのデバイスに対して物理的にアップデートをかけるのではなく、無線(OTA)で自動的に行うことができます。
4. 組込みソフトウェアサービス層
ソフトウェアサービス層は、ミドルウェアとも呼ばれます。この層は、アプリケーション層とのインタフェースとなる様々な付加価値サービスをサポートします。サービス層の一般的なコンポーネントには、ファイルシステム、グラフィカルユーザインタフェース、アプリケーションプログラミングインタフェース(API)、タスクマネージャーなどがあります。
5. アプリケーション層
組込みシステムは、ソフトウェアが特殊な用途のためにハードウェアと一緒にデプロイされるようになって以来、存在してきました。その後、組込みシステムは、高い信頼性、リアルタイム性、決定性を必要とするデバイス、マシン、システムへと進化してきました。これらのシステムの多くは、ソフトウェアフットプリントの制約、高性能、過酷な環境で動作する能力など、厳格な運用要件を満たすよう構築されています。組込みシステムは以下のような機器に使用されています。
- 航空機
- MRI装置
- 電気通信システム
- 信号機
- 宇宙船
- 製造制御システム
- 自動車用ブレーキシステム
- レーダー・ソナー機器
- モデム
- セットトップボックス
- 携帯電話
- ロボティクス
- 衛星システム
- 医療機器
- 交通機関(電車)
- ネットワーク機器
- 通信機器
- カメラ
モダンなアプリケーション開発
開発者は、オペレーティングシステムがサポートするさまざまなプログラミング言語に依存しています。組込み機器の開発者は、伝統的にCとC++のプログラミング言語を使用してきました。Linuxオペレーティングシステムや一部の商用RTOSソリューションでは、C、C++17、Ada、Rust、Pythonなど、さまざまなプログラミング言語がサポートされています。また、組込みシステムは、さまざまなコンパイラ、ライブラリ、およびオープンソースツールのサポートを拡張してきました。最新の開発手法を採用することで、効率性と移植性を高めることができます。また、人工知能(AI)や機械学習(ML)の新しい要件に対応するフレームワークも提供します(VxWorksは、サイドバー表示されているようにこれらすべてに対応しています)。
DevOpsとクラウドネイティブ開発
ここ数年、組込み開発者は、よりアジャイルなソフトウェア開発アプローチに移行しています。多くの組込みプロジェクトは、DevOpsインフラストラクチャを使用して構築されています。
インテリジェントエッジ
次世代の組込み機器は、クラウドネイティブテクノロジーで構築されており、企業は最新のネットワークのエッジ上で新しいユースケースを模索することができます。組込みシステムは、インテリジェントエッジを構成する新しいクラスのデバイスを生み出すために急速に変化しています。現在、組込みシステムとそれらが実行するアプリケーションは、クラウドの処理能力だけでなく、AIやML技術を活用し、デバイスがデプロイされているエッジ上で、より優れた洞察力と意思決定を可能にしています。インテリジェントエッジから収集された運用データや環境データは、機能性の向上、安全性の確保、リアルタイムのビジネス上の意思決定に利用されます。
ウインドリバーのアプローチ
Wind River Studioは、ソフトウェア開発者がVxWorksとWind River Linuxランタイムのビルドプロセスとワークフローの自動化を実現する、クラウドネイティブのDevSecOpsプラットフォームです。Wind River Studioには以下の機能が含まれます。
実績のある商用サポートされたオペレーティングシステム
ウインドリバーは、リアルタイムOSと妥当性確認と検証済みのYocto ProjectベースLinuxビルドシステムを提供しています。
VxWorks
VxWorksは、安全性とセキュリティが求められるクリティカルな組込みシステム向けに、業界で最も信頼され、広く導入されているRTOSです。VxWorksは、実績のあるリアルタイムかつ決定論的なランタイムを、最新の開発手法と組み合わせて提供します。最高水準のセキュリティ、安全性、信頼性、パフォーマンスを提供するVxWorksは、幅広い業界とデバイスをサポートしており、企業からの厚い信頼を得ています。
» 詳細はこちらWind River Linux
Wind River Linuxは、妥当性確認と検証済みのYocto ProjectベースのLinuxビルドシステムです。Wind River Linuxは、組込み開発者がLinuxプラットフォームをカスタマイズして構築することができる、商用のOSソリューションです。
» 詳細はこちプロフェッショナルサービス
ウインドリバーのプロフェッショナルサービスは、開発およびデプロイメントのライフサイクルを通じた重要なポイントにおいて、組込み開発者に必要な支援を提供します。ウインドリバーの組込みエキスパートチームが、ソフトウェアアーキテクチャや設計、Linuxプラットフォームのカスタマイズや管理、安全認証、セキュリティ強化、ライフサイクル管理、トレーニングなどを支援します。
» 詳細はこちらWind River Helix Virtualization Platform
Wind River Helix™ Virtualization Platformは、マルチOSや重要度の異なるアプリケーションを単一のエッジコンピューティングソフトウェアプラットフォームに統合し、航空宇宙、防衛、産業、医療、自動車市場のクリティカルインフラストラクチャソリューションを簡素化し、安全性と将来性を確保します。
» 詳細はこちらセキュリティソリューション
ウインドリバーは、VxWorksとWind River Linuxの両方に、多数の組込みセキュリティコンポーネントを搭載しています。また、ウインドリバーは、全製品のセキュリティ脅威やCVEを積極的に監視し、お客様に警告を発します。より高度なセキュリティ機能を必要とするお客様は、ウインドリバーのプロフェッショナルサービスを活用して、OSやアプリケーションの設計アセスメントや機能の実装を行うことができます
» 詳細はこちらツール: シミュレータ、コンパイラ、Eclipseベースツールキット
ウインドリバーは、製品ライフサイクルのさまざまなフェーズに対応するソフトウェア開発ツールを多数提供しています。
ウンドリバーの開発ツールは、さまざまなライフサイクルのステージに対応しています。
Wind River Workbench
Wind River Workbenchは、Eclipseベースの統合開発環境(IDE)です。
Wind River Diab Compiler
Wind River Diab Complierは、OSやアプリケーションのパフォーマンスを向上させ、小フットプリントや品質要件に対応することができます。
Wind River Simics
Wind River Simics®は、ソフトウェア開発者が複雑な電子システムのハードウェアをシミュレートするために使用するフルシステムシミュレータです。Wind River Simicsは、あらゆるターゲットシステムへのオンデマンドかつ容易なアクセス、開発者間の効率的なコラボレーション、より効率的で安定した自動化を可能にします。DevOpsや継続的インテグレーションと継続的デリバリー(CI/CD)への道筋を提供します。
» 詳細はこちら