フラッシュメモリをロックダウンするためのパスワード保護の有効化 - KBA227884 -  Community Translated (JA)

Version 2

    Community Translated by  HiOm_1802421 Expert      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 Families を参照してください。

     

    このドキュメントはFS-Sファミリを例として、ASPパスワード保護モードの有効化の実践的な実装のヒントを提供します。他のサイプレス フラッシュ ファミリの場合、手順は同じですが、コマンドとレジスタは異なる場合があります。コマンドとレジスタの詳細は、それぞれのフラッシュ ファミリ データシートを参照してください。

     

    パスワード保護機能を有効にすると、OTPレジスタが設定されます。一度設定すると、元に戻せません。パスワード保護機能を有効化する前に、次のことを行ってください。(アプリケーションに該当する場合)

     

    1. 必要に応じて、CR1NV[5, 3:2]、CR2NV、CR3NV、およびCR4NVのOTP構成ビットをプログラムしてください。
    2. 必要に応じて、セキュア シリコン領域 (OTPエリア) をプログラムしてください。
    3. 必要に応じて、PPBPコマンドを介してPPBビットをプログラムしてください。
    4. DDR読み出しコマンドで使用する場合は、NVDLRをプログラムしてください。

     

    パスワード保護機能を有効にするには、次の手順を行います。

    1. パスワード プログラム コマンド (PASSP E8h) を使用してパスワード レジスタへ64ビットパスワードをプログラムしてください。
      1. PASSPコマンドの前にWRENコマンドが必要です。
      2. 完了 (WIP) のポーリングが必要です。(他の不揮発性レジスタのプログラムと同じ)
          FS512Sデータシートの「Password Register」セクションを参照してください。
    2. パスワードプログラムが完了した後、ステップ1でプログラムしたパスワードが正しいかをパスワード (PASSRD E7h) を読み出して検証してください。
      1. これは、パスワード保護モードを有効にする前に行う必要があります。パスワード保護モードが有効になると、もうパスワードは読めなくなります。
      2. アプリケーションが64ビットのパスワードを「記憶」していることを確認してください。パスワードを紛失しても、パスワード レジスタから取り戻すことはできません。
    3. ASPPコマンド (2Fh) またはWRARコマンド (71h) を使用して、ASPレジスタ (ASPR) をFFFBh (ASPR[2:1] = 01b) にプログラムしてください。

     

    例A:セクタを保護し、パスワード保護を有効にして、メモリアレイをロックダウンするコマンドのシーケンス

    1. WRENコマンド
    2. PPBPコマンド(FDh)または4PPBPコマンド(E3h)。アプリケーションで使用しているアドレスモードに依存します。このコマンドのアドレスは、保護するセクタのアドレスです。
    3. PPBP操作完了をWIPビットで確認するため、ステータス レジスタ1を読み出してください。(通常のページプログラム操作と同じ)
    4. 保護する全セクタに、ステップ1から3を繰り返して保護してください。
    5. WRENコマンド
    6. PLBWRコマンド(A6h)でPPB Lockビットを0(ロック)にクリアします。
    7. PLBWR操作完了をWIPビットで確認するため、ステータス レジスタ1を読み出してください。
    8. パスワード保護が有効になるとPPB Lockビットは電源投入またはハードウェア リセットごとにデフォルトで「0」にクリアされるため、ステップ5-7は省略できます。
    9. WRENコマンド
    10. PASSPコマンド(E8h)で64ビットパスワードをプログラムします。
    11. PASSP操作完了をWIPビットで確認するため、ステータス レジスタ1を読み出してください。
    12. PASSRDコマンド(E7h)でプログラムした64ビットパスワードが正しいか、読み出して検証してください。
    13. WRENコマンド
    14. ASPPコマンド(2Fh)またはWRARコマンド(71h)でASPレジスタ(ASPR)をFFFBh(ASPR[2:1] = 10b)にプログラムします。
    15. ASPP操作完了をWIPビットで確認するため、ステータス レジスタ1を読み出してください。
    16. 電源再投入またはハードウェアリセットを行ってください。PPB Lockビットは「0」にクリアされPPBビットをロックし、保護されたセクタはロックダウンされます。パスワード保護が有効になった直後にこのステップを実行し、電源再投入かハードウェアをリセットする前にPPBビットを変更する場合、ステップ5-7は不要です。

     

    例B:保護されたセクタをロック解除してメモリアレイを更新するコマンドのシーケンス

    1. PPBRDコマンド(FCh)または4PPBRDコマンド(E2h)でPPB値を読み出します。このコマンドで使用するアドレスは、PPBが関連付けられているセクタ アドレスです。たとえば、アドレスが0x00000000の場合、読み出しPPBはセクタ0です。(0x00 - 保護、0xFF - 保護解除)
    2. 全セクタの保護状態をRAMに記録するため、全セクタに対してステップ1を繰り返してください。
    3. PASSUコマンド(E9h)
    4. PASSU操作完了をWIPビットで確認するため、ステータス レジスタ1を読み出してください。
    5. PASSUコマンドが正しく完了すると、PPB Lockビットが自動で「1」に変更されます。
    6. WRENコマンド
    7. PPBEコマンド (E4h) でPPBアレイ全体 (すべてのPPB) を0xFFに消去します。(すべてのセクタ保護をロック解除します) (PPBアレイは不揮発性アレイであるため、個々のPPBを0x00から0xFFに変更する方法はありません)
    8. 所望のセクタをデータ更新(消去/プログラム)してください。
    9. ステップ2でRAMに記録されたPPB値に従い、PPBを0x00に書き戻してください。(例Aのステップ1-3)
    10. PPB Lockビットを「0」にクリアもしくは、単純に電源再投入またはハードウェア リセットしてください。