シングルビット エラーの場合は SRAM ISR ( ERM0_ISR_Handler ) をヒットできますが、マルチビット エラーの場合はハンドラーが呼び出されません。
私の理解する限りでは、修正不可能なエラー イベント情報 はマルチビット エラーに対応するのでしょうか?
SR0 にSRAM の修正不可能なエラー イベント ビットが設定されていることがわかりますが、ISR はトリガーされていません。
マルチビット エラー ISR を呼び出す方法を教えてください。
CR0レジスタのSRAM0の割り込み通知も有効にしました
こんにちは@Anitha7さん、
修正できない障害は CM7 障害例外をトリガーします。
リンクした例では、Bus_Fault 例外を有効にしましたが、ERM ハンドラーの優先度よりも低い優先度にして、ERM ハンドラーが最初に呼び出されるSOにしました。
これがあなたのプロジェクトの問題である可能性があると思います。
また、VTOR ポインターを再確認し、NVIC で ERM 割り込みが有効になっていることを確認します。NVIC で割り込みが保留中になっていることに気付くかもしれません。
こんにちは@danielmartynek
マルチビットとは、RMに従って2ビットを意味します。
ご参照のとおり、システムを SRAM0 用に構成しました。SROレジスタの対応するビットを設定することにより、修正不可能なECC障害(NEC0)が発生します。
NEC0 の割り込み通知と、対応する CR0 レジスタの単一ビット イベント情報 を有効にしました。
修正不可能な ECC 障害が発生すると、制御はシステム コール機能に移行し、リセットを実行するまでソフトウェアは動作しなくなります。ERM_1_ハンドラー 追加したにもかかわらず、トリガーされません。単一ビットエラーの場合、 ERM_0_ハンドラー 正しくトリガーされます。
確実にするために何をすべきか ERM_1_ハンドラー マルチビット (訂正不可能な) ECC エラーが発生したときに呼び出されますか?
また、確認ですが、マルチビット エラー (ダブル ビット エラー) は常に修正不可能な ECC 障害を示しているのでしょうか?
修正不可能なECCイベント情報が発生した後、ECUで通常モードでリセット実行を実行する必要があります。
こんにちは@Anitha7さん、
マルチビットエラーとはどういう意味ですか?
64 ビット (8 バイト) のデータに対して 1 つの 8 ビット チェックサムがあるため、すべての可能性のある ECC エラーを検出することはできません。ECC SECDED(単一エラー訂正、二重エラー検出)があります。
よろしくお願いいたします。
ダニエル
こんにちは@danielmartynek
VTOR テーブルは、SRAM0 が修正不可能な ECC 障害を注入している間のみ、フラッシュ メモリを指します。
参照サンプルコードに従って、システムを SRAM0 用に構成しました。SRO レジスタの対応するビットを設定することにより、修正不可能な ECC 障害が発生します。
対応するCR0レジスタで割り込み通知を有効にしました。
修正不可能な ECC 障害が発生すると、制御はシステム コール関数に移行し、リセットを実行するまでソフトウェアは動作しなくなります。ERM_1_Handlerを追加したにもかかわらず、トリガーされません。シングルビット エラーの場合、 ERM_0_Handlerが正しくトリガーされます。
マルチビット (修正不可能な) ECC エラーが発生したときにERM_1_Handlerが呼び出されるようにするにはどうすればよいですか?
また、確認ですが、マルチビット エラーは常に修正不可能な ECC 障害を示しているのでしょうか?
こんにちは@Anitha7さん、
SRAM0 に修正不可能なエラー注入を追加して例を更新しました。
アプリケーションで VTOR レジスタを読み取ることができますか?
修正不可能な ECC 障害をメモリに注入する場合、割り込みベクター テーブルは SRAM0 内に存在してはなりません。
そうしないと、ECC 障害によりフェッチ中にベクター テーブルが破損し、別の障害例外が発生します。
よろしくお願いいたします。
ダニエル