フラッシュメモリをロックダウンするためのパスワード保護の有効化 - KBA227884 - Community Translated (JA)
- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
Community Translated by HiOm_1802421 Version: **
Translation - English: Enable Password Protection to Lock Down Flash Memory - KBA227884
質問:
サイプレスのフラッシュメモリS25FS512Sを使用しています。ユーザーがメモリアレイの消去/プログラムするのを防ぐために、メモリアレイを保護するパスワードを設定する必要があります。管理者は、ソフトウェアを更新するために、必要に応じてメモリの保護を解除するパスワードを入力できます。パスワード保護機能を有効にする方法を教えてください。
回答:
パスワード保護は、サイプレスの高度なセクタ保護 (ASP) 機能の一部です。ASP機能は、フラッシュメモリアレイを保護するための包括的なソリューションを提供します。ASPの詳細は、AN98551 - Advanced Sector Protection (ASP) in Cypress Quad SPI, Octal SPI, and HyperFlash Device Fa... を参照してください。
このドキュメントはFS-Sファミリを例として、ASPパスワード保護モードの有効化の実践的な実装のヒントを提供します。他のサイプレス フラッシュ ファミリの場合、手順は同じですが、コマンドとレジスタは異なる場合があります。コマンドとレジスタの詳細は、それぞれのフラッシュ ファミリのデータシートを参照してください。
パスワード保護機能を有効にすると、OTPレジスタが設定されます。一度設定すると、元に戻せません。パスワード保護機能を有効にする前に、以下を行ってください。(アプリケーションに該当する場合)
- 必要に応じて、CR1NV[5, 3:2]、CR2NV、CR3NV、およびCR4NVのOTP構成ビットをプログラムしてください。
- 必要に応じて、セキュア シリコン領域 (OTPエリア) をプログラムしてください。
- 必要に応じて、PPBPコマンドを介してPPBビットをプログラムしてください。
- DDR読み出しコマンドで使用する場合は、NVDLRをプログラムしてください。
パスワード保護機能を有効にするには、以下を行ってください。
- パスワード プログラム コマンド (PASSP E8h) を使用してパスワード レジスタへ64ビットパスワードをプログラムしてください。
- PASSPコマンドの前にWRENコマンドが必要です。
- ポーリング完了 (WIP) が必要です。(他の不揮発性レジスタのプログラムと同様)
FS512Sデータシートの「Password Register」セクションを参照してください。
- パスワードプログラムが完了した後、ステップ1でプログラムしたパスワードが正しいかをパスワード (PASSRD E7h) を読み出して検証してください。
- これは、パスワード保護モードを有効にする前に行う必要があります。パスワード保護モードが有効になると、もうパスワードは読めなくなります。
- アプリケーションが64ビットのパスワードを「記憶」していることを確認してください。パスワードを紛失しても、パスワード レジスタから取り戻すことはできません。
- ASPPコマンド (2Fh) またはWRARコマンド (71h) を使用して、ASPレジスタ (ASPR) をFFFBh (ASPR[2:1] = 01b) にプログラムしてください。
例A:セクタを保護し、パスワード保護を有効にして、メモリアレイをロックダウンするコマンドのシーケンス
- WRENコマンド
- PPBPコマンド (FDh) または4PPBPコマンド (E3h)。アプリケーションで使用しているアドレスモードに依存します。このコマンドのアドレスは、保護するセクタのアドレスです。
- PPBP操作完了をWIPビットで確認するため、ステータス レジスタを読み出してください。(通常のページプログラム操作と同じ)
- 保護したいすべてのセクタを保護するために、ステップ1から3を繰り返してください。
- WRENコマンド
- PLBWRコマンド (A6h) でPPB Lockビットを0 (ロック) にクリアします。
- PLBWR操作完了をWIPビットで確認するため、ステータス レジスタを読み出してください。
- パスワード保護が有効になるとPPB Lockビットは電源投入またはハードウェア リセットごとにデフォルトで「0」にクリアされるため、ステップ5-7は省略できます。
- WRENコマンド
- PASSPコマンド (E8h) で64ビットパスワードをプログラムします。
- PASSP操作完了をWIPビットで確認するため、ステータス レジスタを読み出してください。
- PASSRDコマンド (E7h) でプログラムした64ビットパスワードが正しいか、読み出して検証してください。
- WRENコマンド
- ASPPコマンド (2Fh) またはWRARコマンド (71h) でASPレジスタ (ASPR) を FFFBh (ASPR[2:1] = 10b) にプログラムします。
- ASPP操作完了をWIPビットで確認するため、ステータス レジスタ1を読み出してください。
- 電源再投入またはハードウェアリセットを行ってください。PPB Lockビットは「0」にクリアされPPBビットをロックし、保護されたセクタはロックダウンされます。パスワード保護が有効になった直後にこのステップを実行し、電源再投入かハードウェアをリセットする前にPPBビットを変更する場合、ステップ5-7は不要です。
例B:保護されたセクタをロック解除してメモリアレイを更新するコマンドのシーケンス
- PPBRDコマンド (FCh) または4PPBRDコマンド (E2h) でPPB値を読み出します。このコマンドで使用するアドレスは、PPBが関連付けられているセクタ アドレスです。たとえば、アドレスが0x00000000の場合、読み出しPPBはセクタ0です。(0x00 - 保護、0xFF - 保護解除)
- すべてのセクタに対してステップ1を繰り返して、すべてのセクタの保護状態をRAMに記録してください。
- PASSUコマンド (E9h)
- PASSU操作完了をWIPビットで確認するため、ステータス レジスタ1を読み出してください。
- PASSUコマンドが正しく完了すると、PPB Lockビットが自動で「1」に変更されます。
- WRENコマンド
- PPBEコマンド (E4h) でPPBアレイ全体 (すべてのPPB) を0xFFに消去します (すべてのセクタ保護のロックを解除します)。(PPBアレイは不揮発性アレイであるため、個々のPPBを0x00から0xFFに変更する方法はありません)
- 対象のセクタをデータ更新 (消去/プログラム) してください。
- ステップ2でRAMに記録されたPPB値に従い、PPBを0x00に書き戻してください。(例Aのステップ1-3)
- PPB Lockビットを「0」にクリアしてください (例Aのステップ5-7)。もしくは、単純に電源再投入またはハードウェア リセットしてください。