• No : 8306
  • 公開日時 : 2021/09/23 21:08
  • 印刷

【NXP:Kinetis】 Kinetis MCUのFlash Configurtion Fieldについて

Kinetis MCUのFlash Configurtion Fieldを考慮しないプログラムをフラッシュに書き込んだ後、デバッグもできず、フラッシュを書き換えることもできなくなりました。
復旧させることは可能でしょうか。
カテゴリー : 

回答

Kinetis MCUでは、0x0_0400~0x0_040FにFlash Configurtion Fieldがマッピングされています。
その中の0x0_040Cに配置されているFlash security byteは、次のビットフィールドがあります。
 ビット7-6 KEYEN:バックドアキーセキュリティイネーブル(10に設定したときのみイネーブル)
 ビット5-4 MEEN:全消去イネーブルビット(10に設定したときのみディセーブル、全消去不可)
 ビット3-2 FSLACC:工場セキュリティレベルアクセスコード(01と10に設定すると、工場(テスタ)でのフラッシュへのアクセス禁止)
 ビット1-0 SEC:フラッシュセキュリティ(10に設定したときのみ非セキュア状態、それ以外はセキュア状態)
 
セキュア状態では、デバッグポートなどの外部インターフェースからフラッシュやSRAMなどをアクセスできないため、フラッシュを書き換えることができません。
例えば、0x20や0x21をFlash security byteに書き込み、リセットした後は全消去不可のセキュア状態となりますので、デバッグポートなどの外部インターフェースからフラッシュを書き換えることができなくなります。ご注意ください。
全消去が可能な場合(MEENが10以外)は、全消去後にFlash security byteに0xFEを書き込むことでセキュア状態から非セキュア状態に移行させることができ、デバッグできるようになります。