Hi,
I had problems making flashrom talk to an Arduino as described in http://www.flashrom.org/index.php?title=Serprog&redirect=no
It always failed right after this: Warning: Automatic command availability check failed for cmd 0x12 - won't execute cmd
With help from stefanct on the IRC I was able to fix it and successfully write and verify a W25X80 bios chip.
The problem was, stefanct implemented a mandatory check for S_CMD_S_BUSTYPE (0x12) in flashrom which isn't yet implemented in the Arduino code.
To work around it you can downgrade flashrom to before r1557 or you can make the Arduino code give a satisfactory answer to the check.
To do that, you must append "| (1 << (S_CMD_S_BUSTYPE - 16))" to the SUPPORTED_COMMANDS_HIGH define, and send an ACK when asked for S_CMD_S_BUSTYPE (0x12) in the Arduino code. Actually, "<stefanct> the right way would be to test if flashrom tries to set SPI and ack in that case and nak in all other cases".
I also had problems with the high baudrate. Setting it to 1000000 instead of 2000000 seems to work reliably and is still fast enough for me. YMMV. Note that the value must be changed in the arguments for flashrom as well as the Arduino code.
Thank you guys for your great work and thank you stefanct for helping me out!
Cheers,
Alexander