ファームウェアS32K3_HSE_DemoExamples_1_0_0を使用してHSEをインストールした後、メモリをフルにインストールしました。
アプリケーション コードが動作しなくなりました。デバッグ モードでは、フラッシュにアクセスしようとすると致命的なエラーが発生する可能性があります。
HSE と連携するには、アプリケーションで何かを変更する必要がありますか?
HSE に乱数を生成させたいだけです。
こんにちは@ggreguer
HSE が稼働している場合、まだ CUST_DEL ライフサイクルであれば、サービス HSE_SRV_ID_ERASE_FW を使用できます。これにより、HSE ファームウェアと SYS_IMG が消去されるSO、HSE の観点からはほぼ「工場出荷時設定へのリセット」と同じになります。ほとんどと言うのは、OTP メモリである UTEST フラッシュにプログラムされたデータには影響しないからです。つまり、UTEST の HSE 機能フラグがプログラムされ、FULL_MEM ファームウェアがインストールされている場合、HSE 用に予約された領域は引き続き予約されます。AB_SWAP がインストールされている場合、UTEST の OTA フラグがプログラムされるSO、HSE FW 消去後も AB_SWAP ファームウェアの領域は予約されたままになります。SO、100% 工場出荷時の状態にリセットされるわけではありません。
HSE ファームウェアに問題があり起動できない場合は、ファームウェアを回復するか、SBAF でファームウェアを消去する必要があります。これは、ハンドシェイク メカニズムによって実行できます。残念ながら、この状況では他に方法はありません。
よろしくお願いいたします。
ルーカス
こんにちは@lukaszadrapa 、お元気ですか?これらのフラグをチェックして、何が起こっているのかさらに調査します。
一方、ロックしているこれらの MCU でマスター リセットを実行する方法はありますか?HSE からすべてを削除し、再び正常に動作させるには、工場出荷時設定にリセットする必要があります。ロックされているボードがいくつかあるのですが、本当に必要です。
HSE に何らかの問題がある場合 (間違ったクロック構成による致命的なエラー、HSE メモリ リソースの ECC エラーなど)、フラッシュが HSE に対してロックされているが、何らかのエラーのために操作が完了していない可能性があります。HSE GPR レジスタは 0x4039_C028、ビット 16 ~ 29 で確認できます (HSE ファームウェア リファレンス・マニュアル v2.6、表 143 を参照)。HSE_CONFIG_GPR3 のステータス ビット)。リセット後約 1 秒経過しても一部のビットが永続的に設定されている場合、HSE はシャットダウン モードになっている可能性があり、ハンドシェイク手順を開始する必要があります。HSE FWリファレンスマニュアルの「14.6.7 HSEファームウェアハンドシェイク」を参照してください。こちらにも説明を書きました:
https://community.nxp.com/t5/S32K/S32K3-HSE-ERR-GENERAL/mp/2072826/highlight/true#M47407
それでも解決しない場合は、具体的に何が問題なのかを詳しく教えていただく必要があります。
よろしくお願いいたします。
ルーカス
こんにちは@ggreguer
1. HSE がインストールされると、フラッシュの一部が HSE ファームウェア専用に割り当てられます。リファレンス・マニュアルの次の表を参照してください。
表199.HSE_Bファームウェア使用機能フラグが有効になっている場合の構成の詳細
表200。ABスワップ構成
https://www.nxp.com/webapp/Download?colCode=S32K3XXRM
表 199 は、実際には FULL_MEM がインストールされている場合のメモリの状態です。
たとえば、Pemicro デバッガーを使用する場合、インストールされているファームウェアに応じて適切なフラッシュ アルゴリズムを選択するのはユーザー次第です。このようなフラッシュ アルゴリズムは、予約済み領域へのアクセスを回避します。
Segger のツールはステータス レジスタに基づいてこれを自動的に実行すると思います。詳細については、Segger に直接お問い合わせください。
https://kb.segger.com/NXP_S32K3xx#HSE_activated
https://www.segger.com/support/technical-support/
2. HSE ファームウェアをインストールしたら、次の 2 つが必要になります。
- MU_0 の FSR レジスタの HSE_STATUS_INIT_OK フラグが設定されるまで待機する必要があります。その前に、HSE サービスをトリガーすることはCANません。たとえば、HSE DemoExamples には次のようなものがあります。
または、RTD の例では次のようになります。
- リセット後にクロックが初期化されている場合、PRTN0_CORE2_STAT レジスタの WFI ビットを待つ必要があります。このビットは、SBAF/HSE がアイドル状態であり、クロックを変更CANことを示します。HSE の実行中に HSE_CLK を変更することはできません。これにより、予期しない動作が発生する可能性があります。これは RTD ドライバの以前のバージョンでは行われず、ユーザーが行う必要がありました。現在、この問題は修正され、RTD 5.0.0 以降のクロック初期化関数に実装されています。
よろしくお願いいたします。
ルーカス
#こんにちは@lukaszadrapa
私はS32K3X4EVB-T172ボードで作業しており、HSEファームウェアをインストールしようとしています。
HSE ファームウェアのフラッシュは成功しましたが、アプリケーションは常に次の場所で停止します。
if (FALSE == checkHseFwFeatureFlagEnabled())
{
/* ここで止まります */
}
SO、HSE FW の初期化は続行されません。
UTEST領域(0x1B000080)をチェックしたところ、値0XFFFFFFFFが返されました。
私たちのプロジェクトとイメージを確認して、この問題の解決にご協力ください。
ありがとう