[U-Boot-Users] CFI driver problems on MPC8260 and 440EPx systems

Stefan Roese sr at denx.de
Thu Dec 27 07:55:40 CET 2007


Hi Wolfgang,

On Thursday 27 December 2007, Wolfgang Denk wrote:
> even after pulling the latest CFI updates from the u-boot-cfi-flash
> repository, I still see the following issues:
>
> a) on MPC8260:
>
> [Stefan: for testing please use the TQM8260_AD board in the xpert VL.]
>
> The CFI driver returns from an "erase" operation with the flash still
> in a undefined state; immediate reads after an erase do not show 0xFF
> patterns. If you wait a few  milliseconds,  the  flash  will  finally
> change into the expected erased state.
>
> Example:
>
> => era 40280000 +1 ; md 40280000 10 ; sleep 1 ; md 40280000
>
> . done
> Erased 1 sectors
> 40280000: 004c004c 00080008 004c004c 00080008    .L.L.....L.L....	<= bad
> 40280010: 004c004c 00080008 004c004c 00080008    .L.L.....L.L....	<= bad
> 40280020: 004c004c 00080008 004c004c 00080008    .L.L.....L.L....	<= bad
> 40280030: 004c004c 00080008 004c004c 00080008    .L.L.....L.L....	<= bad
> 40280000: ffffffff ffffffff ffffffff ffffffff    ................	<- good
> 40280010: ffffffff ffffffff ffffffff ffffffff    ................	<- good
> 40280020: ffffffff ffffffff ffffffff ffffffff    ................	<- good
> 40280030: ffffffff ffffffff ffffffff ffffffff    ................	<- good
>
> Playing with CFI paramaters (like manually increasing  write  timeout
> and/or  erase  timeout) does not change anything. Neither does adding
> sync()  instructions  to   the   flash_read?()   and   flash_write?()
> functions.

Unfortunately I have no clue right now what could be causing this. I'll try to 
dig into it when I find a little time for it.

> b) on 440EPx:
>
> [Stefan: for testing please use the Sequoia board in the pollux VL.]
>
> The CFI driver does not detect that it's writing to flash that is not
> (sufficiently) erased:
>
> => md FC000000 10
> fc000000: 00000000 00000000 00000000 00000000    ................
> fc000010: 00000000 00000000 00000000 00000000    ................
> fc000020: 00000000 00000000 00000000 00000000    ................
> fc000030: 00000000 00000000 00000000 00000000    ................
> => mw.b 0 FF 400
> => md 0
> 00000000: ffffffff ffffffff ffffffff ffffffff    ................
> 00000010: ffffffff ffffffff ffffffff ffffffff    ................
> 00000020: ffffffff ffffffff ffffffff ffffffff    ................
> 00000030: ffffffff ffffffff ffffffff ffffffff    ................
> => cp.b 0 FC000000 400
> Copy to Flash... done		<= should issue error message here!!!!
> => md FC000000
> fc000000: 00000000 00000000 00000000 00000000    ................
> fc000010: 00000000 00000000 00000000 00000000    ................
> fc000020: 00000000 00000000 00000000 00000000    ................
> fc000030: 00000000 00000000 00000000 00000000    ................
> =>
>
> I consider this a major bug.

Yes, me too.

A quick look at the code shows, that the check for a (sufficiently) erased 
destination is totally missing from the buffered write version (enabled via 
the CFG_FLASH_USE_BUFFER_WRITE define). I'll send a patch in a minute that 
fixes this problem. Tested on Sequoia.

Best regards,
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