[flashrom] MX25L6445E erase and write failed!

Urja Rannikko urjaman at gmail.com
Tue Mar 3 10:02:34 CET 2015


Hi,

Just "forwarding" (really replying) this to the mailing list so others
can see too.
I see no serprog errors this time, so now it starts to feel like maybe
some kind of flashrom problem (4k erase doesnt work after that addr?
why?), but not sure.
I'll take a look at the definitions and datasheet etc later, now at work.


On Tue, Mar 3, 2015 at 10:52 AM, The Raven <originalraven at hotmail.com> wrote:
> Okidoki Dr. Johnes ;-)
>
> Have tested the "MX25L6445E" with normal flashrom and frser-duino ->
> Same error as before!
>
> Then i have compiled and used your special flashrom version (no compiler
> errors) with frser-duino -> Also same error! :-(
>
> Here is the whole log:
>
> raven at PC ~/flashrom-master $ ./flashrom -p
> serprog:dev=/dev/ttyACM0:115200 -c
> "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E" -VE
> flashrom v0.9.8-unknown on Linux 3.13.0-24-generic (i686)
> flashrom is free software, get the source code at http://www.flashrom.org
>
> flashrom was built with libpci 3.2.1, GCC 4.8.2, little endian
> Command line (5 args): ./flashrom -p serprog:dev=/dev/ttyACM0:115200 -c
> MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E -VE
> Calibrating delay loop... OS timer resolution is 1 usecs, 1083M loops
> per second, 10 myus = 10 us, 100 myus = 143 us, 1000 myus = 963 us,
> 10000 myus = 10405 us, 4 myus = 5 us, OK.
> Initializing serprog programmer
> Baud rate is 115200 now.
> serprog: connected - attempting to synchronize
> ...
> serprog: Synchronized
> serprog: Interface version ok.
> serprog: Bus support: parallel=off, LPC=off, FWH=off, SPI=on
> serprog: Maximum write-n length is 256
> serprog: Maximum read-n length is 23552
> serprog: Programmer name is "frser-duino"
> serprog: Serial buffer size is 1020
> serprog: operation buffer size is 12
> serprog: Output drivers enabled
> The following protocols are supported: SPI.
> Probing for Macronix MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E, 8192
> kB: probe_spi_rdid_generic: id1 0xc2, id2 0x2017
> Found Macronix flash chip "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E"
> (8192 kB, SPI) on serprog.
> Chip status register is 0x00.
> Chip status register: Status Register Write Disable (SRWD, SRP, ...) is
> not set
> Chip status register: Bit 6 is not set
> Chip status register: Block Protect 3 (BP3) is not set
> Chip status register: Block Protect 2 (BP2) is not set
> Chip status register: Block Protect 1 (BP1) is not set
> Chip status register: Block Protect 0 (BP0) is not set
> Chip status register: Write Enable Latch (WEL) is not set
> Chip status register: Write In Progress (WIP/BUSY) is not set
> This chip may contain one-time programmable memory. flashrom cannot read
> and may never be able to write it, hence it may not be able to completely
> clone the contents of this chip (see man page for details).
> Erasing and writing flash chip... Trying erase function 0...
> 0x000000-0x000fff:E, 0x001000-0x001fff:E, 0x002000-0x002fff:E,
> 0x003000-0x003fff:E, 0x004000-0x004fff:E, 0x005000-0x005fff:E,
> 0x006000-0x006fff:E, 0x007000-0x007fff:E, 0x008000-0x008fff:E,
> 0x009000-0x009fff:E, 0x00a000-0x00afff:E, 0x00b000-0x00bfff:E,
> 0x00c000-0x00cfff:E, 0x00d000-0x00dfff:E, 0x00e000-0x00efff:E,
> 0x00f000-0x00ffff:E, 0x010000-0x010fff:E, 0x011000-0x011fff:E,
> 0x012000-0x012fff:E, 0x013000-0x013fff:E, 0x014000-0x014fff:E,
> 0x015000-0x015fff:E, 0x016000-0x016fff:E, 0x017000-0x017fff:E,
> 0x018000-0x018fff:E, 0x019000-0x019fff:E, 0x01a000-0x01afff:E,
> 0x01b000-0x01bfff:E, 0x01c000-0x01cfff:E, 0x01d000-0x01dfff:E,
> 0x01e000-0x01efff:E, 0x01f000-0x01ffff:E, 0x020000-0x020fff:E,
> 0x021000-0x021fff:E, 0x022000-0x022fff:E, 0x023000-0x023fff:E,
> 0x024000-0x024fff:E, 0x025000-0x025fff:E, 0x026000-0x026fff:E,
> 0x027000-0x027fff:E, 0x028000-0x028fff:E, 0x029000-0x029fff:E,
> 0x02a000-0x02afff:E, 0x02b000-0x02bfff:E, 0x02c000-0x02cfff:E,
> 0x02d000-0x02dfff:E, 0x02e000-0x02efff:E, 0x02f000-0x02ffff:E,
> 0x030000-0x030fff:E, 0x031000-0x031fff:E, 0x032000-0x032fff:E,
> 0x033000-0x033fff:E, 0x034000-0x034fff:E, 0x035000-0x035fff:E,
> 0x036000-0x036fff:E, 0x037000-0x037fff:E, 0x038000-0x038fff:E,
> 0x039000-0x039fff:E, 0x03a000-0x03afff:E, 0x03b000-0x03bfff:E,
> 0x03c000-0x03cfff:E, 0x03d000-0x03dfff:E, 0x03e000-0x03efff:E,
> 0x03f000-0x03ffff:E, 0x040000-0x040fff:E, 0x041000-0x041fff:E,
> 0x042000-0x042fff:E, 0x043000-0x043fff:E, 0x044000-0x044fff:E,
> 0x045000-0x045fff:E, 0x046000-0x046fff:E, 0x047000-0x047fff:E,
> 0x048000-0x048fff:E, 0x049000-0x049fff:E, 0x04a000-0x04afff:E,
> 0x04b000-0x04bfff:E, 0x04c000-0x04cfff:E, 0x04d000-0x04dfff:E,
> 0x04e000-0x04efff:E, 0x04f000-0x04ffff:E, 0x050000-0x050fff:E,
> 0x051000-0x051fff:E, 0x052000-0x052fff:E, 0x053000-0x053fff:E,
> 0x054000-0x054fff:E, 0x055000-0x055fff:E, 0x056000-0x056fff:E,
> 0x057000-0x057fff:E, 0x058000-0x058fff:E, 0x059000-0x059fff:E,
> 0x05a000-0x05afff:E, 0x05b000-0x05bfff:E, 0x05c000-0x05cfff:E,
> 0x05d000-0x05dfff:E, 0x05e000-0x05efff:E, 0x05f000-0x05ffff:E,
> 0x060000-0x060fff:E, 0x061000-0x061fff:E, 0x062000-0x062fff:E,
> 0x063000-0x063fff:E, 0x064000-0x064fff:E, 0x065000-0x065fff:E,
> 0x066000-0x066fff:E, 0x067000-0x067fff:E, 0x068000-0x068fff:E,
> 0x069000-0x069fff:E, 0x06a000-0x06afff:E, 0x06b000-0x06bfff:E,
> 0x06c000-0x06cfff:E, 0x06d000-0x06dfff:E, 0x06e000-0x06efff:E,
> 0x06f000-0x06ffff:E, 0x070000-0x070fff:E, 0x071000-0x071fff:E,
> 0x072000-0x072fff:E, 0x073000-0x073fff:E, 0x074000-0x074fff:E,
> 0x075000-0x075fff:E, 0x076000-0x076fff:E, 0x077000-0x077fff:E,
> 0x078000-0x078fff:E, 0x079000-0x079fff:E, 0x07a000-0x07afff:E,
> 0x07b000-0x07bfff:E, 0x07c000-0x07cfff:E, 0x07d000-0x07dfff:E,
> 0x07e000-0x07efff:E, 0x07f000-0x07ffff:E, 0x080000-0x080fff:E,
> 0x081000-0x081fff:E, 0x082000-0x082fff:E, 0x083000-0x083fff:E,
> 0x084000-0x084fff:E, 0x085000-0x085fff:E, 0x086000-0x086fff:E,
> 0x087000-0x087fff:E, 0x088000-0x088fff:E, 0x089000-0x089fff:E,
> 0x08a000-0x08afff:E, 0x08b000-0x08bfff:E, 0x08c000-0x08cfff:E,
> 0x08d000-0x08dfff:E, 0x08e000-0x08efff:E, 0x08f000-0x08ffff:E,
> 0x090000-0x090fff:E, 0x091000-0x091fff:E, 0x092000-0x092fff:E,
> 0x093000-0x093fff:E, 0x094000-0x094fff:E, 0x095000-0x095fff:E,
> 0x096000-0x096fff:E, 0x097000-0x097fff:E, 0x098000-0x098fff:E,
> 0x099000-0x099fff:E, 0x09a000-0x09afff:E, 0x09b000-0x09bfff:E,
> 0x09c000-0x09cfff:E, 0x09d000-0x09dfff:E, 0x09e000-0x09efff:E,
> 0x09f000-0x09ffff:E, 0x0a0000-0x0a0fff:E, 0x0a1000-0x0a1fff:E,
> 0x0a2000-0x0a2fff:E, 0x0a3000-0x0a3fff:E, 0x0a4000-0x0a4fff:E,
> 0x0a5000-0x0a5fff:E, 0x0a6000-0x0a6fff:E, 0x0a7000-0x0a7fff:E,
> 0x0a8000-0x0a8fff:E, 0x0a9000-0x0a9fff:E, 0x0aa000-0x0aafff:E,
> 0x0ab000-0x0abfff:E, 0x0ac000-0x0acfff:E, 0x0ad000-0x0adfff:E,
> 0x0ae000-0x0aefff:E, 0x0af000-0x0affff:E, 0x0b0000-0x0b0fff:E,
> 0x0b1000-0x0b1fff:E, 0x0b2000-0x0b2fff:E, 0x0b3000-0x0b3fff:E,
> 0x0b4000-0x0b4fff:E, 0x0b5000-0x0b5fff:E, 0x0b6000-0x0b6fff:E,
> 0x0b7000-0x0b7fff:E, 0x0b8000-0x0b8fff:E, 0x0b9000-0x0b9fff:E,
> 0x0ba000-0x0bafff:E, 0x0bb000-0x0bbfff:E, 0x0bc000-0x0bcfff:E,
> 0x0bd000-0x0bdfff:E, 0x0be000-0x0befff:E, 0x0bf000-0x0bffff:E,
> 0x0c0000-0x0c0fff:E, 0x0c1000-0x0c1fff:E, 0x0c2000-0x0c2fff:E,
> 0x0c3000-0x0c3fff:E, 0x0c4000-0x0c4fff:E, 0x0c5000-0x0c5fff:E,
> 0x0c6000-0x0c6fff:E, 0x0c7000-0x0c7fff:E, 0x0c8000-0x0c8fff:E,
> 0x0c9000-0x0c9fff:E, 0x0ca000-0x0cafff:E, 0x0cb000-0x0cbfff:E,
> 0x0cc000-0x0ccfff:E, 0x0cd000-0x0cdfff:E, 0x0ce000-0x0cefff:E,
> 0x0cf000-0x0cffff:E, 0x0d0000-0x0d0fff:E, 0x0d1000-0x0d1fff:E,
> 0x0d2000-0x0d2fff:E, 0x0d3000-0x0d3fff:E, 0x0d4000-0x0d4fff:E,
> 0x0d5000-0x0d5fff:E, 0x0d6000-0x0d6fff:E, 0x0d7000-0x0d7fff:E,
> 0x0d8000-0x0d8fff:E, 0x0d9000-0x0d9fff:E, 0x0da000-0x0dafff:E,
> 0x0db000-0x0dbfff:E, 0x0dc000-0x0dcfff:E, 0x0dd000-0x0ddfff:E,
> 0x0de000-0x0defff:E, 0x0df000-0x0dffff:E, 0x0e0000-0x0e0fff:E,
> 0x0e1000-0x0e1fff:E, 0x0e2000-0x0e2fff:E, 0x0e3000-0x0e3fff:E,
> 0x0e4000-0x0e4fff:E, 0x0e5000-0x0e5fff:E, 0x0e6000-0x0e6fff:E,
> 0x0e7000-0x0e7fff:E, 0x0e8000-0x0e8fff:E, 0x0e9000-0x0e9fff:E,
> 0x0ea000-0x0eafff:E, 0x0eb000-0x0ebfff:E, 0x0ec000-0x0ecfff:E,
> 0x0ed000-0x0edfff:E, 0x0ee000-0x0eefff:E, 0x0ef000-0x0effff:E,
> 0x0f0000-0x0f0fff:E, 0x0f1000-0x0f1fff:E, 0x0f2000-0x0f2fff:E,
> 0x0f3000-0x0f3fff:E, 0x0f4000-0x0f4fff:E, 0x0f5000-0x0f5fff:E,
> 0x0f6000-0x0f6fff:E, 0x0f7000-0x0f7fff:E, 0x0f8000-0x0f8fff:E,
> 0x0f9000-0x0f9fff:E, 0x0fa000-0x0fafff:E, 0x0fb000-0x0fbfff:E,
> 0x0fc000-0x0fcfff:E, 0x0fd000-0x0fdfff:E, 0x0fe000-0x0fefff:E,
> 0x0ff000-0x0fffff:E, 0x100000-0x100fff:EFAILED at 0x00100000!
> Expected=0xff, Found=0xeb, failed byte count from 0x00100000-0x00100fff:
> 0xfe5
> ERASE FAILED!
> Reading current flash chip contents...
>
> Again same address "0x00100000".
> What can i do or what should i test? Any idea? Maybe more "V" for verbose?
> Now i try to write random data, but i guess it does also not work. But i
> give it a try.
>
> Greetings
>
> Am 02.03.2015 um 23:51 schrieb Urja Rannikko:
>> Hi,
>>
>> I'm also addressing the mailing list now, because i think the last bit
>> is interesting to more people.
>>
>> On Mon, Mar 2, 2015 at 11:48 PM, The Raven <originalraven at hotmail.com> wrote:
>>> Hi again
>>>> I'd like to know how the "U2" firmware fails, and this flashrom might
>>>> be better at breaking it and telling what happened:
>>>> This is how to use that my flashrom branch:
>>>> git clone git://github.com/urjaman/flashrom flashrom-serprog
>>>> cd flashrom-serprog
>>>> git checkout serprog-improvements
>>>> make
>>>> ./flashrom .... <same parameters here as you used before ...>
>>>>
>>>> And report me what happened... then, there's a second thing i just made.
>>> Does not compile!
>>> I got this:
>>> serprog.c: In function ‘serprog_map’:
>>> serprog.c:1128:3: error: format ‘%d’ expects argument of type ‘int’, but
>>> argument 5 has type ‘size_t’ [-Werror=format=]
>>>    msg_pwarn(MSGHEADER "incompatible mapping '%s' phys_addr 0x%08X len
>>> %d, returning NULL\n",
>>>    ^
>>> cc1: all warnings being treated as errors
>>> make: *** [serprog.o] Fehler 1
>>>
>>> Can you tell me whats wrong? Tomorrow i try it again.
>> Sorry, my compiler was too old and it didnt produce this warning thus
>> i didnt notice it.
>> I think fixed it in my branch, so you can
>> git pull
>> make
>> to try again with the fix.
>> If there are other warnings that get in the way, you can
>> disable -Werror with
>> make WARNERROR=no
>>
>> and send me all the warnings it produced so i can fix them all.
>> Thanks a lot for reporting this :)
>>
>>>> I got a bit carried away reading the serprog-duino firmware code
>>>> and decided to just see what it'd look like with my frser-* codebase.
>>>> So, fresh out of the oven, and untested (i tested on my m644p before i
>>>> converted it for the m328p):
>>>> https://github.com/urjaman/frser-duino
>>>> To use it:
>>>> git clone git://github.com/urjaman/frser-duino
>>>> cd frser-duino
>>>> make && make program
>>>>
>>>> (the defaults are for the u2 arduino, eg. ttyACM0 and 115200, i didnt
>>>> have time to work the makefile magic that hard.)
>>>>
>>>> With luck it might work, but I'm expecting failure. Report where it failed.
>>>> If its something simple you can fix it too if you want to, just commit
>>>> it and send me the git format-patch -1 :)
>>>> If it compiled and programmed, then try the flashrom-serprog again
>>>> And if that works try the stock flashrom too.
>>> Have tried this with the "normal" flashrom and it seems to work with the
>>> "M25P10-A"!!!
>>>
>>> Look the "short" log:
>>> Found Micron/Numonyx/ST flash chip "M25P10-A" (128 kB, SPI).
>>> ===
>>> This flash part has status UNTESTED for operations: WRITE
>>> The test status of this chip may have been updated in the latest development
>>> version of flashrom. If you are running the latest development version,
>>> please email a report to flashrom at flashrom.org if any of the above
>>> operations
>>> work correctly for you with this flash chip. Please include the flashrom log
>>> file for all operations you tested (see the man page for details), and
>>> mention
>>> which mainboard or programmer you tested in the subject line.
>>> Thanks for your help!
>>> Erasing and writing flash chip... Trying erase function 0...
>>> 0x000000-0x007fff:E, 0x008000-0x00ffff:E, 0x010000-0x017fff:E,
>>> 0x018000-0x01ffff:E
>>> Erase/write done.
>>> serprog: Output drivers disabled
>>>
>>> Done! This was never possible with the "other" serprog code!
>>>
>>> And writing of random data:
>>> Found Micron/Numonyx/ST flash chip "M25P10-A" (128 kB, SPI).
>>> ===
>>> This flash part has status UNTESTED for operations: WRITE
>>> The test status of this chip may have been updated in the latest development
>>> version of flashrom. If you are running the latest development version,
>>> please email a report to flashrom at flashrom.org if any of the above
>>> operations
>>> work correctly for you with this flash chip. Please include the flashrom log
>>> file for all operations you tested (see the man page for details), and
>>> mention
>>> which mainboard or programmer you tested in the subject line.
>>> Thanks for your help!
>>> Reading old flash chip contents... done.
>>> Erasing and writing flash chip... Trying erase function 0...
>>> 0x000000-0x007fff:W, 0x008000-0x00ffff:W, 0x010000-0x017fff:W,
>>> 0x018000-0x01ffff:W
>>> Erase/write done.
>>> Verifying flash... VERIFIED.
>>> serprog: Output drivers disabled
>>>
>>> Also done! I think this looks really good! :-)
>>> Tomorrow i try the MX25L6445E, let's see what happens!
>>>
>>> THX for your help and making things better! :-)
>>>
>> I sent this to the mailing list too because that seems like a report
>> for M25P10-A write tested ok :)
>>
>>
>



-- 
Urja Rannikko




More information about the flashrom mailing list