私はS32K146を使用しています。コールドスタート時には、関連するシンドロームビットを初期化するために、すべてのSRAMに32ビット値0を書き込みます。
SRAMの位置を読み取り、ECCが1ビットの破損を検出すると、ECCシステムは修正値をMCUに返し、同時にSRAMの位置も書き込みで修正すると思っていました。職場の別の人が「修正された値はMCUに届けられるが、反転したビットは書き直されるまでSRAMに残る」と言っていました。
どちらが正しいのか?相手側が修正値を取得した場合、その修正値をどこから取得してSRAMに書き戻せばよいのでしょうか?ERMシングルビットエラー割り込みを使用するのでしょうか?EARnレジスタは故障したSRAMアドレスを示しているのに、修正された値のEDRn(?)レジスタは示していません。
いずれにしても、1ビットエラーが検出された場合、SRAMの位置をどのように修正すればよいのかを知りたいだけです。位置情報を読み取るだけで自動的に処理されることを期待しています。もしそうなら、単一ビットの訂正は存在しなかったかのように無視し、好奇心で割り込みで修正総数を数えるだけにできます。これにより、CBIT活動の一環として「スライスで全てSRAMを読み取る」ことができ、2回目の破損が起きて二重ビットの回復不能エラーが発生する前に、1ビットのエラーを自動的に比較的迅速に修正できます。
S32K1xxのリファレンスマニュアルの32節「PRAMC」では自動修正SRAMが言及されているのに気づきましたが、PRAMCはS32K146では利用できません。35.1.3.1項では、シングルビットECCエラーは自動的に修正されると記載されていますが、これはNVMに関するもので、SRAMに関するものではありません。S32K14xの**リファレンス・マニュアル**には、1ビットエラーでSRAMの位置を読み取ると、補正された値が**MCU**に戻り、補正された値がSRAMの場所に書き戻されるという明確な記述は見つかりませんでした。そのようなリファレンス・マニュアルのセクションはありますか?
AN12522 rev 0のセクション2.3に、検出時間と反応時間について記載されていることに気づきました。この写真は単一ビットの故障(稲妻ARROW)を示すために撮っていますが、検出されるのはしばらくしてから(故障検出時間、その場所の最初の読み取り時)で、その後修正される(故障反応時間)ということです。この反応(補正)がMCUにとって「目に見えない」形で行われているのか、つまりSRAMの位置を自動的に固定(書き込み)し、固定値をデータバス上でMCUに戻すのかは明確ではありません。
よろしくお願いします。
ダレン