NXPサポートチームの皆さん、こんにちは。
私は S32K322 マイクロコントローラのセキュリティ実装に取り組んでおり、AESのセキュリティ運用と乱数生成(TRNG)のためにHSE(ハードウェアセキュリティエンジン)モジュールを活用する必要があります。
以下の情報を提供していただけますか:
S32K322 (2MBフラッシュメモリ搭載)専用に構成された、公式HSEファームウェアインストール例プロジェクト。
S32K322 HSEファームウェアのセットアップに必要な標準リンカスクリプト(.ld)、IVTオフセット、およびメモリ境界設定。
S32K322派生製品と互換性のある正確なHSE-Bファームウェアのバイナリパッケージバージョンの確認。
こんにちは、 @Ranjith_kumar
HSEデモ事例をご紹介します。
https://www.nxp.com/webapp/Download?colCode=S32K3_HSE_DemoExamples
プロジェクト S32K344_HSE_FW_INSTALL は他の S32K3 派生モデルに簡単に移植可能です。
しかし、どのプロジェクトでもHSEファームウェアをインストールできます。以下の手順を実行するだけで済みます。
- OTP UTEST メモリの 0x1B00_0000 に HSE 機能フラグをプログラムします。これは通常のフラッシュプログラミングで「手動」で行うこともできます(前述のS32K344_HSE_FW_INSTALLで示されています)。または、ブート設定ワードでビットを設定しFW_USAGE_FLAG_PROGRAM SBAFによって自動的に行うこともできます。この自動プログラミング機能は、SBAFバージョン0.15.0以降でのみ利用可能ですのでご注意ください。非常に古い機器をお持ちの場合は、動作しない可能性があり、手動でのプログラミングが必要になります。
ピンク色のファイルをフラッシュメモリのどこかに書き込み、オフセット0x2CにあるIVTにピンク色のファイルへのポインタを追加する。
その後、MCUをリセットするだけです(FULL_MEMファームウェアの場合は2回、AB_SWAPファームウェアなら3回)で完了です。
低レベルでは、次のようになります。
これは、いくつかのアプリケーションのIVTであり(複数の場所が使用可能で、この場合はデータフラッシュが使用されます)、FW_USAGE_FLAG_PROGRAMが設定され、FWイメージへのポインタが含まれています。
ピンク色のファイルには0x480000がプログラムされています。
リセット後、UTESTでフィーチャーフラグが自動的にプログラムされ、HSEファームウェアがインストールされます(HSE GPRレジスタのビット0(アドレス0x4039_C028)が設定されます)。
S32K344_HSE_FW_INSTALLでは、機能フラグはソフトウェアによってプログラムされます(main.cファイルを参照)。
ポインタは、ファイル boot_header.c 内の IVT に追加されます。
ピンク色のファイルは、S32K344_flash_full_mem.ld または S32K344_flash_ab_swap.ld 内のプロジェクトにリンクされています。必要な構成によって異なります。
詳細については、HSE-Bファームウェアリファレンスマニュアルの以下のリソースをご覧ください。2.8:
表17.BCWコンテンツ
表119。BCWビットマッピング
表118。IVT構造
表143。HSE_CONFIG_GPR3 (0x4039C028) のステータスビット
標準RTDプロジェクトをお持ちの場合、プロジェクトにこれを実装する方法は次のとおりです。
- startup_cm7.s を開くファイルと、オフセット0x2Cにあるピンク色のファイルへのポインタを追加します。
- オフセット0x4のIVT内にあるブート構成ワードのビット9を設定します。
そして、リンカーファイル(例えば「linker_flash_s32k322.ld」)に移動します。そしてProject S32K344_HSE_FW_INSTALLで見られるのと同じ方法でピンクファイルをリンクしてください。
それだけです。プロジェクトをビルドしてMCUに読み込み、デバイスを何度かリセットするだけです。
S32K322用HSEファームウェアの最新製品版を入手する方法:
S32K3標準ソフトウェアへ進む:
https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=SW32K3-STDSW-D
「オートモーティブ SW - S32K3 - HSEファームウェア」を選択してください
ここでS32K3x2およびS32K3x4の0.2.55.0を検索してください:
HSE_FW_S32K342_0.2.55.0_D2512.exe をダウンロードしてください。このバージョンは S32K322 にも対応しています。
最後に、LauterbachのTrace32を使うと、添付スクリプトを使ってファームウェアをインストールできます。デフォルトの位置情報方法を使っています。
よろしくお願いいたします。
ルーカス
こんにちは、 @lukaszadrapa さん。
サポートありがとうございます。ご指示いただいた通り、S32K322デバイスにHSEファームウェアを正常にインストールすることができました。
新しいピンク色のファイルを使用してHSEファームウェアを新しいバージョンにアップデートする必要があるのですが、問題が発生しています。私のコードはHSEファームウェアアップデートフロー(HSE_SRV_ID_FIRMWARE_UPDATE)に基づいており、サービスは以下を返します。
HSE_SRV_RSP_VERIFY_FAILED (0x55A5A164)
設定の詳細:
- デバイス:S32K322
- ファームウェアバリアント: FULL_MEM
- 現在インストールされているHSE FWバージョン:添付画像
- 新しいピンク色のファイル: リンカーファイルに追加
- 更新モード: ONE_SHOT
- 新しいピンク色の画像の位置: 0x00400000
HSEファームウェアを更新するための例コードがあれば教えてもらえますか?
#define HSE_SRV_RSP_VERIFY_FAILED ((hseSrvResponse_t)0x55A5A164UL)