以下の状況で、MCU がどのような状態にあり、どのようなCASEが発生するのかを質問します。
興味深いのは、特定の関数を Over(Trace32) で実行すると問題が発生しますが、Step(Trace32) で実行すると問題が発生しないことです。
(MCUには正常に電源が供給されています。)
皆さんこんにちは
現在、私たちのプロジェクトでも同じ種類の問題に直面しています。CRC および C40 モジュールは使用されませんが、このトピックで説明されている他のすべてはこのCASEに有効です。
@kjy106906 、問題は解決しましたか?
編集: @danielmartynek 、このトピック以降、この種の問題が解決されたと聞いたことがありますか?
ご回答ありがとうございます
こんにちは@kjy106906さん、
あなたはこう書いています。「不思議なことに、不要なコードを数行追加しても(デバッグのために while ステートメントを追加したり、グローバル変数を追加したりしても)、問題は再現しません。」
レジスタまたは SRAM メモリに書き込む場合、すべての操作が適切にシリアル化されるようにそれを読み戻すことはできますか?
RM、rev.8、セクション3.8 メモリ操作のシリアル化。
よろしくお願いいたします。
ダニエル
ありがとう@danielmartynek
C40 ライブラリも使用しています。(C40_Ip_読み取り)
ただし、エラーは返されません (成功が返されます)。
DFlash を読み込むときに、ドライバは使いますか?
ドライバはエラーをチェックするため:
ありがとうございました。
ダニエル
ありがとう@danielmartynek
NXPについてセキュリティ上の理由により、プロジェクト全体を共有することはできません。
エルフを共有しても、現在は私のボード上で動作します。
お使いの環境ではテストができない可能性があります。
簡易エルフの共有もできません。
不思議なことに、不要なコードを数行追加しても(デバッグ用の while ステートメントの追加、グローバル変数の追加など)、問題は再現されません。
現在、この問題は 5 つの BMS ボードで発生しています。
すべては Dataflash に関連しています。
上記の現象は、データフラッシュ領域の破損やその他のエラーにより発生した可能性がありますか?
こんにちは@kjy106906さん、
私の側でテストしてみたいと思います。
CANプロジェクトを共有してもらえますか?
または、 .elfを使用した簡略化されたバージョンが望ましい問題を再現CANか?
ここで共有したくない場合は、チケットを作成してください。
ありがとうございました。
ダニエル
ありがとう@danielmartynek
現在、Vector Microsarを使用しています
MCU は OS HAL Fault (例外) を発生しません。
MCU 例外が入力されると、デバッガーで MCU が対応するコードにジャンプするのが確認できると思いますが、現在は Trace32 でバス エラーが出力されています。
したがって、例外は発生しなかったようです。
他に確認すべき点があればお知らせください。
Reset_b も VDD_HA_A も Low に下がりません。
この問題により、Trace32 のない BMS のみの状態で SBC が無限にリセットされます。この問題は Dataflash Init で発生するため、MCU が動作せず、SBC の無限リセットが発生します。
SO、これは Lauterbach の問題でもありません。
それは私たちにとって重要な問題です。他に確認すべき点があればお知らせください。
こんにちは@kjy106906さん、
SO、コアは障害例外を検出せず、HardFault_Handler() には移動しないことがわかります。
CAN reset_b ピンを監視できますか?アプリケーションは実行されていますか?
もしSOなら、それは Lauterbach の問題である可能性があります。
BR、ダニエル
よろしくお願い申し上げます。
エラー ハンドラーにブレークを設定しても、ブレークは発生せず、MCU は対応する状態になります。
MCU がどのような状態にあり、その状態になった理由は何なのかが気になります。
こんにちは@kjy106906さん、
障害例外に関する詳細情報をご覧ください。
以下のドキュメントを参照してください。
https://community.nxp.com/t5/S32K-Knowledge-Base/S32K14x の障害処理/ta-p/1114447
BFARVALID = 1 の場合、構成可能な障害ステータス レジスタ (CSFR) とバス障害アドレス レジスタ (BFAR) を読み取ります。スタック上の障害命令の PC アドレスを見つけることができるはずです。
よろしくお願いいたします。
ダニエル
いつもありがとう@danielmartynek
その関数は RTD 関数ではなく、単純な計算関数です。
特定のアドレスの C40 読み取りデータの CRC を計算するときに問題が発生します。
これは読み取り時ではなく、CRC 計算機能の実行時に発生します。
MCU: S32K312、RTDバージョン: 2.0.0
MCU がどのような状態にあり、その状態になった理由は何なのかが気になります。
こんにちは@kjy106906さん、
もっと具体的に教えていただけますか?
ここではどのような機能を踏むのでしょうか?
使用する場合、CAN MCU と RTD のバージョンも指定できますか?
ありがとうございました。
BR、ダニエル
こんにちは、
ようやく、弊社側の問題の原因を特定することができました。
これは、分岐投機に関連するNXPのエラータERR052460に関連していました。以下のコードスニペットがこの挙動を修正します。
// NXP ERR052460 Workaround: Cortex-M7: A hang scenario can occur when a reserved read locked memory region is accessed by application cores
*((uint32_t*) 0x402AC0F0) = 0x1CB0499Du;
*((uint32_t*) 0x402AC0F0) = 0xB9920D38u;これがあなたの側でも全く同じ根本原因かどうかは分かりませんが(私はNXPの社員ではありませんし、どうせ彼らは返答してくれないでしょうから)、確認してみる価値はあると思います。
同じ質問ですが、根本原因は特定できましたか?
この問題はサイズ最適化を行った場合にも発生し、最適化を行わない場合は解消されます。