Silicon Labs EFM32:Lock Bit(LB)ページとは何ですか?(DLW, ULW, MLW, PLW)
Lock Bit(LB)ページは、ユーザコード領域の外に配置された領域です。フラッシュメモリやUser Dataに対するリード/ライト/イレースを制限する機能を司っています。このLockBitを活用することで、悪意のある不正アクセスを回避することができます。
とは何ですか?__1.png)
Lock Bitは、DLW, ULW, MLW, PLWの4つの制御ビットで構成されています。
(1)Debug Lock Word (DLW) と、AAPレジスタによるデバイス消去
DLWは、デバッグピンとEFM32メモリの間のゲートに相当します。このゲートは、EFM32に書き込んだユーザファームウェアから、或いは外部のデバッグアダプタから、ロックすることが可能です。
ロックするには、ファームウェアもしくはデバッグアダプタから、0xF以外の値をDLW[3:0]にライトし、それからリセットを実行してください。いったんゲートがロックされると、フラッシュメモリは読み出せなくなります。AAPレジスタのみがアクセス可能です。
デバッグアダプタのみがゲートをアンロックすることができます。といってもデバッグアダプタはDLWに直接アクセスする訳ではなく、AAPレジスタを介してデバイス消去を行います。この際、以下が消去対象になります。
- フラッシュメモリのメインブロック ⇒消去されます
- UD(User Data)ページとDI(Device Information)ページ ⇒消去されません
- 全てのLock Bit(DWL, ULW含む) ⇒消去されます
- 全てのSRAM ⇒消去されます
とは何ですか?2__1.png)
(2)User data Lock Word (ULW)
ULWは、User Dataが、ライト/イレースされるのを妨げます。もしデバッグアダプタでアンロックした場合にも、User Dataは消去されずに読み出すことができます。
APPレジスタによるデバイス消去を行った場合には、ULWはリセットされます(ULW[0]=1)。User Dataは保持され、アクセス可能です。
(3)Page Lock Words (PLW)
PLWは、フラッシュメモリのメインブロックの特定ページが、ライト/イレースされるのを妨げます。リードに対してはプロテクトされていませんので、リードは行えます。
APPレジスタによるデバイス消去を行った場合には、PLWはリセットされます(PLW[n]=1)。フラッシュメモリのメインブロックは、PLWの値に依らず消去されます。
(4)Mass erase Lock Word (MLW)
ファームウェアによってフラッシュメモリを全消去することが可能になっています。それを防ぐにはMLW[0]をクリアしておきます。(MLW[0]=0)
APPレジスタによるデバイス消去を行った場合には、MLWはリセットされます(MLW[0]=1)。フラッシュメモリのメインブロックは、MLWの値に依らず消去されます。
SiliconLabsのコミュニティサイトも併せてご確認ください。