• No : 13952
  • 公開日時 : 2023/02/22 11:41
  • 更新日時 : 2023/09/07 15:34
  • 印刷

【NXP:LPC】 LPC546xxのECRPでFlashを読み出せないようにする方法について

LPC546xxの内蔵フラッシュの内容をSWDとISPモードの両方で読み出せないようにする必要があります。
但し、ISPモードでファームウェアを更新するため、ECRPのSECTOR PROTECTには0x3Fを設定したいです。


ユーザーマニュアルに記載されている内容からECRP(0x0000 0020)に0x1A83Fを設定すれば、SWDがディセーブルになるため、ISPモードでも内蔵フラッシュの内容を読み出せないはずです。
しかし、実際にECRPに0x1A83Fを設定するとSWDで接続できなくなるのですが、ISPモードでは読み出せます。
どの値をECRPに設定すれば、SWDとISPモードの両方でSWDとISPモードの両方で読み出せないようになりますか。

 

カテゴリー : 

回答

LPC546xxシリーズのユーザーマニュアル(Rev. 2.4, 11 November 2019)の記載が間違っており、SWDをディセーブルに設定してもECRPのSECTOR PROTECTに0x3Fを設定すると、ISPモードで内蔵フラッシュの内容を読み出すことができます。
SWDとISPモードの両方で読み出せないようにするためには、ECRPに0x0001A830~0x0001A83Eを設定する必要があります。
理由は、ECRPが書き込まれているセクタ0を保護する必要があるためです。また、ISPモードで全セクタを消去するとファームウェアを書き換えることが可能になるためです。

ISPモードで全セクタを消去せずにファームウェアを書き換えるためには、次のような方法があります。
・ECRPに0x0001A83Eを設定
・セクタ0を消去できないため、セクタ1以降にユーザーアプリケーションを書き込む
・セクタ0には、セクタ1以降に書き込まれたユーザーアプリケーションを起動するプログラムを書き込む
 
プログラムの詳細に関しては、次のFAQを参照してください。