従来の静的組込みソフトウェアを使用する電子制御ユニット (ECU) の例を考えてみましょう。ブートローダーは、ソフトウェアをRAMにコピーするなど、ECUメイン・ソフトウェアの起動を開始し、起動前にソフトウェアの検査を実行するために使用されるソフトウェア・コンポーネントです。ソフトウェア更新もブートローダーが担います。更新されたソフトウェアの受信、チェック、メモリ (通常はフラッシュ・メモリ) への書き込みを行います。したがって、フラッシュ・ブートローダーという用語も一般的に使用されています。
開発と生産で同じブートローダーが使用されていますか?
車両と車載ECUでは一般的に、開発と通常の生産で同じブートローダーが使用されます。生産用ECUは、開発用ブートローダーやエンジニアリング用ブートローダーの多くの機能が無効になるように保護されています。車両開発中、開発ソフトウェアを迅速にデプロイするため、生産用ブートローダーのセキュリティ対策を解除することが推奨される場合があります。
安全なブートローダー
ブートローダーの安全性がますます求められます。しかし、ブートローダーは以前から、セキュリティ、安全性、ときには性能に関わる機能を保護するために実装され、重要な役割を果たしてきました。
ブートローダーは通常、起動時にECUのソフトウェア・メモリを検査し、ソフトウェア更新前と更新後のメモリでソフトウェアを受け取ります。
一般的な仕組みは次のとおりです。
- 起動時に受信した、あるいはメモリ上に存在するソフトウェアの認証。多くの場合、公式にリリースされたソフトウェア・バージョンの安全なコンパイル・プロセスから生成された、ソフトウェア・バイナリのハッシュを使用して正常性を検査します。
- シードとキーを使用した送信者の認証、アクセス可能/書き換え可能な領域を定義するためのメモリマップと安全なメモリを使用したECU内のデータ・セキュリティの保護。
デュアル・ブートローダー
ブートローダーの中には2つの部分に分かれて実装されているものもあり、そのためデュアル・ブートローダーと呼ばれています。デュアル・ブートローダーの場合、安全性を確保するために、プライマリ・ブートローダーは更新できません。これは、モジュールの起動とセカンダリ・ブートローダーの更新に関係します。セカンダリ・ブートローダーは、安全なプロセスを介して更新でき、メモリマップなどのソフトウェア更新プロセスの変更が可能になり、これらを正常にロックできます。HSM (ハードウェア・セキュリティ・モジュール) など、オンボードの安全なハードウェアを使用して更新プロセスを保護する新しい方法が登場したことで、デュアル・ブートローダーは現在ではあまり一般的ではありません。
デュアルブートなどの名の付いたブートローダーは、2つのブートブロック、またはフルメモリが利用可能です。1つのバージョンがアクティブである間に、未使用のバージョンで更新を行うことができる点が特徴です。この更新方法をサポートするには、それぞれのECUに追加のメモリが必要です。
Capital Embedded Bootloader
Capital Embedded Bootloaderは、接続された診断ツールまたは無線方式を介して、開発中、車載生産中、および自動車の寿命期間に、信頼性の高いECUの更新をサポートします。一般的な車両ネットワーク・バス、イーサネット、CAN/CAN-FD、LIN、FlexRayに対しては、標準化されたISO 14229 UDSプロトコルを使用します。また、ASAM校正プロトコルなどの他のプロトコルもサポートします。サイバーセキュリティは、ソフトウェアの更新フローの重要な要素であり、ソフトウェア認証とセキュアブート・オプションを可能にする機能を含みます。OEM (相手先ブランド名製造) およびMCU固有の要求仕様を満たすために、幅広いECUプロジェクトをサポートしています。
OTAとFOTAの違い
OTA (over the air) の更新、またはFOTA (ファームウェアover the air) は、ワークショップで直接接続されたサービスツールではなく、リモートで自動車ECUなどの組込みデバイスの新しいソフトウェアを受け取る方法です。調整ECUのオンボード診断テスター機能や、ブートローダーのリカバリおよびセルフテスト機能が必要なこともあります。