シーメンスは、車載ソフトウェアと組込みソフトウェア・エンジニアリング・ソリューションの両方を提供しています。シーメンスは、2023年11月にNucleus、Nucleus Hypervisor、Nucleus ReadyStart、Sokol Flex Linux、Sokol Omni Linux、Sourcery CodeBench製品 (関連アドオンを含む) の生産終了に伴い、SoC用のスタンドアロン組込みソフトウェアの提供を終了しました。これらの製品の既存のサポート契約は引き続き有効です。詳細については、シーメンスのサポート・センターにお問い合わせください。
組込みソフトウェアの種類とその目的について教えてください。
- オペレーティング・システム – オペレーティング・システム (OS) とは、最も一般的な意味では、ユーザーがコンピューティング・デバイス上で他のアプリケーションを実行できるようにするソフトウェアです。オペレーティング・システムは、キーボードやマウスなどの入力デバイス、ディスプレイやプリンタなどの出力デバイス、ネットワーク接続、ハードドライブやメモリなどのストレージ・デバイスなど、プロセッサのハードウェア・リソースを管理します。また、ソフトウェア・アプリケーション・プログラムの効率的な実行、管理、およびメモリ割当てを容易にするサービスも提供しています。
- ファームウェア – ファームウェアとは、ハードウェアの一部に対して直接書き込まれるソフトウェアの一種です。API、オペレーティング・システム、またはデバイス・ドライバを経由せずに動作し、他のデバイスと通信したり、意図したとおりに基本的なタスクや機能を実行したりするために必要な命令とガイダンスを提供します。
- ミドルウェア – ミドルウェアとは、アプリケーションとオペレーティング・システムの間に位置するソフトウェア・レイヤーです。ミドルウェアは、分散型システムでよく使用され、次の機能を提供することでソフトウェア開発を簡素化します。
- 分散型アプリケーションの複雑さを軽減する
- ハードウェア、オペレーティング・システム、プロトコルの不均一性をマスキングする
- 相互運用と再利用、移植が可能なアプリケーションを作成するため、統一された高レベルのインターフェースを提供する
- 重複作業を最小限に抑え、アプリケーション間のコラボレーションを強化する一連の共通サービスを提供する
- アプリケーション – オペレーティング・システム上で実行され、ミドルウェアとファームウェアを使用または操作する、最終的なソフトウェア・アプリケーションは、エンドユーザーによって開発されます。組込みシステムの主なターゲットは、この最終的なアプリケーションです。最終的なアプリケーションはそれぞれ固有のものですが、オペレーティング・システムとファームウェアは複数のデバイスで同一にすることができます。
組込みソフトウェアと組込みシステム
組込みソフトウェアを実行しているデバイス内のハードウェア・コンポーネントは、「組込みシステム」と呼ばれます。組込みシステムで使用されるハードウェア・コンポーネントの例としては、電源回路、中央演算処理装置、フラッシュ・メモリ・デバイス、タイマー、シリアル通信ポートなどがあります。デバイスの初期の設計段階では、組込みシステムを構成するハードウェアと、デバイス内での構成が決定されます。次に、組込みソフトウェアがゼロから開発され、そのハードウェア上で正確な構成で独占的に実行されます。そのため、組込みソフトウェアの設計は、ハードウェアの機能やコンピュータ・プログラミングに関する深い知識を必要とする専門分野となっています。
組込みソフトウェアベースの機能の例
回路基板とコンピュータ・チップを搭載したあらゆるデバイスでは、これらのコンポーネントが組込みソフトウェア・システムに配置されています。その結果、組込みソフトウェア・システムは日常生活の至るところに存在し、消費財、産業、自動車、航空宇宙、医療、商業、通信、軍事技術などあらゆる分野で見られます。
組込みソフトウェアベースの機能には、一般的に次のような例があります。
- 医用画像機器に見られる画像処理システム
- 航空機に見られるフライ・バイ・ワイヤ制御システム
- セキュリティ・カメラの人感センサーシステム
- 信号機に見られる交通管制システム
- スマートホーム・デバイスに見られるタイミングおよび自動化システム
組込みシステムの種類について教えてください。
性能と機能の要件で分類すると、組込みシステムは次の5つに分けられます。
- リアルタイムの組込みシステムは、デターミニスティックかつ反復可能な方法でタスクを完了します。また、オペレーティング・システムの基盤となるアーキテクチャとスケジューリング、スレッドのパフォーマンス、分岐、および割込みの遅延の影響を受けます。汎用組込みシステムにはリアルタイム要件が含まれておらず、完了時間に依拠せずに割込みや分岐を管理できます。汎用システムの例としては、グラフィック・ディスプレイやキーボード/マウス管理などがあります。
- スタンドアロンの組込みシステムは、ホストシステムや外部の処理リソースなしでタスクを完了できます。これらのシステムは、接続されたデバイスからデータの出力や受信はできますが、タスクを完了するためにデバイスに依存しているわけではありません。
- スタンドアロンの組込みシステムは、ホストシステムや外部の処理リソースなしでタスクを完了できます。これらのシステムは、接続されたデバイスからデータの出力や受信はできますが、タスクを完了するためにデバイスに依存しているわけではありません。
- ネットワーク組込みシステムは、割り当てられたタスクを実行するために、接続されたネットワークに依存しています。
- システムのハードウェア・アーキテクチャの複雑さで分類すると、組込みシステムには主に3つの種類があります。ネットワーク組込みシステムは、割り当てられたタスクを実行するために、接続されたネットワークに依存しています。
ターゲット市場が組込みシステムに与える影響
組込みシステムの要件とコンポーネントは、ターゲット市場の要求によって異なります。いくつか例をあげます。
- 消費財 – 洗濯機、ウェアラブル・デバイス、携帯電話などの消費財のアプリケーションでは、組込みシステムは
- システム・オン・チップの小型化、低消費電力またはバッテリー動作、グラフィックス・インターフェースを重視しています。これらのアプリケーションでは、構成可能なオペレーティング・システムと、設計の非動作「ドメイン」を遮断する機能が評価されます。
- ネットワーク – 社内ネットワークの接続、通信、運用、および管理を可能にするアプリケーションです。これは、ユーザー、プロセス、アプリケーション、サービス、および外部ネットワーク/インターネット間の通信パスとサービスを提供します。組込みネットワーク・アプリケーションは、応答速度、パケット処理、および周辺機器のハードウェア・パスに重点を置いています。
- 産業 – 工場現場の管理、モーター、風車などのアプリケーションでは、クラウド接続の安全性と決定論的な「リアルタイム」動作が重視される傾向にあり、ミドルウェアに重点を置くこともあります。
- 医療、自動車、航空宇宙 – これらの業界では、設計の一部が互いに分離され、必要なデータのみがシステムに出入りする (セキュリティ) 一方で、エンドユーザーに危害が及ばないことを保証する (安全性)、ミックスド・セーフティ・クリティカル・システムが必要です。例として、自動車や医療機器の自動運転システムが挙げられます。これらの組込みシステムは、オープンソース (Linux) とデターミニスティックなリアルタイム・オペレーティング・システム (RTOS) の組み合わせを特徴とし、実績のあるミドルウェアを多用できます。
車載ソフトウェアの違いを教えて下さい。
自動車エレクトロニクスでは、ブレーキ、ステアリング、サスペンション、パワートレインなどの各制御機能を持つ複数の組込みシステム間で複雑なリアルタイムの相互作用が発生します。各組込みシステムを含む物理筐体は、電子制御ユニット (ECU) と呼ばれます。ECUと車載組込みソフトウェアは、分散型システムと呼ばれる複雑な電気アーキテクチャの一部です。
車両の分散システムを構成するECUは、相互に通信することで、緊急自動ブレーキ、アダプティブ・クルーズ・コントロール、スタビリティ・コントロール、アダプティブ・ヘッドライトなど、さまざまな機能を実行できます。1つの機能を実現するだけでも、複数のネットワーク・プロトコルで接続された複数のECUに分散した、20以上の組込みソフトウェア・アプリケーション間の連携が必要になることもあります。組込みソフトウェアとともに展開された複雑な制御アルゴリズムにより、機能の適切なタイミング、必要な入力と出力、およびデータのセキュリティが確保されます。
車載ソフトウェア・アプリケーションベースの機能には、一般的に以下のような例があります。
- アダプティブ・クルーズ・コントロール、緊急自動ブレーキ、レーンキープ・アシスト、追従機能、車線逸脱防止支援などのADAS (先進運転支援システム) 機能
- バッテリー管理
- トルク補正
- 燃料噴射速度制御
ECUソフトウェア・スタック
電子制御ユニット (ECU) は、チップレベルのハードウェアを備えたメイン・コンピューティング・ユニットと、組込みソフトウェアのスタックで構成されています。しかし、自動車メーカーの間では、1つのチップに複数のコンピューティング・コアを含む複雑な集積回路を搭載したECU、いわゆるシステム・オン・チップ (SoC) を設計する傾向が強まっています。これらのSoCは、ハードウェアを統合するために、多数のECUアブストラクションをホストできます。ECUのソフトウェア・スタックには、通常、低レベルのファームウェアから高レベルの組込みソフトウェア・アプリケーションまで、さまざまなソリューションが含まれます。
ECUスタック | 説明 |
組込みソフトウェア・アプリケーション | 制御アルゴリズム、処理、サービス |
アプリケーションのフレームワーク | セキュリティと安全性のフレームワーク |
動作環境 | AUTOSAR classic、AUTOSAR Adaptive、入力/出力チャンネル |
組込み仮想化 | リアルタイムOS、ECUアブストラクション |
ファームウェア | ブートローダー、安全なストレージ、安全なねじ切り |
ハードウェア | シリコンベースのデバイス、マイクロコントローラ、単層または多層基板 |