[flashrom] Flashrom with Serprog/Arduino on nano v3
Stefan Tauner
stefan.tauner at student.tuwien.ac.at
Sat Oct 12 11:26:11 CEST 2013
On Thu, 10 Oct 2013 09:41:19 +0200
flashrom at secure-proxy.org wrote:
> Hello,
>
> i try to read SPI flash from a bricked wifi access point. For that purpose I have unsoldered the 4M SPI flash, soldered it onto an ssop-breakout board where I connected it to an Arduino-Nano.
>
> I use flashrom out of my ubuntu distribution, and compiled serprog-duino myself.
>
> Running flashrom to detect the device works as expected:
>
> ------------
> $ flashrom -p serprog:dev=/dev/ttyUSB0:2000000
> flashrom v0.9.5.2-r1517 on Linux 3.2.0-54-generic-pae (i686), built with libpci 3.1.8, GCC 4.6.3, little endian
> flashrom is free software, get the source code at http://www.flashrom.org
>
> Calibrating delay loop... OK.
> serprog: Programmer name is "serprog-duino"
> Found Macronix flash chip "MX25L3205" (4096 kB, SPI) on serprog.
> No operations were specified.
> ------------
>
> However when I add the "-r filename" Option, to read the content of the flash, the program get stuck.
> I tried the master and the ftdi-branch from serprog-duino [the only difference is, that in the ftdi-branch the 10us delay is missing], with no difference in behaviour.
> I tried both versions with both cabling-recommendations: firsthand with the resistors as voltage-dividers, than with direct 5cm cables.
>
> In all combinations flashrom is hanging during a read-statement.
>
>
> The strace looks in all cases like (+-5 lines):
>
> ------------
> write(1, "Note: serprog_delay used, but th"..., 67Note: serprog_delay used, but the programmer doesn't support delay
> ) = 67
> write(3, "\23", 1) = 1
> write(3, "\1\0\0\2\0\0\5", 7) = 7
> read(3, "\6", 1) = 1
> read(3, "\0\0", 2) = 2
> mmap2(NULL, 4198400, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7104000
> write(1, "Reading flash... ", 17Reading flash... ) = 17
> write(3, "\23", 1) = 1
> write(3, "\4\0\0\0\0\1\3\0\0\0", 10) = 10
> read(3, "\6", 1) = 1
> read(3, "'\5\31V\267\205%\3Q\332+\3\0\1\257\10\200 \0\0\200 \0\0\207\312\302\340\5\5\1\0"..., 65536) = 339
> […]
> read(3, "\0\20\4\0\326&\f\0\204\217\2\0\2$L\4\231\217\6\0B\26\244\227\204$\0\0%\226\0\0"..., 17512) = 262
> read(3, <===STUCK HERE!!
> ------------
>
> The Nano is a V3 with Atmega328 and a FT232RL chip.
>
>
> Any suggestions ?
Looking at the output of -VVV is probably more telling than that wall
of syscalls, especially because you say that the log of syscalls is not
reproducible. I would assume a problem with the firmware/Arduino, not
your cabling.
On a broader scope... it would be useful to have timeouts for those
serial reads (and writes). Unfortunately that is not exactly
easy/elegant to implement in a cross-platform compatible way.
--
Kind regards/Mit freundlichen Grüßen, Stefan Tauner
More information about the flashrom
mailing list