[U-Boot] U-boot running on DDR fails to detect the CFI compliant flash

prakash bedge prakash.bedge at gmail.com
Tue Jan 19 07:24:10 CET 2010


Hi Stefan,

Thanks for information.

I have tried the code in the URL link you have provided. But still I am
facing the same problem. I am getting the error in "flash_detect_cfi" as
flash not found. It fails at initial stage at read CFI query command.
The code you have provided is for M29W128GL.(Numonix). Will this work for
M29W128GH (STMIcrotronics)?
I believe Uboot support M29W128GH flash. I am using this flash chip in 16 x
8 bit mode.
The URL I provided is available under the thread:
"[U-Boot] Query: Does Uboot support CFI flash driver forM29W128GH".
Can there be an endianness issue, as I am running uboot from SDRAM and in
Big endian mode?

Thanks & Regards,
Prakash Bedge

Log: I have chnaged the "&&" to "||" in if(flash_isequal .... ) condition to
check QRY response.

U-Boot 2009.08 (Jan 18 2010 - 20:10:01)
FLASH: flash detect cfi
fwc addr fc000000 cmd ff ff 8bit x 8 bit
Entering into First Write
First Write is done
fwc addr fc000000 cmd f0 f0 8bit x 8 bit
Entering into First Write
First Write is done
fwc addr fc000055 cmd 98 98 8bit x 8 bit
Entering into First Write
First Write is done
is= cmd 51(Q) addr fc000010 is= ff 51
is= cmd 52(R) addr fc000011 is= ff 52
is= cmd 59(Y) addr fc000012 is= ff 59
fwc addr fc000555 cmd 98 98 8bit x 8 bit
Entering into First Write
First Write is done
is= cmd 51(Q) addr fc000010 is= ff 51
is= cmd 52(R) addr fc000011 is= ff 52
is= cmd 59(Y) addr fc000012 is= ff 59
fwc addr fc000000 cmd ff ff00 16bit x 8 bit
fwc addr fc000000 cmd f0 f000 16bit x 8 bit
fwc addr fc0000aa cmd 98 9800 16bit x 8 bit
is= cmd 51(Q) addr fc000020 is= ffff 5100
is= cmd 52(R) addr fc000022 is= ffff 5200
is= cmd 59(Y) addr fc000024 is= ffff 5900
fwc addr fc000aaa cmd 98 9800 16bit x 8 bit
is= cmd 51(Q) addr fc000020 is= ffff 5100
is= cmd 52(R) addr fc000022 is= ffff 5200
is= cmd 59(Y) addr fc000024 is= ffff 5900
fwc addr fc000000 cmd ff 0000 16bit x 16 bit
fwc addr fc000000 cmd f0 0000 16bit x 16 bit
fwc addr fc0000aa cmd 98 0000 16bit x 16 bit
is= cmd 51(Q) addr fc000020 is= ffff 0000
is= cmd 52(R) addr fc000022 is= ffff 0000
is= cmd 59(Y) addr fc000024 is= ffff 0000
fwc addr fc000aaa cmd 98 0000 16bit x 16 bit
is= cmd 51(Q) addr fc000020 is= ffff 0000
is= cmd 52(R) addr fc000022 is= ffff 0000
is= cmd 59(Y) addr fc000024 is= ffff 0000
fwc addr fc000000 cmd ff ff00ff00 32bit x 8 bit
fwc addr fc000000 cmd f0 f000f000 32bit x 8 bit
fwc addr fc000154 cmd 98 98009800 32bit x 8 bit
is= cmd 51(Q) addr fc000040 is= ffffffff 51005100
is= cmd 52(R) addr fc000044 is= ffffffff 52005200
is= cmd 59(Y) addr fc000048 is= ffffffff 59005900
fwc addr fc001554 cmd 98 98009800 32bit x 8 bit
is= cmd 51(Q) addr fc000040 is= ffffffff 51005100
is= cmd 52(R) addr fc000044 is= ffffffff 52005200
is= cmd 59(Y) addr fc000048 is= ffffffff 59005900
fwc addr fc000000 cmd ff 00000000 32bit x 16 bit
fwc addr fc000000 cmd f0 00000000 32bit x 16 bit
fwc addr fc000154 cmd 98 00000000 32bit x 16 bit
is= cmd 51(Q) addr fc000040 is= ffffffff 00000000
is= cmd 52(R) addr fc000044 is= ffffffff 00000000
is= cmd 59(Y) addr fc000048 is= ffffffff 00000000
fwc addr fc001554 cmd 98 00000000 32bit x 16 bit
is= cmd 51(Q) addr fc000040 is= ffffffff 00000000
is= cmd 52(R) addr fc000044 is= ffffffff 00000000
is= cmd 59(Y) addr fc000048 is= ffffffff 00000000
fwc addr fc000000 cmd ff 00000000 32bit x 32 bit
fwc addr fc000000 cmd f0 00000000 32bit x 32 bit
fwc addr fc000154 cmd 98 00000000 32bit x 32 bit
is= cmd 51(Q) addr fc000040 is= ffffffff 00000000
is= cmd 52(R) addr fc000044 is= ffffffff 00000000
is= cmd 59(Y) addr fc000048 is= ffffffff 00000000
fwc addr fc001554 cmd 98 00000000 32bit x 32 bit
is= cmd 51(Q) addr fc000040 is= ffffffff 00000000
is= cmd 52(R) addr fc000044 is= ffffffff 00000000
is= cmd 59(Y) addr fc000048 is= ffffffff 00000000
fwrite addr fc000000 cmd ff ff00ff00ff00ff00 64 bit x 8 bit
fwrite addr fc000000 cmd f0 f000f000f000f000 64 bit x 8 bit
fwrite addr fc0002a8 cmd 98 9800980098009800 64 bit x 8 bit
is= cmd 51(Q) addr fc000080 is= ffffffffffffffff 5100510051005100
is= cmd 52(R) addr fc000088 is= ffffffffffffffff 5200520052005200
is= cmd 59(Y) addr fc000090 is= ffffffffffffffff 5900590059005900
fwrite addr fc002aa8 cmd 98 9800980098009800 64 bit x 8 bit
is= cmd 51(Q) addr fc000080 is= ffffffffffffffff 5100510051005100
is= cmd 52(R) addr fc000088 is= ffffffffffffffff 5200520052005200
is= cmd 59(Y) addr fc000090 is= ffffffffffffffff 5900590059005900
fwrite addr fc000000 cmd ff 0000000000000000 64 bit x 16 bit
fwrite addr fc000000 cmd f0 0000000000000000 64 bit x 16 bit
fwrite addr fc0002a8 cmd 98 0000000000000000 64 bit x 16 bit
is= cmd 51(Q) addr fc000080 is= ffffffffffffffff 0000000000000000
is= cmd 52(R) addr fc000088 is= ffffffffffffffff 0000000000000000
is= cmd 59(Y) addr fc000090 is= ffffffffffffffff 0000000000000000
fwrite addr fc002aa8 cmd 98 0000000000000000 64 bit x 16 bit
is= cmd 51(Q) addr fc000080 is= ffffffffffffffff 0000000000000000
is= cmd 52(R) addr fc000088 is= ffffffffffffffff 0000000000000000
is= cmd 59(Y) addr fc000090 is= ffffffffffffffff 0000000000000000
fwrite addr fc000000 cmd ff 0000000000000000 64 bit x 32 bit
fwrite addr fc000000 cmd f0 0000000000000000 64 bit x 32 bit
fwrite addr fc0002a8 cmd 98 0000000000000000 64 bit x 32 bit
is= cmd 51(Q) addr fc000080 is= ffffffffffffffff 0000000000000000
is= cmd 52(R) addr fc000088 is= ffffffffffffffff 0000000000000000
is= cmd 59(Y) addr fc000090 is= ffffffffffffffff 0000000000000000
fwrite addr fc002aa8 cmd 98 0000000000000000 64 bit x 32 bit
is= cmd 51(Q) addr fc000080 is= ffffffffffffffff 0000000000000000
is= cmd 52(R) addr fc000088 is= ffffffffffffffff 0000000000000000
is= cmd 59(Y) addr fc000090 is= ffffffffffffffff 0000000000000000
fwrite addr fc000000 cmd ff 0000000000000000 64 bit x 64 bit
fwrite addr fc000000 cmd f0 0000000000000000 64 bit x 64 bit
fwrite addr fc0002a8 cmd 98 0000000000000000 64 bit x 64 bit
is= cmd 51(Q) addr fc000080 is= ffffffffffffffff 0000000000000000
is= cmd 52(R) addr fc000088 is= ffffffffffffffff 0000000000000000
is= cmd 59(Y) addr fc000090 is= ffffffffffffffff 0000000000000000
fwrite addr fc002aa8 cmd 98 0000000000000000 64 bit x 64 bit
is= cmd 51(Q) addr fc000080 is= ffffffffffffffff 0000000000000000
is= cmd 52(R) addr fc000088 is= ffffffffffffffff 0000000000000000
is= cmd 59(Y) addr fc000090 is= ffffffffffffffff 0000000000000000
not found
## Unknown FLASH on Bank 1 - Size = 0x00000000 = 0 MB
flash_protect ON: from 0xFFFC0000 to 0xFFFEE7FF
flash_protect ON: from 0xFFFA0000 to 0xFFFBFFFF
*** failed ***
### ERROR ### Please RESET the board ###
### main_loop entered: bootdelay=20



On Mon, Jan 18, 2010 at 2:15 PM, Stefan Roese <sr at denx.de> wrote:

> Hi Prakash,
>
> On Friday 15 January 2010 14:23:35 prakash bedge wrote:
> > In October 09 month, I had asked whether U-boot supports M29W128GH, a CFI
> > compilant chip and I got a yes reply. Please refer below URL for
> reference.
> >
> > http://www.mail-archive.com/u-boot@lists.denx.de/msg24531.html.
>
> Link not found. Please correct.
>
> > So I have used Uboot for my PPC440 based board.
> >
> > When I flashed U-boot on flash and then run the Uboot in DDR then U-boot
> > running on DDR fails to detect CFI chip M29W128GH (16M x 8 mode).
> >
> > flash_detect_cfi function gives error that flash not found. I have added
> > debug statements for temporary debug purpose.
> >  Please see the below error I am getting.
> >
> > The CFI query address looks different in below code and not as per ST
> make
> > M29W128GH specs. PCIMW.
>
> What's the difference then? Please give an example.
>
> I suggest you take a look at this prelimiary patch:
>
> http://lists.denx.de/pipermail/u-boot/2009-December/065562.html
>
> Please let me know if this helps or not.
>
> Cheers,
> Stefan
>
> --
> DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: office at denx.de
>


More information about the U-Boot mailing list