2374197_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2374197_ja-JP

2374197_ja-JP

S32K311 HSE — 乱数生成サービス (RNG) が動作しない

NXPチームの皆様、こんにちは。

S32K3

ハードウェアとソフトウェア:

  • MCU: NXP S32K311、Cortex-M7 + HSE-Bサブシステム
  • HSE FW: 0.12.0 / 2.55.0 FULL_MEM STANDARD
  • MCAL: NXP RTD 6.0.0 (Crypto_43_HSE_TS_T40D34M60I0R0)
  • AUTOSARスタック:Vector MicroSAR R34、DaVinci 5.31.55 SP5
  • コンパイラ:GHS(グリーンヒルズ)
  • デバッガー: Lauterbach TRACE32

問題提起:

S32K311上でHSE乱数生成機能を動作させようとしています。HSEファームウェアの初期化に成功しました(hseStatus = 0x960 → INIT_OK | RNG_INIT_OK | HOST_DEBUGGER | CUST_SUPER_USER)。しかし、RNGサービスはどちらのアプローチでも失敗します。

アプローチ 1 — AUTOSAR Csm スタック ( Csm_RandomGenerate)経由

  • ドライバーがタイムアウトを返します
  • Lauterbachデバッガでは、MU0_MUB受信レジスタ(RR)にエラーコード0x55A5A26A = HSE_SRV_RSP_INVALID_ADDR (「アドレスパラメータが無効です」)が表示されます。

アプローチ2 — AUTOSARスタックをバイパスし、 Hse_Ip_ServiceRequest直接呼び出す:

  • 呼び出しはHSE_IP_SRV_RSP_NO_RESPONSE (タイムアウト、RR に応答なし) を返します
  • TSRビットはクリアされる(HSEがリクエストを消費した)が、RSRは決して設定されない

どちらの場合も、期待されるランダムデータは生成されない。

また、HSE_SRV_ID_FORMAT_KEY_CATALOGS も試しましたが (hseStatus の INSTALL_OK ビット 9 / 0x200 が設定されていないため)、同じタイムアウト動作を確認しました。

乱数生成器にキーフォーマットは本当に必要でしょうか?

MUベースアドレス: MU0_MUB = 0x4038C000。

観察

CSM(AUTOSAR)経由

Hse_Ipへの直接呼び出し経由

TSR(TR書き込み後)

ビットクリア

ビットクリア

RSR(投票中)

最終的に設定

設定されない(0のまま)

RR値

0x55A5A26A (無効なアドレス)

応答なし

ドライバーの返却

タイムアウト - 応答なし

タイムアウト - HSE_IP_SRV_RSP_NO_RESPONSE

hseStatus (FSR)

0x960

0x960


実行したトラブルシューティング手順:

  1. 検証済み hseStatus = 0x960 — HSE FW が正常に起動し、RNG エンジンが初期化され、ライフサイクルが CUST_SUPER_USER であることを確認しました。INSTALL_OK(ビット9)が設定されていないことを確認しました。
  2. バッファのアライメントの問題を排除しました。乱数出力バッファが4バイトアライメントされ、HSEがアクセスできないDTCM(0x20000000)ではなくSRAM(0x20400000領域)に配置されていることを確認しました。
  3. D-CACHE の一貫性を排除しました。Hse_Ip_ServiceRequest() の前に Cache_Ip_Clean() を追加し、後に Cache_Ip_Invalidate() を追加しました。ラウターバッハで検証したところ、データ(D:)とスーパーバイザデータ(SD:)のメモリビューの内容が同一であることが確認されました。つまり、キャッシュが原因で古いデータが発生しているわけではありません。
  4. チャネル割り当ての確認— 管理サービスにはチャネル 0 が使用され、一般サービスには Hse_Ip_GetFreeChannel() を介してチャネル 1+ が使用されることを確認しました。
  5. 記述子メモリをクリアしました— 古いメタデータを排除するために、フィールドにデータを入力する前にhseSrvDescriptor_t全体をゼロクリアするmemset()を追加しました。
  6. FormatKeyCatalogs の試行— INSTALL_OK が設定されていなかったため、Crypto_43_HSE_Init() の後の最初のサービスとして HSE_SRV_ID_FORMAT_KEY_CATALOGS を試行しました。同じタイムアウト動作が確認されました。
  7. また、 HSEサービス記述子が正しく動作するように、.mcal_bss_no_cacheableと.mcal_data_no_cacheableをキャッシュ不可のメモリ領域(MPUをキャッシュ不可に設定)に配置しました。記述子がキャッシュ可能なメモリにある場合、INVALID_ADDRが発生するのは想定されますか?

HSEユーザーマニュアルに従い、RNGジョブを実行するために必要なすべての手順を実行しました。しかし、HSEからは何の返答もありません。

トラブルシューティングの参考として、関連するデバッグスナップショットを添付いたしました。

この問題についてご確認いただき、解決策に関するご意見やご助言をお寄せいただけますようお願い申し上げます。


CC; @Shubham_MQ

 
Re: S32K311 HSE — Random Generate Service (RNG) not working

はい、HSEコアが応答していません。

参考までに、MU登録簿全体のスクリーンショットを添付しました。

デバッグ中に取得したGSRレジスタのスクリーンショットも再度共有します。

添付の登録内容をご確認いただき、ご意見や今後の対応に関するご提案をお知らせください。

Sapana_MQ_0-1780381025628.png


Re: S32K311 HSE — Random Generate Service (RNG) not working

私の理解が正しければ、HSEコアは全く応答しないということですね。GSR登録簿について調査していただけますか?

Re: S32K311 HSE — Random Generate Service (RNG) not working

クロック周波数はどのように設定しましたか?システムクロックとHSEクロック間の必要な比率を遵守していますか?必要に応じて、UTEST DCFクライアントをプログラムしたかどうか確認させてください。

davidtosenovjan_1-1780562728476.png

davidtosenovjan_0-1780562676583.png


Re: S32K311 HSE — Random Generate Service (RNG) not working

ご返信ありがとうございます。

UTEST DCFクライアントを確認したところ、新しいDCFレコードをプログラムする必要があるようです。デバッグ中に取得したDCFファイルの場所を示すスクリーンショットを添付しましたので、ご参照ください。

私の理解では、アドレス 0x1B000770 に新しいDCFレコードを書き込む必要があると考えています 。この理解が正しいかどうか、または私の理解が間違っている場合はご指摘いただけますでしょうか?


Sapana_MQ_0-1780911456146.png


Re: S32K311 HSE — Random Generate Service (RNG) not working

DCFレコードをプログラムした後、RNGジョブが動作するようになりました。サポートありがとうございます。

タグ(1)
評価なし
バージョン履歴
最終更新日:
金曜日
更新者: