[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