S25FL512S configuration register QUAD bit is not saved

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hello,

S25FL512S as the boot log of Zynq of Xilinx, I want to change the QUAD bit of the configuration register from 0 to 1 and change it to the setting that works with QUAD I / O at startup, but it can not do it well.

We rewritten the configuration register with WREN (06h) -> WRR (01h, 00h, 02h), then performed RDCR (35h,00h) and confirmed until the configuration register changed to 02h.

However, turning off the power and restarting it, checking the configuration register with RDCR (35h, 00h) returns trouble to 00h.

Since the QUAD bit of the configuration register is Nonvolatile attribute, I think that it holds even if it is restarted, but it can not do it well.

Can you tell me how to record it?

こんにちは、

S25FL512SXilinxZynqのブートロムとして使用するため、コンフィグレーションレジスタのQUADビットを0から1に書き換えて、起動時にQUAD I/Oで動作する設定に変更したいのですが、変更できずに困っています

コンフィグレーションレジスタの書き換えをWREN(06h)->WRR(01h,00h,02h)で行い、次にRDCR(35h,00h)を行ってコンフィグレーションレジスタが02hに変化するまで確認できました。

しかし、電源をオフにして再度起動し、RDCR(35h,00h)でコンフィグレーションレジスタを確認すると00hに戻ってしまい困っています。

コンフィグレーションレジスタのQUADビットはNonvolatile属性なので再起動しても保持していると思うのですがうまくできません。

どうしたら記録できるようになるか教えていただけないでしょうか?

0 Likes
1 Solution

回答いただきありがとうございます。

ご購入いただいた製品型格FL512SAVFR1の末尾のR1はモデルナンバーを示しており、

当該モデルはコア電圧VccとIO電圧Vioの供給が必要です。

一方、Zyboに実装されているFL128Sのモデルナンバーは00で、こちらはコア電圧Vccのみで動作します。

Zyboの回路図を見る限りでは、Vio(Flashのピン番号14番)には繋がっていません。

FL512Sで、同一パッケージ、コア電圧のみで動作するモデルは、モデルナンバー01です。こちらをお買い求めください。

暫定処置として、現在お使いのFlashのVccピン(2番)とVioピン(14番)をジャンパーで繋ぎ、VioにVccと同じ3.3Vを供給することで、ソフトウェアの動作確認はできると思います。

よろしくお願いいたします。

View solution in original post

0 Likes
6 Replies
SudheeshK
Moderator
Moderator
Moderator
250 sign-ins First question asked 750 replies posted

Hello,

We would like to know some more details about this issue.

1. Please make sure that you are waiting for tPU time (300us) after power to read configuration register.

2. How many devices are showing this issue? Are you facing it with all of the devices that you tested?

3. Could you please check and confirm that you are not writing to status and configuration registers during power up (WRR command)?

Thanks and Regards,

Sudheesh

0 Likes
Anonymous
Not applicable

Hello,

Thank you for your reply.


First, I will explain the development environment. I use a commercially available
zynq development board (zybo), I removed the onboard Flash (S25FL128S) and installed S25FL512S.

I connect the USB for Debug of zybo to the PC and debugging by JTAG communication from SDK of Xilinx development tool Vivado.
Operation of register of S25FL512S is done by
zynq's ARM programming.

zybo URL:https://store.digilentinc.com/zybo-zynq-7000-arm-fpga-soc-trainer-board/

A1. It takes 300 μS or more because it takes time to start the ARM program from the debugger after turning on the power.

A2. I checked using two S25FL512S, but it was not remembered.

A3. If only zynq is reset, unnecessary write operation is not performed because it operates without problems. 


Thanking you in advance.

0 Likes

何点か確認させてください。

1) お使いのFL512Sのパッケージに刻印されている型番を教えていただけますか?

2) もともとZyboに載っていたFL128SをFL512Sに載せ替えたとのことですが、FL128SではQUAD bitへの書き込みはできていましたか?

3) コンフィグレーションレジスタへの書き込み用のソフトはXilinx SDKを使用してご自身で作成されたものでしょうか?

4) 「WREN(06h)->WRR(01h,00h,02h)で行い、次にRDCR(35h,00h)」とのことですが、WRRコマンド発行後はRDSR(05h)を使用し、レジスタへの書き込み処理の完了を待つ必要があります(Status Register bit0 = 0になるまでRDSRを繰り返す)。またRDCR(35h,00h)の00hは何を示していますか?

よろしくお願いいたします。

0 Likes
Anonymous
Not applicable

tkuw 様

ご返答ありがとうございます。

返信が遅くなりすみません。

ご確認の件を回答いたします。

Q1) FL512Sの型番

A1) FL512SAVFR1です。デジキーで購入しました。

Q2) FL128SではQUAD bitへの書き込み

A2) FL128Sへの書き込みは確認していません。オリジナルまで動かなくなると困る為、試すのをためらっています。

Q3) コンフグレーションレジスタへの書き込み用のソフト

A3)FL512Sのデータシートを読んで自身で作成した物です。Xilinxの推奨の方法がわからない為、VivadoでQUADビットを書き込めないかXilinxへ問い合わせ中です。

Q4-1) 「WREN(06h)->WRR(01h,00h,02h)で行い、次にRDCR(35h,00h)」とのことですが、WRRコマンド発行後はRDSR(05h)を使用し、レジスタへの書き込み処理の完了を待つ必要があります(Status Register bit0 = 0になるまでRDSRを繰り返す)。

A4-1)すみません。質問の際にRDSR(05h)の記述を省いて質問していました。実際のソースコードはXilinxのQSPIのサンプルプログラム「xqspips_g128_flash_example.c」に下記のコードを追加してデバッグモードにて動作確認しています。

Q4-2)RDCR(35h,00h)の00hは何を示していますか?

A4-2)現在は省いていますがRDCRで2バイトのデータを受信したいためダミーとして00hを書き込みました。これが別の値でも変化はありません。

以上となります。

すみませんが、なにかお気づきになられた点があればご回答よろしくお願いします。

   

<xqspips_g128_flash_example.c>

int QspiG128FlashExample(XQspiPs *QspiInstancePtr, u16 QspiDeviceId)

{

    ・

     ・

     ・

      XQspiPs_SetSlaveSelect(QspiInstancePtr);

// ******** ここから追加コード ********

      u8 tb[3] = {0x0ff, 0xff, 0xff};
u8 rb[3] = {0x0ff, 0xff, 0xff};

tb[0]=0x05; // RDSRセット

      Status = XQspiPs_PolledTransfer(QspiInstancePtr, tb, rb, 2);

// ここでブレークをセットしrbの内容を確認

      tb[0]=0x35; // RDCRセット

      Status = XQspiPs_PolledTransfer(QspiInstancePtr, tb, rb, 2);

// ここでブレークをセットしrbの内容を確認

     tb[0]=0x06; // WRENセット

      Status = XQspiPs_PolledTransfer(QspiInstancePtr, tb, NULL, 1);

      tb[0]=0x05; // RDSRセット

      do{

            Status = XQspiPs_PolledTransfer(QspiInstancePtr, tb, rb, 2);

      } while(!(rb[1]&2)); // 書き込み準備

      tb[0]=0x01; // WRRセット

      tb[1]=0x00;

      tb[2]=0x02;

      Status = XQspiPs_PolledTransfer(QspiInstancePtr, tb, NULL, 3);

      tb[0]=0x05; // RDSRセット

      do{

           Status = XQspiPs_PolledTransfer(QspiInstancePtr, tb, rb, 2);

          if(rb[1]&0x60)

               break;

      } while(rb[1]&3); // 書き込み終了

// ここでブレークをセットしrbの内容を確認

     tb[0]=0x35; // RDCRセット

     Status = XQspiPs_PolledTransfer(QspiInstancePtr, tb, rb, 2);

// ここでブレークをセットしrbの内容を確認

// ******** ここまで追加コード ********

     FlashReadID(QspiInstancePtr, WriteBuffer, ReadBuffer);

     ・

     ・

     ・   

0 Likes

回答いただきありがとうございます。

ご購入いただいた製品型格FL512SAVFR1の末尾のR1はモデルナンバーを示しており、

当該モデルはコア電圧VccとIO電圧Vioの供給が必要です。

一方、Zyboに実装されているFL128Sのモデルナンバーは00で、こちらはコア電圧Vccのみで動作します。

Zyboの回路図を見る限りでは、Vio(Flashのピン番号14番)には繋がっていません。

FL512Sで、同一パッケージ、コア電圧のみで動作するモデルは、モデルナンバー01です。こちらをお買い求めください。

暫定処置として、現在お使いのFlashのVccピン(2番)とVioピン(14番)をジャンパーで繋ぎ、VioにVccと同じ3.3Vを供給することで、ソフトウェアの動作確認はできると思います。

よろしくお願いいたします。

0 Likes
Anonymous
Not applicable

tkuw 様

ご返答ありがとうございます。

データシートを見落としていました。

14番ピンに3.3Vを供給して動作確認したら問題なく動作しました。

ご指摘ありがとうございました。

0 Likes