私はRTD V4.0.0でS32 SAF V1.0.4のサンプルコードを試してみました
1.システムは、sCheck xbicテスト(SWT0カウントテストの次のテスト)中にISR_SWT0を入力します(スクリーンショット1を参照してください)
2. SWT0テストにブレークポイントを追加しようとしています。すべてのカウントが通過しました(スクリーンショット2)。 ただし、SWT0のアンインストール後にトリガーされたISRを確認してください(スクリーンショット3)
何か提案があれば聞いてもいいですか?
スクリーンショット1
スクリーンショット2
スクリーンショット3
Hi RadoslavB
私の営業サポートチームから、RTM 1.0.2 以降の SWT0 のバグがあると言われました、および RTM 1.0.4修正されていません。
あなたの助けをありがとう。
こんにちはSifan、
デバッグセッション中にセットアップを確認する必要があります。
デバッグセッションを手配できるように、NXPセールスフォースシステムを介して私に連絡してください。
Kind Regards,
Radoslav
Hi RadoslavB
1.はい、デモの例であり、構成では変更されません。startup & ld ファイルが IAR 形式に更新されました
2.最初の行にブレークポインタSWT0_ISRを追加しようとしましたが、再度再起動します& これは、ISRハンドラがないためSWT0タイムアウトが原因であるようです(ブレークポイントで停止します
3.トラップにぶら下がっているとき、WENはゼロSWT0_ISR。
4. EB経由でSWT0チェックを無効にしようとしましたが、システムがSWT0 ISRに入りません。
こんにちはSifan、
私の理解が正しければ、SAFデモの例を実行していますが、コードや構成を変更しましたか?
私の側では、デモの例でS32K344 SWT0ハンドラは予想通りテスト中に一度だけトリガーされます。私は常にFRZ = 0を持っています。
SWT0ハンドラ内にブレークポイントを設定できる場合、最初に意図的なブレークストップは、forループ中のsCheck_Swt_CounterTestRun()の実行中に行う必要があります。SWT0 は Check_Swt_CounterBitCycle() 内で有効または無効になるため、その部分以外では SWT IRQ はトリガーされません。
WENビットが本当にゼロになっているか、SWT0割り込みルーチンを離れた後もSWT0割り込み保留ビットが設定されているかを確認できます。
敬具
ラドスラフ
Hi RadoslavB
1. SWT0はテスト前に無効になります。また、問題が発生したときには無効になります。
2. AIPS_SLOW_CLK周波数は40Mです。
3. はい、FRZビットはSAF Demo V1.0.4と同じ0に設定されています。デバッガなしで、またはブレークポイントなしで実行しようとすると、システムはSWT0 ISRの「whileトラップ」でもハングします。
こんにちはSifan、
sCheckは、ドライブサイクルごとに1回だけテストを実行するだけISO26262ため、起動とランタイム/シャットダウンの両方で実行する必要はありません。
テストの前に、SWT0 CRレジスタが本当にディスエーブルになっているかどうか確認していただけますか?
SBAF bootrom は、Boot Configuration Word のビット APP_SWT_INIT で SWT0 が有効になっている場合、SWT0 を有効にするためです。SAF Demoは起動時にSWT0を無効にする必要がありますが、再確認してください。
sCheck Tresosで選択したSTMインスタンスが、RTD MCUドライバで設定されているものと本当に同じかどうかを確認してください
また、RTD MCU(CGM0_MUX0)のAIPS_SLOW_CLK周波数も確認してください。
SWT0 をディスエーブルにしているときには、割り込みをトリガーしないでください (テスト前に実際にディスエーブルになっていた場合)。
編集:
SAF Demoの起動からSWT0設定を使用している場合、デバッグ・ブレーク中でもSWT0が動作していることを意味するFZRビットseが0になっているため、sCheckリストア機能の前にブレークポイントがあると、デバッグを続けるとすぐにタイマが切れて割り込みが発生することがあります。
テスト目的で、図に示すように値を変更することにより、起動時にビット設定を 1 に手動で変更できます。
または、RTD WDG 設定と、示されているオプションをオフにして使用します。
ただし、量産コードでは、FRZ ビット se を 0 にする必要がありますが、これは NXP が推奨する安全構成であるため、sBoot モジュールによってもチェックされます。
Kind Regards,
Radoslav
Hi RadoslavB
1. SWT0 テストを Starup & Runtime として実行しています
2.これは、毎回100%発生していないことを保証します。そのため、スタートアップは成功する可能性がありますが、実行時には常に続行テストの下でISRトラップにハングします。
3.SWT0 を有効にしていません。それを Up & Running に設定しません。ランタイムでテストするだけです continue test.
SWTの無効化(sCheck swtカウントテストを行った場合)とSWT割り込みが同時に来ることが原因かと思います。S32Kは割り込みを処理する前にISRをアンインストールする時間がほとんどありません。
こんにちはSifan、
SWT0テストをStarupまたはRuntime/Shutdownとして実行していますか?
スタートアップテストの場合、sCheckはSWTを復元します。CRレジスタであるため、SWT0が無効になっている場合は、テスト後にも無効にし、割り込みをトリガーしないようにする必要があります。
ランタイム/シャットダウンでSWT0テストを実行している場合は、SWT0を構成済みであるため、SWT0を更新して実行している必要があるため、SWT0を更新するためのハンドラも実装しているはずです。この場合は、割り込みハンドラを更新し、whileトラップをSWT0をリフレッシュするルーチンに置き換えてください。
敬具
ラドスラフ