2419094_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2419094_ja-JP

2419094_ja-JP

emcem で提供されるインターフェースを用いてキャッシュ位置へのフォールトインジェクション

チームの皆さん、こんにちは。

以下のクエリに追加の質問があります(eMcem_setupinjectionChannelの引数としてどの値を選ぶべきか - NXPコミュニティ

キャッシュの位置に2ビットのフォルトを注入する必要がありますが、リファレンス・マニュアルに記載されている通り意味がよくわからず、私たちはNXP s32K394マイクロコントローラを使用しています。

Rudved_3366_0-1791374596002.png

キャッシュに障害を注入し、以下のような2ビットのエラーをキャッシュに取得するために、以下の関数を2回呼び出す必要があります。

Rudved_3366_1-1791374706513.png

もし私のやり方が間違っているなら、このインジェクションのやり方の例コードを教えていただけませんか?現在、私たちのプロジェクトではSAFパッケージを使っています。もしすでにこれらのフォールトインジェクションコードが存在するなら、SAFモジュールに提供されているメモリテストインターフェース(EIM)を使ってあらゆる種類のフォールトを注入するために参照すべきファイルを教えてください。


Re: Fault Injection to cache location using an interface provide in emcem

こんにちは、@Rudved_3366 さん。

このキャッシュインジェクションの例は見つかりませんでしたが、簡単に説明すると次のようになります。

CM7_0 Iキャッシュタグのダブルビットエラーを注入する前に、関連するIキャッシュエラーバンクエントリ(IEBRn)が利用可能でロック解除されていることを確認してください。

danielmartynek_0-1791448008505.png

手元にあるS32K344でテストしたところ、以下のデータを注入しました。

	if (eMcem_SetupInjectionChannel(EMCEM_EIM_CH_3, 1, 2 ) != (Std_ReturnType)E_OK)
	{
		while (1U);
	}
	if (eMcem_InjectFault(EMCEM_EIM_CH_3) != (Std_ReturnType)E_OK)
	{
		while (1U);
	}

次に、ハンドラー内でEIMを無効にします。

void BusFault_Handler(void)
{
if(IP_EIM->EIMCR & EIM_EIMCR_GEIEN_MASK)
{
IP_EIM->EIMCR = EIM_EIMCR_GEIEN(0);
}
}

リカバリコード(VTORが参照するベクターテーブル、例外ハンドラ、およびハンドラが呼び出すものなど)はキャッシュ可能な領域に含めてはならないことに注意してください。リカバリ中にエラーが再度注入されることを避けるためです。

次に、IEBRレジスタを再度読み込み、0を書き込んでクリアします。

danielmartynek_2-1791449944755.png

キャッシュを無効にするには、APIを呼び出してください。


よろしくお願いいたします。

ダニエル




Re: Fault Injection to cache location using an interface provide in emcem

こんにちは、 @danielmartynek さん、

上記のクエリも確認していただけますか?これはキャッシュアドレスへのフォールト注入に関するものです。

タグ(1)
評価なし
バージョン履歴
最終更新日:
11 時間前
更新者: