NXPの皆様へ
S32K-RM.pdf
37.5.8.4 同時フラッシュ操作の許可
上記の図に基づくと、CSEcとP-Flashの読み取り操作の間には**競合状態**が存在します(赤い枠で示されています)。
したがって、P-Flashから`CSEC_DRV_VerifyMAC`を呼び出す場合、以下の回避策を適用すべきでしょうか?
1. `CSEC_DRV_VerifyMAC` を呼び出す前に割り込みを無効にし、関数が戻った後に割り込みを再度有効にします。
2. **CSEC_DRV_VerifyMAC` を RAM に移動して実行します**(つまり、P-Flash ではなく RAM から関数を実行します)。
こんにちは、 @Prophet_Samuel さん
同様のことが既にここで議論されています。
割り込みを無効化するだけで十分です。なぜなら、SDKのCSEcドライバーはすでにRAMから重要な部分のコードを実行しているからです。
そしてもう一つ重要な点があります。CSEC_DRV_VerifyMACとCSEC_DRV_VerifyMACAddrMode(およびCSEC_DRV_GenerateMACとCSEC_DRV_GenerateMACAddrMode)には違いがあります。
ポインター方式のみ(これはS32K1のリファレンスマニュアルの用語です)。SDK APIは「addrモード」を使用します)は、実行中にプログラムのフラッシュアクセスを許可しません。通常の非ポインタ方法にはそのような制限はありません。
よろしくお願いいたします。
ルーカス