9 Replies Latest reply on Oct 29, 2020 7:42 PM by KaKi_1384211

    Block Erase / S25FL164K0XMFI013

    ToIk_1341346

      MPN:S25FL164K0XMFI013

      動作順序
      FLASHに対して、ライトプロテクト解除コマンドを投げて、 ブロックイレースを実施。
      ・引き続いて、ブロックイレースコマンドの実行ステータス確認を実行

       

      上記動作後、Busyステータスとなっていて、ブロックイレースが完了しない状態になります。

      FLASHがBlock Eraseコマンドを受けて、Busyが立ちっぱなしの状態になる条件はありますでしょうか?

       

      以上宜しくお願い致します。

        • 1. Re: Block Erase / S25FL164K0XMFI013
          KaKi_1384211

          Hi,

           

          S25FL164K0XMFI013のSector Protectは解除されていることを確認されていますか??

          Status Registerのプロテクトとメインセルエリアの両方の確認が必要と考えています。

          ・Status Register-1のbit2(BP0), 3(BP1), 4(BP2), 7(SRP0)

          ・Status Register-2のbit0(SRP1)

          Protect解除後、Status Regster-1のReadコマンド(05h) とStatus Register-2のReadコマンド(35h) を

          確認し、Protect解除されていることを確認してみてください。

          まずは、Protectかかった状態でEraseを実行すると、Busy状態になる可能性があります。

           

          その上で、64KB Block Erase(D8h) のコマンドフローを実行してみてはいかがでしょうか。

           

          宜しくお願いいたします。

          Thanks and regards,

          • 2. Re: Block Erase / S25FL164K0XMFI013
            ToIk_1341346

            アドバイス頂いた”Sector Protectが解除されているかについて確認しました。
            確認結果
            同一症状の2台について確認を実施。

            No1:ステータス確認のコマンド35hによる確認を実施。
               QSPI FLASHメモリは、FFhを応答

            No2:ステータス確認コマンドで、Busyビットが落ちない現象になっていることを 確認しています。
               メンテナンスモードで、FLASH再設定を行った際のFLASHメモリ書き込みは正常完了していますが、
               システム起動中の場合は、Busyビットが落ちない現象になっております

               コマンド05hに対して、03hを応答。
               コマンド35hに対して、FFhを応答。

             

            この結果から何か判断できますでしょうか?

            • 3. Re: Block Erase / S25FL164K0XMFI013
              KaKi_1384211

              Status Register-2のReadコマンド(35h) でStatus Register-2をReadした時のDefault(出荷時) は "04h" です。

              お客様確認では "FF" とのことですので、お客様がStatus Register-2を設定したか、もしくは正常Readできていないように思えます。

              Datasheetに明記されていますが、Status Register-2はSecurityRegisterのプロテクト(OTP) 、QEやサスペンド中Flag等になりますので、

              お客様 "FF" と設定することは考えずらいため、正常にRead出来ていない可能性の方が大きいと考えています。

              また、Status Regster-1のReadコマンド(05h) でStatus Register-1をReadした際、"03h" とのことですので、WEL=1、WIP=1に

              なっていると想定されます。WEL=1はライトコマンド受付状態でWrite Enable(06h) コマンドで "1" となり、

              WIP=1はその後のコマンドやアドレスを入力し、/CEをHighに遷移するとWIP=1となります。

              おそらく、何かをProgram、もしくはEraseしようとしていた状態ではないかと思います。

              リセットコマンドを入れると、どのような状態になりますでしょうか?

              (リセットコマンドはProgeram / Erase中でも実行可能ですが、動作は中断され、対象領域のデータは不定となります。)

               

              また下記Datasheetにありますように、正常にPower-upはされていますでしょうか? Power-up時、VWIを超えてから、tPUW後にデバイス動作が可能となります。

              その際、VCC立ち上げ時CS#を追従させてください。

              また、Power-up後リセットコマンドを入れてみるとかはいかがでしょうか?

              (35hで "FF" Readとのことで正常にRead出来ていないのではないか、と考えました。)

              Thanks and regards,

              • 4. Re: Block Erase / S25FL164K0XMFI013
                ToIk_1341346

                頂い情報をもとに下記を試した結果をご連絡させて頂きますので

                見解を頂けますと幸いです。

                 

                リセットコマンドを入れると、どのような状態になりますでしょうか?
                >(リセットコマンドはProgram / Erase中でも実行可能ですが、動作は中断され、対象領域のデータは不定となります。)

                >

                  コマンド35hに対して、応答がFFh時の状態で、リセット(66h→99h)を実行すると、
                  05h→00h
                  35h→04h
                 が読めるようになります。

                >また下記Datasheetにありますように、正常にPower-upはされていますでしょうか?
                >Power-up時、VWIを超えてから、tPUW後にデバイス動作が可能となります。

                >
                その際、VCC立ち上げ時CS#を追従させてください。
                >

                起動時のタイミングに問題はありませんでした。

                >
                また、Power-up後リセットコマンドを入れてみるとかはいかがでしょうか?
                >(35h
                で "FF" Readとのことで正常にRead出来ていないのではないか、と考えました。)
                >
                https://community.cypress.com/servlet/JiveServlet/downloadImage/2-251892-540880/847-900/pastedImage_10.png
                >

                 起動後のコマンド35hの応答は、06h Bit1が立っているのは、Quadを有効にしているので正しい。
                 従って、起動時のリセットは正常に行われていると思われます。

                 その後のEraseコマンド実行で正常動作しなくなる現象が発生すると考えられます。

                 

                以上宜しくお願い致します。


                • 5. Re: Block Erase / S25FL164K0XMFI013
                  KaKi_1384211

                  Hi,

                  ご確認ありがとうございます。

                  起動後、コマンド35hの応答で06h(Status Register-2) の状態にて、Block Eraseを実行しても、Erase完了しませんでしょうか?

                   

                  コマンド35hの応答で04h(Status Register-2) がReadされ、 その後、電源を落として再度投入したら06hとなっていると理解しました。

                  レジスタがBlock EraseやResetで書き込み(04h→06h) が入ることは考えにくく、さらに06hがStatus Register-2の期待値ならば、

                  不揮発性レジスタは期待値通りに設定されていると思います。

                   

                  起動後、Status Register-2を書き換えていることはございませんでしょうか?

                  Status Register-2の値が04hの場合、QuadではRead出来ませんので、システムがQuadでReadを実施した際

                  正常な値がRead出来ていないことはないでしょうか?

                   

                  Thanks and regards,

                   

                   

                  • 6. Re: Block Erase / S25FL164K0XMFI013
                    ToIk_1341346

                     

                    お問い合わせの件ですが

                    システムソフトがどのアドレスに対して、Block Eraseを実行しているか不明なため、JTAGからコマンドを投げて確認をすることは難しいです。
                    また、電源投入直後は、非Quad設定で起動するため04hで、途中でQuadモードに切り替えるので06hになります。  

                    • 7. Re: Block Erase / S25FL164K0XMFI013
                      KaKi_1384211

                      Hi,

                       

                      Status Register-2のbit1[QE] = 1にしても、Serial I/OやDual I/Oも動作します。

                      下記を参照してください。

                      また、Status Register値は通常のデータと同様のFlash Memory Cellに保持されているため、過度のWRR発行は控えてください。

                      Status Register値に変更なければ、WRRコマンドを発行する必要はありません。

                      例えば、システム起動時に毎回WRRコマンドを発行する必要はありません。

                      宜しくお願いいたします。

                      Thanks and regards,

                      • 8. Re: Block Erase / S25FL164K0XMFI013
                        ToIk_1341346

                        ”Status Registerの値は、通常のデータと同様のFlash Memory Cellに保持されているとありますが、
                         volatileデータ(bit)の書き換えであっても該当するのでしょうか。

                        ResetコマンドでQE=0に戻るということは、volatileレジスタ側のみを書き換えているのではないかと考えています。

                        ・この指摘をされるということは、書き換え寿命が今回の問題に関係している可能性があるということを意図されているのでしょうか。

                        • 9. Re: Block Erase / S25FL164K0XMFI013
                          KaKi_1384211

                          Hi,

                          volatileデータ(bit)の書き換えであっても該当するのでしょうか。

                          ⇒ Volatileエリアは該当しません。


                          ResetコマンドでQE=0に戻るということは、volatileレジスタ側のみを書き換えているのではないかと考えています。
                          この指摘をされるということは、書き換え寿命が今回の問題に関係している可能性があるということを意図されているのでしょう

                          ⇒ もし、Quadで使用するならば、1度Non-volatileエリアのレジスタ(QE) を "1" にセットすれば、

                          その後はSerial、Dual I/Oでも使用可能のため、Non-volatileエリアを "1" に書き換えて使用していると考えていました。

                          そのため、万が一、Volatileレジスタが破損しているかと考えましたが、期待通りの動作であれば、その可能性はなくなりました。

                           

                          ただ、Quadで使用するならば、1度Non-volatileエリアのレジスタ(QE) を "1" にセットすれば、その後はSerial、Dual I/Oでも

                          使用可能であり、Quad使用時にいちいちVolatileレジスタでQE=1にするような、余計な処理は必要ないと考えています。

                           

                          一度不具合が発生した状態で解析に依頼してみてはいかがでしょうか。

                           

                          可能性は低いと思いますが、他のお客様ではEraseで電力を消費し出すとシステムの電力が足りなくて、Flashが途中で力尽きてしまい

                          Eraseを途中であきらめてしまい、電力消費しなくなったら復旧するが、起動の仕様を守れていなくて、正常動作しなくなり、

                          電源切って再立ち上げすると元に戻るという現象がありました。

                           

                          Thanks and regards,

                          宜しくお願いいたします。