NXPチームの皆様、こんにちは。
現在、S32K328上で動作する既存のアプリケーションにOTA A/Bスワップのサポートを追加する設計・実装段階にあります。
これは、完全なFOTAフレームワークを統合するのではなく、既存のソフトウェアをOTA機能で拡張する初期実装です。
現在の環境
OTAバイナリは、カスタムOTA CDDによってUART経由で受信されます。
現在のVector構成には、NvM/Fee(D-Flash)専用のMemAccMが含まれています。P-FlashアプリケーションをプログラミングするためのMemAccM設定はなく、Vector OTA/FOTAも使用していません。
そのため、OTA CDDのMem_43_INFLSを使って非アクティブなアプリケーションのフラッシュを直接消去・プログラムすることを検討しています。
以下の点についてご指導いただければ幸いです。
VectorのOTA/FOTAパッケージを使わない場合、A/Bスワップ環境でOTA画像プログラミングを管理するための推奨される低レベルのドライバーはMem_43_INFLSでしょうか?
あるいは、MemAccMは、カスタムOTA実装の場合も含め、P-Flashプログラミングに対応するように拡張されるべきでしょうか?
HSE A/Bスワップを有効にした後:
HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK を正常に実行するための必須の前提条件は何ですか?
例:
S32K328のC40フラッシュコントローラーはDフラッシュ(Fee/NvM)とPフラッシュ(非アクティブブロック)間の同時操作をサポートしていますか?
そうでない場合、推奨される同期戦略は何ですか?
以下のアーキテクチャはNXPの推奨事項に準拠していますか?
UART
↓
カスタムOTA CDD
↓
Mem_43_INFLS(非アクティブなPフラッシュの消去/書き込み)
↓
画像認証
↓
HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCK
↓
システムリセット
↓
HSE/BAF がパッシブブロックをアクティブ化します
私たちは特に、この軽量化アプローチが適切であり、HSE(環境・安全・衛生)要件に準拠しているかどうかについて、ご助言を求めています。
HSE A/Bスワップ対応のカスタムOTAに関するアプリケーションノート、RTD例、または参考実装があれば、ぜひご指導いただけるとありがたいです。
再開まで今しばらくお待ちください。
よろしくお願いします、
ヴェンカテシュ KV
#s32k328
こんにちは、 @venkatesh-kv
1.カスタムOTA実装では、パッシブパーティションを消去・プログラムするために直接このMem_43_INFLSを使うことができます。
MemAccMを拡張すべきかどうかはアーキテクチャ上の決定であり、主にアプリケーション内で共通のフラッシュアクセスおよび仲裁レイヤーが望まれるかどうかに依存します。
2. パッシブアプリケーション画像は通常、物理的なP-フラッシュアドレス範囲でプログラムされます。HSEは、パッシブブロック専用の論理アドレス指定抽象化を提供していません。アプリケーション/ブートローダーは新しいイメージを非アクティブなパーティションに書き込む責任があり、その後HSE_SRV_ID_ACTIVATE_PASSIVE_BLOCKを使って次のリセット時にそのパーティションをアクティブにすることができます。
3. セキュアブートを使用する場合、シグネチャは(セキュアブートモードやその他の設定に応じて)更新され、次のリセット後に新しいアプリケーションが正常に認証・実行されるようにすべきです。
旧バージョンのHSEファームウェアでは、サービスHSE_SRV_ID_ACTIVATE_PASSIVE_BLOCKを実行するためにスーパーユーザー権が必要でした。これはファームウェアバージョン0.2.55.0以降では通常のユーザー権限にダウングレードされています。
4. 一度に1つのフラッシュ操作のみが実行可能。フラッシュアクセス仲裁の実装はアプリケーションアーキテクチャに委ねられています。
一般的に、複数のソフトウェアコンポーネントからの同時フラッシュ操作を避け、OTAプログラミング活動とシステム内の他のフラッシュユーザー間の競合を防ぐために、フラッシュアクセスが適切に同期されていることを確認することが推奨されます。
Fee/NvMとMem_43_INFLSの間に同期サポートはありません。
5. はい、その流れで合っています。実際には、交換前に有効なアプリケーションがパッシブパーティションに存在し、署名(またはセキュアブート設定全般)が適切に更新される必要があるという唯一の要件です。
S32K344には基本的なOTAデモ「SW32K3_OTADEMO_0.8.0_D2203」があります。これは新しいアプリケーションをパッシブブロックに書き込み、その後AB SWAPを要求する方法を示しています(これはHSEファームウェアの機能です)。このデモではRTD 1.0.0を使用しています。
次のより高度なデモは「S32K396 OTA Demo version 0.4.0」で、イーサネット経由でファームウェアを更新する方法を示しています。こちらはRTD 3.0.0を使用しています。P07。
両方のデモはS32K3リファレンスソフトウェアで見ることができます:
https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=SW32K3-REFSW-D
リンクをクリックして「Automotive SW - S32K3 - OTA Demo」で検索してください。
これが唯一のバージョンで、あくまで参考ソフトウェアです。必要に応じて他の派生版や新しいRTDパッケージに移行するのはユーザーが自由に行っています。
そして、以下のOTAトレーニングがあります:
https://www.nxp.com/design/design-center/training/TIP-CONNECTS2021-AUT428
https://www.nxp.com/design/design-center/training/TIP-NXP-AUT-T3955A
両者はS32K3のトレーニングセクションでご覧いただけます: https://www.nxp.com/products/S32K3
また、「S32K3XX HSE and OTA Advance トレーニング [TR744101]」もご覧いただけます。これはドキュメント -> Secure files: https://www.nxp.com/products/S32K3
よろしくお願いいたします。
ルーカス