こんにちは、サポート
お客様は現在、SCST_M7_S32K3_RFP_1.0.6 パッケージを S32K314 デバイス (Cortex-M7) に統合しています。
統合中に、関数 m7_scst_execute_core_tests() を 100 ミリ秒ごとに定期的に呼び出すと、UsageFault 例外が発生します。
このプロジェクトでは MPU は有効化されておらず、使用もされていないことに注意してください。
この問題の考えられる根本原因を分析し、SCST コア テストの正しい使用方法と統合についてアドバイスをいただけませんか?
1) 100msごとにm7_scst_execute_core_tests()を呼び出す
2) 使用エラー例外にジャンプ
こんにちは、マーカス。
SCST は、障害が M7 コアによって検出され、例外ハンドラに到達したことを確認するために、いくつかの障害を意図的にトリガーします。
UsageFault がユーザー アプリケーションの UsageFault ハンドラーに到達しているか、または SCST によって処理されているかを確認してください。(SCSTが対応いたします)
Cortex M7 にはいくつかの OnChip トリガーがあり、デバッガー設定で構成できます (Trace32 の例)。
m7_scst_execute_core_tests() 関数が停止することなく実行されるようにするには、図でチェックされていないトリガーを無効にする必要があります。図でチェックされていないトリガーを無効にしてみてください。
それでも問題が解決しない場合は、どのテスト (テスト インデックス) が失敗しているかをお知らせください。
ありがとう。
よろしくお願いします
ミレク
こんにちは、ミレックさん。
すべてのオンチップ トリガー オプションを無効にすると、数回の実行後にシステムが関数 m7_scst_exception_bus_fault_test_ISR_addr1 内で無限ループに陥ることが確認されました。
この動作を分析し、考えられる根本原因についてアドバイスをいただけませんか?
よろしくお願いいたします。
マーカス
こんにちは、マーカス。
M7_RESERVED_ADDR 定義に格納されているアドレスは、正確な BusFault 例外と不正確な BusFault 例外の両方をトリガーするために使用されます。アドレスはデバイスのシステムメモリマップから選択されました
予約済みスペースについては、SCST ユーザー マニュアル ドキュメントの -DM7_DEVICE_RESERVED_ADDR プリプロセッサ マクロ定義を参照してください。
アプリケーションでは、このメモリが MPU などによって保護されていないことを確認する必要があることに注意してください。このアドレスが保護されている場合は、デバイスの予約済みアドレス空間から別のアドレスを選択する必要があります。
チェックしてください:
1.140 行目の LDR 命令 (ラベル m7_scst_exception_bus_fault_test_ISR_addr1) がデータを正常にロードしたかどうか。(そうではないはずです)
2.LDR 命令の実行後に保留中の例外があるかどうか。
3.SCST が Thread モードから呼び出されるか、ハンドラー モードから呼び出されるかを指定します。
4.ハンドラーからの場合は、SCST を実行するハンドラーよりも、バス障害例外の優先度が高い (優先度番号が低い) ことを確認してください。
これらのチェックの結果は調査に役立ちます。
ありがとう!
ミレク
こんにちは、ミレックさん。
お客様からのフィードバックはこちらをご覧ください:
===================
ポイント 1. DM7_DEVICE_RESERVED_ADDR = 0x460000 を予約します。
MPUも無効にします。
R3 のアドレスから R2 にデータをロードできませんでした。
アドレス 0x460000 のメモリをダンプしようとしましたが、その値は 0xFFFFFFFF です。
これは、R3 の値が R2 にコピーされたことを意味します。
ポイント2:例外にブレークポイントを設定しようとしましたが、例外は発生しませんでした
ポイント3:Threadモード特権レベルでm7_scst_execute_core_tests()を呼び出す
ご確認ください
よろしくお願いいたします。
マーカス
こんにちは、マーカス。
新しい情報を共有していただきありがとうございます。
すべてのテストを個別に実行し、それぞれを確認してください。
- テストは正しい署名を返しますか?
- そうでない場合、返される署名は何ですか?
- ラベルm7_scst_pass_control_to_alien_ISRに到達したことがありますか?
- 実行が停止した場合、コードのどの行で停止しますか?
SCST 実行を中断している割り込み/例外についての詳細情報も提供していただけますか?
また、SCST 実行時の BASEPRI、SHPR1、SHPR2、SHPR3 の値は何ですか?
これが今後の調査に役立つことを願います。
ありがとう!
ミレク