Hi,
I am trying to use the current flashrom together with a Bus-Pirate to re-flash my DFI T3H6 BIOS as it was broken by the official bios update.
I am using a second computer running Linux and connected the Bus-Pirate to the SPI-Flash Header (DFI call it Bios Download).
I can only offer the first part, as I had to stop the flashing and will restart it tonight. The erasing of the 8Mbit Flash needed around 60-70 minutes. After that I can't see any progress, as -V is pretty silent when writing the flash and -VV dumps far too much to have an overview.
I would like to have a block-wise info when writing or verifying the flash, as it will be done when erasing the flash. It would help to have a feeling about the aprox. time it needs and if the flashing is still ongoing.
What is you typical experience with erasing and writing a flash. How many time longer do the writing of the flash need when comparing it with the erasing ?
Kind regards,
Daniel
Flashrom-Log (had to stop flashing, as I had to leave the home to get to work).
# flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -w JX58D422.BIN -V flashrom v0.9.2-r1048 on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 299M loops per second, 10 myus = 11 us, 100 myus = 101 us, 1000 myus = 999 us, 10000 myus = 10113 us, 4 myus = 5 us, OK. Initializing buspirate_spi programmer SPI speed is 8MHz Raw bitbang mode version 1 Raw SPI mode version 1 Probing for AMD Am29F010A/B, 128 KB: skipped. Probing for AMD Am29F002(N)BB, 256 KB: skipped. Probing for AMD Am29F002(N)BT, 256 KB: skipped. Probing for AMD Am29F016D, 2048 KB: skipped. Probing for AMD Am29F040B, 512 KB: skipped. Probing for AMD Am29F080B, 1024 KB: skipped. Probing for AMD Am29LV040B, 512 KB: skipped. Probing for AMD Am29LV081B, 1024 KB: skipped. Probing for ASD AE49F2008, 256 KB: skipped. Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF081, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321A, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF641, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25F512B, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF041, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF081A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26F004, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT29C512, 64 KB: skipped. Probing for Atmel AT29C010A, 128 KB: skipped. Probing for Atmel AT29C020, 256 KB: skipped. Probing for Atmel AT29C040A, 512 KB: skipped. Probing for Atmel AT45CS1282, 16896 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB011D, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB021D, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB041D, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB081D, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB161D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321C, 4224 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB642D, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT49BV512, 64 KB: skipped. Probing for Atmel AT49F020, 256 KB: skipped. Probing for Atmel AT49F002(N), 256 KB: skipped. Probing for Atmel AT49F002(N)T, 256 KB: skipped. Probing for AMIC A25L40PT, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L40PU, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A29002B, 256 KB: skipped. Probing for AMIC A29002T, 256 KB: skipped. Probing for AMIC A29040B, 512 KB: skipped. Probing for AMIC A49LF040A, 512 KB: skipped. Probing for EMST F49B002UA, 256 KB: skipped. Probing for Eon EN25B05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B05T, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10T, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20T, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40T, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80T, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16T, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32T, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64T, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25D16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN29F010, 128 KB: skipped. Probing for EON EN29F002(A)(N)B, 256 KB: skipped. Probing for EON EN29F002(A)(N)T, 256 KB: skipped. Probing for Fujitsu MBM29F004BC, 512 KB: skipped. Probing for Fujitsu MBM29F004TC, 512 KB: skipped. Probing for Fujitsu MBM29F400BC, 512 KB: skipped. Probing for Fujitsu MBM29F400TC, 512 KB: skipped. Probing for Intel 28F001BX-B, 128 KB: skipped. Probing for Intel 28F001BX-T, 128 KB: skipped. Probing for Intel 28F004S5, 512 KB: skipped. Probing for Intel 28F004BV/BE-B, 512 KB: skipped. Probing for Intel 28F004BV/BE-T, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-B, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-T, 512 KB: skipped. Probing for Intel 82802AB, 512 KB: skipped. Probing for Intel 82802AC, 1024 KB: skipped. Probing for Macronix MX25L512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1005, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L2005, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L4005, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L8005, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1605, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1635D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3205, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3235D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L6405, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L12805, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX29F001B, 128 KB: skipped. Probing for Macronix MX29F001T, 128 KB: skipped. Probing for Macronix MX29F002B, 256 KB: skipped. Probing for Macronix MX29F002T, 256 KB: skipped. Probing for Macronix MX29LV040, 512 KB: skipped. Probing for Numonyx M25PE10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV020, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm29F002T, 256 KB: skipped. Probing for PMC Pm29F002B, 256 KB: skipped. Probing for PMC Pm39LV010, 128 KB: skipped. Probing for PMC Pm39LV020, 256 KB: skipped. Probing for PMC Pm39LV040, 512 KB: skipped. Probing for PMC Pm49FL002, 256 KB: skipped. Probing for PMC Pm49FL004, 512 KB: skipped. Probing for Sanyo LF25FW203A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sharp LHF00L04, 1024 KB: skipped. Probing for Spansion S25FL008A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Spansion S25FL016A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF032B, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF040.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF040B, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25LF040A.RES, 512 KB: probe_spi_res2: id1 0xbf, id2 0x8e Probing for SST SST25VF040B.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Probing for SST SST28SF040A, 512 KB: skipped. Probing for SST SST29EE010, 128 KB: skipped. Probing for SST SST29LE010, 128 KB: skipped. Probing for SST SST29EE020A, 256 KB: skipped. Probing for SST SST29LE020, 256 KB: skipped. Probing for SST SST39SF512, 64 KB: skipped. Probing for SST SST39SF010A, 128 KB: skipped. Probing for SST SST39SF020A, 256 KB: skipped. Probing for SST SST39SF040, 512 KB: skipped. Probing for SST SST39VF512, 64 KB: skipped. Probing for SST SST39VF010, 128 KB: skipped. Probing for SST SST39VF020, 256 KB: skipped. Probing for SST SST39VF040, 512 KB: skipped. Probing for SST SST39VF080, 1024 KB: skipped. Probing for SST SST49LF002A/B, 256 KB: skipped. Probing for SST SST49LF003A/B, 384 KB: skipped. Probing for SST SST49LF004A/B, 512 KB: skipped. Probing for SST SST49LF004C, 512 KB: skipped. Probing for SST SST49LF008A, 1024 KB: skipped. Probing for SST SST49LF008C, 1024 KB: skipped. Probing for SST SST49LF016C, 2048 KB: skipped. Probing for SST SST49LF020, 256 KB: skipped. Probing for SST SST49LF020A, 256 KB: skipped. Probing for SST SST49LF040, 512 KB: skipped. Probing for SST SST49LF040B, 512 KB: skipped. Probing for SST SST49LF080A, 1024 KB: skipped. Probing for SST SST49LF160C, 2048 KB: skipped. Probing for ST M25P05-A, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P05.RES, 64 KB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P10.RES, 128 KB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40-old, 512 KB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P128, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M29F002B, 256 KB: skipped. Probing for ST M29F002T/NT, 256 KB: skipped. Probing for ST M29F040B, 512 KB: skipped. Probing for ST M29F400BT, 512 KB: skipped. Probing for ST M29W010B, 128 KB: skipped. Probing for ST M29W040B, 512 KB: skipped. Probing for ST M29W512B, 64 KB: skipped. Probing for ST M50FLW040A, 512 KB: skipped. Probing for ST M50FLW040B, 512 KB: skipped. Probing for ST M50FLW080A, 1024 KB: skipped. Probing for ST M50FLW080B, 1024 KB: skipped. Probing for ST M50FW002, 256 KB: skipped. Probing for ST M50FW016, 2048 KB: skipped. Probing for ST M50FW040, 512 KB: skipped. Probing for ST M50FW080, 1024 KB: skipped. Probing for ST M50LPW116, 2048 KB: skipped. Probing for SyncMOS S29C31004T, 512 KB: skipped. Probing for SyncMOS S29C51001T, 128 KB: skipped. Probing for SyncMOS S29C51002T, 256 KB: skipped. Probing for SyncMOS S29C51004T, 512 KB: skipped. Probing for TI TMS29F002RB, 256 KB: skipped. Probing for TI TMS29F002RT, 256 KB: skipped. Probing for Winbond W25Q80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W29C011, 128 KB: skipped. Probing for Winbond W29C020C, 256 KB: skipped. Probing for Winbond W29C040P, 512 KB: skipped. Probing for Winbond W29EE011, 128 KB: skipped. Probing for Winbond W39V040A, 512 KB: skipped. Probing for Winbond W39V040B, 512 KB: skipped. Probing for Winbond W39V040C, 512 KB: skipped. Probing for Winbond W39V040FA, 512 KB: skipped. Probing for Winbond W39V080A, 1024 KB: skipped. Probing for Winbond W49F002U, 256 KB: skipped. Probing for Winbond W49V002A, 256 KB: skipped. Probing for Winbond W49V002FA, 256 KB: skipped. Probing for Winbond W39V080FA, 1024 KB: skipped. Probing for Winbond W39V080FA (dual mode), 512 KB: skipped. Probing for Atmel unknown Atmel SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for EON unknown EON SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix unknown Macronix SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC unknown PMC SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST unknown SST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST unknown ST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sanyo unknown Sanyo SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (RDID), 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (REMS), 0 KB: probe_spi_rems: id1 0xbf, id2 0x8e === This flash part has status UNTESTED for operations: ERASE 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@flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -Vw, -VE), and mention which mainboard or programmer you tested. Thanks for your help! === Flash image seems to be a legacy BIOS. Disabling checks. Writing flash chip... Some block protection in effect, disabling Erasing flash before programming... Erasing flash chip... Looking at blockwise erase function 0... trying... 0x000000-0x000fff, 0x001000-0x001fff, 0x002000-0x002fff, 0x003000-0x003fff, 0x004000-0x004fff, 0x005000-0x005fff, 0x006000-0x006fff, 0x007000-0x007fff, 0x008000-0x008fff, 0x009000-0x009fff, 0x00a000-0x00afff, 0x00b000-0x00bfff, 0x00c000-0x00cfff, 0x00d000-0x00dfff, 0x00e000-0x00efff, 0x00f000-0x00ffff, 0x010000-0x010fff, 0x011000-0x011fff, 0x012000-0x012fff, 0x013000-0x013fff, 0x014000-0x014fff, 0x015000-0x015fff, 0x016000-0x016fff, 0x017000-0x017fff, 0x018000-0x018fff, 0x019000-0x019fff, 0x01a000-0x01afff, 0x01b000-0x01bfff, 0x01c000-0x01cfff, 0x01d000-0x01dfff, 0x01e000-0x01efff, 0x01f000-0x01ffff, 0x020000-0x020fff, 0x021000-0x021fff, 0x022000-0x022fff, 0x023000-0x023fff, 0x024000-0x024fff, 0x025000-0x025fff, 0x026000-0x026fff, 0x027000-0x027fff, 0x028000-0x028fff, 0x029000-0x029fff, 0x02a000-0x02afff, 0x02b000-0x02bfff, 0x02c000-0x02cfff, 0x02d000-0x02dfff, 0x02e000-0x02efff, 0x02f000-0x02ffff, 0x030000-0x030fff, 0x031000-0x031fff, 0x032000-0x032fff, 0x033000-0x033fff, 0x034000-0x034fff, 0x035000-0x035fff, 0x036000-0x036fff, 0x037000-0x037fff, 0x038000-0x038fff, 0x039000-0x039fff, 0x03a000-0x03afff, 0x03b000-0x03bfff, 0x03c000-0x03cfff, 0x03d000-0x03dfff, 0x03e000-0x03efff, 0x03f000-0x03ffff, 0x040000-0x040fff, 0x041000-0x041fff, 0x042000-0x042fff, 0x043000-0x043fff, 0x044000-0x044fff, 0x045000-0x045fff, 0x046000-0x046fff, 0x047000-0x047fff, 0x048000-0x048fff, 0x049000-0x049fff, 0x04a000-0x04afff, 0x04b000-0x04bfff, 0x04c000-0x04cfff, 0x04d000-0x04dfff, 0x04e000-0x04efff, 0x04f000-0x04ffff, 0x050000-0x050fff, 0x051000-0x051fff, 0x052000-0x052fff, 0x053000-0x053fff, 0x054000-0x054fff, 0x055000-0x055fff, 0x056000-0x056fff, 0x057000-0x057fff, 0x058000-0x058fff, 0x059000-0x059fff, 0x05a000-0x05afff, 0x05b000-0x05bfff, 0x05c000-0x05cfff, 0x05d000-0x05dfff, 0x05e000-0x05efff, 0x05f000-0x05ffff, 0x060000-0x060fff, 0x061000-0x061fff, 0x062000-0x062fff, 0x063000-0x063fff, 0x064000-0x064fff, 0x065000-0x065fff, 0x066000-0x066fff, 0x067000-0x067fff, 0x068000-0x068fff, 0x069000-0x069fff, 0x06a000-0x06afff, 0x06b000-0x06bfff, 0x06c000-0x06cfff, 0x06d000-0x06dfff, 0x06e000-0x06efff, 0x06f000-0x06ffff, 0x070000-0x070fff, 0x071000-0x071fff, 0x072000-0x072fff, 0x073000-0x073fff, 0x074000-0x074fff, 0x075000-0x075fff, 0x076000-0x076fff, 0x077000-0x077fff, 0x078000-0x078fff, 0x079000-0x079fff, 0x07a000-0x07afff, 0x07b000-0x07bfff, 0x07c000-0x07cfff, 0x07d000-0x07dfff, 0x07e000-0x07efff, 0x07f000-0x07ffff, 0x080000-0x080fff, 0x081000-0x081fff, 0x082000-0x082fff, 0x083000-0x083fff, 0x084000-0x084fff, 0x085000-0x085fff, 0x086000-0x086fff, 0x087000-0x087fff, 0x088000-0x088fff, 0x089000-0x089fff, 0x08a000-0x08afff, 0x08b000-0x08bfff, 0x08c000-0x08cfff, 0x08d000-0x08dfff, 0x08e000-0x08efff, 0x08f000-0x08ffff, 0x090000-0x090fff, 0x091000-0x091fff, 0x092000-0x092fff, 0x093000-0x093fff, 0x094000-0x094fff, 0x095000-0x095fff, 0x096000-0x096fff, 0x097000-0x097fff, 0x098000-0x098fff, 0x099000-0x099fff, 0x09a000-0x09afff, 0x09b000-0x09bfff, 0x09c000-0x09cfff, 0x09d000-0x09dfff, 0x09e000-0x09efff, 0x09f000-0x09ffff, 0x0a0000-0x0a0fff, 0x0a1000-0x0a1fff, 0x0a2000-0x0a2fff, 0x0a3000-0x0a3fff, 0x0a4000-0x0a4fff, 0x0a5000-0x0a5fff, 0x0a6000-0x0a6fff, 0x0a7000-0x0a7fff, 0x0a8000-0x0a8fff, 0x0a9000-0x0a9fff, 0x0aa000-0x0aafff, 0x0ab000-0x0abfff, 0x0ac000-0x0acfff, 0x0ad000-0x0adfff, 0x0ae000-0x0aefff, 0x0af000-0x0affff, 0x0b0000-0x0b0fff, 0x0b1000-0x0b1fff, 0x0b2000-0x0b2fff, 0x0b3000-0x0b3fff, 0x0b4000-0x0b4fff, 0x0b5000-0x0b5fff, 0x0b6000-0x0b6fff, 0x0b7000-0x0b7fff, 0x0b8000-0x0b8fff, 0x0b9000-0x0b9fff, 0x0ba000-0x0bafff, 0x0bb000-0x0bbfff, 0x0bc000-0x0bcfff, 0x0bd000-0x0bdfff, 0x0be000-0x0befff, 0x0bf000-0x0bffff, 0x0c0000-0x0c0fff, 0x0c1000-0x0c1fff, 0x0c2000-0x0c2fff, 0x0c3000-0x0c3fff, 0x0c4000-0x0c4fff, 0x0c5000-0x0c5fff, 0x0c6000-0x0c6fff, 0x0c7000-0x0c7fff, 0x0c8000-0x0c8fff, 0x0c9000-0x0c9fff, 0x0ca000-0x0cafff, 0x0cb000-0x0cbfff, 0x0cc000-0x0ccfff, 0x0cd000-0x0cdfff, 0x0ce000-0x0cefff, 0x0cf000-0x0cffff, 0x0d0000-0x0d0fff, 0x0d1000-0x0d1fff, 0x0d2000-0x0d2fff, 0x0d3000-0x0d3fff, 0x0d4000-0x0d4fff, 0x0d5000-0x0d5fff, 0x0d6000-0x0d6fff, 0x0d7000-0x0d7fff, 0x0d8000-0x0d8fff, 0x0d9000-0x0d9fff, 0x0da000-0x0dafff, 0x0db000-0x0dbfff, 0x0dc000-0x0dcfff, 0x0dd000-0x0ddfff, 0x0de000-0x0defff, 0x0df000-0x0dffff, 0x0e0000-0x0e0fff, 0x0e1000-0x0e1fff, 0x0e2000-0x0e2fff, 0x0e3000-0x0e3fff, 0x0e4000-0x0e4fff, 0x0e5000-0x0e5fff, 0x0e6000-0x0e6fff, 0x0e7000-0x0e7fff, 0x0e8000-0x0e8fff, 0x0e9000-0x0e9fff, 0x0ea000-0x0eafff, 0x0eb000-0x0ebfff, 0x0ec000-0x0ecfff, 0x0ed000-0x0edfff, 0x0ee000-0x0eefff, 0x0ef000-0x0effff, 0x0f0000-0x0f0fff, 0x0f1000-0x0f1fff, 0x0f2000-0x0f2fff, 0x0f3000-0x0f3fff, 0x0f4000-0x0f4fff, 0x0f5000-0x0f5fff, 0x0f6000-0x0f6fff, 0x0f7000-0x0f7fff, 0x0f8000-0x0f8fff, 0x0f9000-0x0f9fff, 0x0fa000-0x0fafff, 0x0fb000-0x0fbfff, 0x0fc000-0x0fcfff, 0x0fd000-0x0fdfff, 0x0fe000-0x0fefff, 0x0ff000-0x0fffff, SUCCESS. done.
Hi Daniel,
On 16.06.2010 12:41, Daniel Flinkmann wrote:
I am trying to use the current flashrom together with a Bus-Pirate to re-flash my DFI T3H6 BIOS as it was broken by the official bios update.
I am using a second computer running Linux and connected the Bus-Pirate to the SPI-Flash Header (DFI call it Bios Download).
I can only offer the first part, as I had to stop the flashing and will restart it tonight. The erasing of the 8Mbit Flash needed around 60-70 minutes.
Ouch! That should be a lot faster, maybe ~15 minutes or so. The erasing itself is pretty fast (total maybe 1 second), but we verify if the erase was successful and for that we have to read the whole chip. That takes time.
After that I can't see any progress, as -V is pretty silent when writing the flash and -VV dumps far too much to have an overview.
Yes. Progress bar printing is on our list of useful things to do, but some parts of the current flashrom architecture don't really fit, and thus this will require quite some refactoring. I can hack up a progress printing patch which outputs a dot every time 1024 bytes are read/written. That would give you some progress indicator for now, and we can continue fixing flashrom to eventually support something like that natively.
I would like to have a block-wise info when writing or verifying the flash, as it will be done when erasing the flash. It would help to have a feeling about the aprox. time it needs and if the flashing is still ongoing.
What is you typical experience with erasing and writing a flash. How many time longer do the writing of the flash need when comparing it with the erasing ?
It depends on the flash chip. Please see the timing discussion at the end of my mail.
Flashrom-Log (had to stop flashing, as I had to leave the home to get to work).
# flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -w JX58D422.BIN -V flashrom v0.9.2-r1048 on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 299M loops per second, 10 myus = 11 us, 100 myus = 101 us, 1000 myus = 999 us, 10000 myus = 10113 us, 4 myus = 5 us, OK. Initializing buspirate_spi programmer SPI speed is 8MHz Raw bitbang mode version 1 Raw SPI mode version 1 Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00
WTF?!? This looks like data corruption. Such a response is absolutely unacceptable. Can you run
flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -V
a few times (should be a matter of a few seconds) and check if any probe_spi_rdid_generic complains about a parity violation? If yes, there is a bug somewhere which needs to be fixed.
Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF081, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321A, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF641, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25F512B, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF041, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF081A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26F004, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45CS1282, 16896 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB011D, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB021D, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB041D, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB081D, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB161D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321C, 4224 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB642D, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L40PT, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L40PU, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B05T, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10T, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20T, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40T, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80T, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16T, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32T, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64T, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25D16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1005, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L2005, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L4005, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L8005, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1605, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1635D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3205, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3235D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L6405, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L12805, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV020, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sanyo LF25FW203A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Spansion S25FL008A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Spansion S25FL016A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF032B, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF040.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF040B, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25LF040A.RES, 512 KB: probe_spi_res2: id1 0xbf, id2 0x8e Probing for SST SST25VF040B.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000.
Ouch! That chip can only write one byte at a time. This will be painful and slow. We might be able to use a few tricks (e.g. AAI write), but even with the tricks, your flash chip is one of the worst cases for the Bus Pirate.
Probing for ST M25P05-A, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P05.RES, 64 KB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P10.RES, 128 KB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40-old, 512 KB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P128, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e
Flash image seems to be a legacy BIOS. Disabling checks. Writing flash chip... Some block protection in effect, disabling Erasing flash before programming... Erasing flash chip... Looking at blockwise erase function 0... trying... 0x000000-0x000fff, 0x001000-0x001fff, 0x002000-0x002fff, 0x003000-0x003fff, 0x004000-0x004fff, 0x005000-0x005fff, 0x006000-0x006fff, 0x007000-0x007fff, 0x008000-0x008fff, 0x009000-0x009fff, 0x00a000-0x00afff, 0x00b000-0x00bfff, 0x00c000-0x00cfff, 0x00d000-0x00dfff, 0x00e000-0x00efff, 0x00f000-0x00ffff, 0x010000-0x010fff, 0x011000-0x011fff, 0x012000-0x012fff, 0x013000-0x013fff, 0x014000-0x014fff, 0x015000-0x015fff, 0x016000-0x016fff, 0x017000-0x017fff, 0x018000-0x018fff, 0x019000-0x019fff, 0x01a000-0x01afff, 0x01b000-0x01bfff, 0x01c000-0x01cfff, 0x01d000-0x01dfff, 0x01e000-0x01efff, 0x01f000-0x01ffff, 0x020000-0x020fff, 0x021000-0x021fff, 0x022000-0x022fff, 0x023000-0x023fff, 0x024000-0x024fff, 0x025000-0x025fff, 0x026000-0x026fff, 0x027000-0x027fff, 0x028000-0x028fff, 0x029000-0x029fff, 0x02a000-0x02afff, 0x02b000-0x02bfff, 0x02c000-0x02cfff, 0x02d000-0x02dfff, 0x02e000-0x02efff, 0x02f000-0x02ffff, 0x0 SUCCESS. done.
Timing with the Bus Pirate can be calculated as follows:
If we assume the usbserial driver of your OS pushes all bytes of a read/write at once, we have one USB transaction per read and one transaction per write. Each transaction takes 1 ms (USB standard). To send a SPI command to the chip, we need: - one write/read to activate CS# - one write/read to send/receive SPI command and response - one write/read to deactivate CS# This means a total of 6 transactions and 6 ms per SPI command if we have optimal conditions. To read a whole chip, we slice it up in pages of 256 bytes each (some chips need that) and then we slice each page up in chunks of 12 bytes each (Bus Pirate read length limit). This means we have 22 chunks per page. Your chip has 1 MByte (1048576 bytes), 4096 pages and thus 4096*22=90112 read chunks. Each chunk has to be read with a separate command, so the absolute minimum read timing for your chip with the current code is 90112*6=540672 ms or roughly 9 minutes.
Your chip supports two write modes: - standard one-byte-at-a-time (write_1) write (default) - auto address increment (AAI) write and flashrom uses write_1 mode right now (can be changed).
write_1 mode means you have to send at least three SPI commands to the chip per written byte: write enable, write byte, read status. Your chip has 1 MByte (1048576 bytes), needs 1048576 byte writes, thus 1048576*3=3145728 SPI commands, and 3145728*6=18874368 ms or roughly 315 minutes to write in the optimal case, plus the time to verify (full chip read).
AAI write mode means you have to send at least two SPI commands (or one SPI command and continuous listening on the SO pin) per two written bytes. Your chip has 1 MByte (1048576 bytes), needs 1048576/2=524288 AAI writes, thus 524288*2=1048576 SPI commands, and 1048576*6=6291456 ms or roughly 105 minutes to write in the optimal case, plus the time to verify (full chip read).
The current flashrom SPI code has some additional delays which shouldn't have an effect during erase/read, but I sent a patch to remove them a few minutes ago. Those delays slow down write a lot, though.
Once the delay removal patch is in, the following options remain: - Use AAI to speed up write by a factor of 3 compared to the default. - Violate the Bus Pirate communication protocol and batch each CS/command/CS combination into one write/read. Should result in a speedup for read/write/erase by a factor of 3. Not sure if it is doable. - Violate the Bus Pirate communication protocol some more and batch each flashrom multicommand into one write/read. Speedup by a factor of 2 for write.
With enough protocol violations and AAI write, the minimum write time for your chip is roughly 18 minutes plus the time to read the chip. This write time can only be achieved if your OS has good usbserial drivers and if the Bus Pirate is fast enough.
The biggest mystery right now is the 60 minutes required to erase. Unless I'm mistaken, this means all of the time is spent reading for the verify operation. Given that my calculations result in 9 minutes read time, I'd like to know what's going wrong here before you attempt to write. If this is a problem affecting all operations, you would have to deal with write taking a day or more. That is totally unacceptable.
Can you measure exactly how long a read of the chip takes, preferably while no other processes are running in the background on the machine running flashrom?
Regards, Carl-Daniel
Hi Carl-Daniel,
Thanks for the quick reply. See my answers below:
After that I can't see any progress, as -V is pretty silent when writing the flash and -VV dumps far too much to have an overview.
Yes. Progress bar printing is on our list of useful things to do, but some parts of the current flashrom architecture don't really fit, and thus this will require quite some refactoring. I can hack up a progress printing patch which outputs a dot every time 1024 bytes are read/written. That would give you some progress indicator for now, and we can continue fixing flashrom to eventually support something like that natively.
Understood. The dots every 1kb would help to have a minimal monitoring.
Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00
WTF?!? This looks like data corruption. Such a response is absolutely unacceptable. Can you run
flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -V
a few times (should be a matter of a few seconds) and check if any probe_spi_rdid_generic complains about a parity violation? If yes, there is a bug somewhere which needs to be fixed.
Yes, I will do so, when I am back at home and report them to the mailing list.
Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000.
Ouch! That chip can only write one byte at a time. This will be painful and slow. We might be able to use a few tricks (e.g. AAI write), but even with the tricks, your flash chip is one of the worst cases for the Bus Pirate.
Better awfully slow, than having a brand new, but bricked mainboard ( I have ordered a new preflashed flash chip, but it is still in the delivery). So I am open for some more pain ;-)
Flash image seems to be a legacy BIOS. Disabling checks. Writing flash chip... Some block protection in effect, disabling Erasing flash before programming... Erasing flash chip... Looking at blockwise erase function 0... trying... 0x000000-0x000fff, 0x001000-0x001fff, 0x002000-0x002fff, 0x003000-0x003fff, 0x004000-0x004fff, 0x005000-0x005fff, 0x006000-0x006fff, 0x007000-0x007fff, 0x008000-0x008fff, 0x009000-0x009fff, 0x00a000-0x00afff, 0x00b000-0x00bfff, 0x00c000-0x00cfff, 0x00d000-0x00dfff, 0x00e000-0x00efff, 0x00f000-0x00ffff, 0x010000-0x010fff, 0x011000-0x011fff, 0x012000-0x012fff, 0x013000-0x013fff, 0x014000-0x014fff, 0x015000-0x015fff, 0x016000-0x016fff, 0x017000-0x017fff, 0x018000-0x018fff, 0x019000-0x019fff, 0x01a000-0x01afff, 0x01b000-0x01bfff, 0x01c000-0x01cfff, 0x01d000-0x01dfff, 0x01e000-0x01efff, 0x01f000-0x01ffff, 0x020000-0x020fff, 0x021000-0x021fff, 0x022000-0x022fff, 0x023000-0x023fff, 0x024000-0x024fff, 0x025000-0x025fff, 0x026000-0x026fff, 0x027000-0x027fff, 0x028000-0x028fff, 0x029000-0x029fff, 0x02a000-0x02afff, 0x02b000-0x02bfff, 0x02c000-0x02cfff, 0x02d000-0x02dfff, 0x02e000-0x02efff, 0x02f000-0x02ffff, 0x0 SUCCESS. done.
Timing with the Bus Pirate can be calculated as follows:
If we assume the usbserial driver of your OS pushes all bytes of a read/write at once, we have one USB transaction per read and one transaction per write. Each transaction takes 1 ms (USB standard). To send a SPI command to the chip, we need:
- one write/read to activate CS#
- one write/read to send/receive SPI command and response
- one write/read to deactivate CS#
This means a total of 6 transactions and 6 ms per SPI command if we have optimal conditions. To read a whole chip, we slice it up in pages of 256 bytes each (some chips need that) and then we slice each page up in chunks of 12 bytes each (Bus Pirate read length limit). This means we have 22 chunks per page. Your chip has 1 MByte (1048576 bytes), 4096 pages and thus 4096*22=90112 read chunks. Each chunk has to be read with a separate command, so the absolute minimum read timing for your chip with the current code is 90112*6=540672 ms or roughly 9 minutes.
Your chip supports two write modes:
- standard one-byte-at-a-time (write_1) write (default)
- auto address increment (AAI) write
and flashrom uses write_1 mode right now (can be changed).
write_1 mode means you have to send at least three SPI commands to the chip per written byte: write enable, write byte, read status. Your chip has 1 MByte (1048576 bytes), needs 1048576 byte writes, thus 1048576*3=3145728 SPI commands, and 3145728*6=18874368 ms or roughly 315 minutes to write in the optimal case, plus the time to verify (full chip read).
AAI write mode means you have to send at least two SPI commands (or one SPI command and continuous listening on the SO pin) per two written bytes. Your chip has 1 MByte (1048576 bytes), needs 1048576/2=524288 AAI writes, thus 524288*2=1048576 SPI commands, and 1048576*6=6291456 ms or roughly 105 minutes to write in the optimal case, plus the time to verify (full chip read).
The current flashrom SPI code has some additional delays which shouldn't have an effect during erase/read, but I sent a patch to remove them a few minutes ago. Those delays slow down write a lot, though.
Once the delay removal patch is in, the following options remain:
- Use AAI to speed up write by a factor of 3 compared to the default.
- Violate the Bus Pirate communication protocol and batch each
CS/command/CS combination into one write/read. Should result in a speedup for read/write/erase by a factor of 3. Not sure if it is doable.
- Violate the Bus Pirate communication protocol some more and batch each
flashrom multicommand into one write/read. Speedup by a factor of 2 for write.
With enough protocol violations and AAI write, the minimum write time for your chip is roughly 18 minutes plus the time to read the chip. This write time can only be achieved if your OS has good usbserial drivers and if the Bus Pirate is fast enough.
The biggest mystery right now is the 60 minutes required to erase. Unless I'm mistaken, this means all of the time is spent reading for the verify operation. Given that my calculations result in 9 minutes read time, I'd like to know what's going wrong here before you attempt to write. If this is a problem affecting all operations, you would have to deal with write taking a day or more. That is totally unacceptable.
Can you measure exactly how long a read of the chip takes, preferably while no other processes are running in the background on the machine running flashrom?
I don't like the idea to violate the Bus Pirate communication protocol, but using AAI and utilizing your new sleep removals should be a nice step forward.
The used computer which is running flashrom and using the Bus Pirate is an Atom D330 running 64bit Ubuntu Lucid Lynx and is normally just a TimeMachine/Fileserver, but was idling all the time.
I will try to make an exact measurement of the flash erasing and rom reading again.
Shall I give your speed-up patch a try before I start doing the measurement above ?
Kind regards,
Daniel
Hi Daniel,
On 16.06.2010 16:34, Daniel Flinkmann wrote:
Thanks for the quick reply. See my answers below:
After that I can't see any progress, as -V is pretty silent when writing the flash and -VV dumps far too much to have an overview.
Yes. Progress bar printing is on our list of useful things to do, but some parts of the current flashrom architecture don't really fit, and thus this will require quite some refactoring. I can hack up a progress printing patch which outputs a dot every time 1024 bytes are read/written. That would give you some progress indicator for now, and we can continue fixing flashrom to eventually support something like that natively.
Understood. The dots every 1kb would help to have a minimal monitoring.
Will tackle that soon.
Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00
WTF?!? This looks like data corruption. Such a response is absolutely unacceptable. Can you run
flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -V
a few times (should be a matter of a few seconds) and check if any probe_spi_rdid_generic complains about a parity violation? If yes, there is a bug somewhere which needs to be fixed.
Yes, I will do so, when I am back at home and report them to the mailing list.
Thanks.
Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000.
Ouch! That chip can only write one byte at a time. This will be painful and slow. We might be able to use a few tricks (e.g. AAI write), but even with the tricks, your flash chip is one of the worst cases for the Bus Pirate.
Better awfully slow, than having a brand new, but bricked mainboard ( I have ordered a new preflashed flash chip, but it is still in the delivery). So I am open for some more pain ;-)
True. By the way, flashrom can do cross-flashing, so if the flash chip is removable, you could hotplug it into another board with SPI flash and run flashrom there. Would be much faster (maybe a minute to write), and reads would probably take a second or two.
Flash image seems to be a legacy BIOS. Disabling checks. Writing flash chip... Some block protection in effect, disabling Erasing flash before programming... Erasing flash chip... Looking at blockwise erase function 0... trying... 0x000000-0x000fff, 0x001000-0x001fff, 0x002000-0x002fff, 0x003000-0x003fff, 0x004000-0x004fff, 0x005000-0x005fff, 0x006000-0x006fff, 0x007000-0x007fff, 0x008000-0x008fff, 0x009000-0x009fff, 0x00a000-0x00afff, 0x00b000-0x00bfff, 0x00c000-0x00cfff, 0x00d000-0x00dfff, 0x00e000-0x00efff, 0x00f000-0x00ffff, 0x010000-0x010fff, 0x011000-0x011fff, 0x012000-0x012fff, 0x013000-0x013fff, 0x014000-0x014fff, 0x015000-0x015fff, 0x016000-0x016fff, 0x017000-0x017fff, 0x018000-0x018fff, 0x019000-0x019fff, 0x01a000-0x01afff, 0x01b000-0x01bfff, 0x01c000-0x01cfff, 0x01d000-0x01dfff, 0x01e000-0x01efff, 0x01f000-0x01ffff, 0x020000-0x020fff, 0x021000-0x021fff, 0x022000-0x022fff, 0x023000-0x023fff, 0x024000-0x024fff, 0x025000-0x025fff, 0x026000-0x026fff, 0x027000-0x027fff, 0x028000-0x028fff, 0x029000-0x029fff, 0x02a000-0x02afff, 0x02b000-0x02bfff, 0x02c000-0x02cfff, 0x02d000-0x02dfff, 0x02e000-0x02efff, 0x02f000-0x02ffff, SUCCESS. done.
Timing with the Bus Pirate can be calculated as follows:
If we assume the usbserial driver of your OS pushes all bytes of a read/write at once, we have one USB transaction per read and one transaction per write. Each transaction takes 1 ms (USB standard). To send a SPI command to the chip, we need:
- one write/read to activate CS#
- one write/read to send/receive SPI command and response
- one write/read to deactivate CS#
This means a total of 6 transactions and 6 ms per SPI command if we have optimal conditions. To read a whole chip, we slice it up in pages of 256 bytes each (some chips need that) and then we slice each page up in chunks of 12 bytes each (Bus Pirate read length limit). This means we have 22 chunks per page. Your chip has 1 MByte (1048576 bytes), 4096 pages and thus 4096*22=90112 read chunks. Each chunk has to be read with a separate command, so the absolute minimum read timing for your chip with the current code is 90112*6=540672 ms or roughly 9 minutes.
Your chip supports two write modes:
- standard one-byte-at-a-time (write_1) write (default)
- auto address increment (AAI) write
and flashrom uses write_1 mode right now (can be changed).
write_1 mode means you have to send at least three SPI commands to the chip per written byte: write enable, write byte, read status. Your chip has 1 MByte (1048576 bytes), needs 1048576 byte writes, thus 1048576*3=3145728 SPI commands, and 3145728*6=18874368 ms or roughly 315 minutes to write in the optimal case, plus the time to verify (full chip read).
AAI write mode means you have to send at least two SPI commands (or one SPI command and continuous listening on the SO pin) per two written bytes. Your chip has 1 MByte (1048576 bytes), needs 1048576/2=524288 AAI writes, thus 524288*2=1048576 SPI commands, and 1048576*6=6291456 ms or roughly 105 minutes to write in the optimal case, plus the time to verify (full chip read).
The current flashrom SPI code has some additional delays which shouldn't have an effect during erase/read, but I sent a patch to remove them a few minutes ago. Those delays slow down write a lot, though.
Once the delay removal patch is in, the following options remain:
- Use AAI to speed up write by a factor of 3 compared to the default.
- Violate the Bus Pirate communication protocol and batch each
CS/command/CS combination into one write/read. Should result in a speedup for read/write/erase by a factor of 3. Not sure if it is doable.
- Violate the Bus Pirate communication protocol some more and batch each
flashrom multicommand into one write/read. Speedup by a factor of 2 for write.
With enough protocol violations and AAI write, the minimum write time for your chip is roughly 18 minutes plus the time to read the chip. This write time can only be achieved if your OS has good usbserial drivers and if the Bus Pirate is fast enough.
The biggest mystery right now is the 60 minutes required to erase. Unless I'm mistaken, this means all of the time is spent reading for the verify operation. Given that my calculations result in 9 minutes read time, I'd like to know what's going wrong here before you attempt to write. If this is a problem affecting all operations, you would have to deal with write taking a day or more. That is totally unacceptable.
Can you measure exactly how long a read of the chip takes, preferably while no other processes are running in the background on the machine running flashrom?
I don't like the idea to violate the Bus Pirate communication protocol, but using AAI and utilizing your new sleep removals should be a nice step forward.
OK. I just sent a patch which violates the protocol, but according to the data sheets I have available my hack should work due to existing buffer sizes even if it violates the protocol.
The used computer which is running flashrom and using the Bus Pirate is an Atom D330 running 64bit Ubuntu Lucid Lynx and is normally just a TimeMachine/Fileserver, but was idling all the time.
Hm. Are you running the machine with HZ=100 or HZ=100? HZ=1000 could in theory improve flash access speed (due to scheduler side effects).
I will try to make an exact measurement of the flash erasing and rom reading again.
No need to get erase timing, read timing is sufficient.
Shall I give your speed-up patch a try before I start doing the measurement above?
It would be nice if you could measure read timing with unmodified flashrom and with my protocol violation hack.
Regards, Carl-Daniel
Am 16.06.2010 um 17:00 schrieb Carl-Daniel Hailfinger:
The used computer which is running flashrom and using the Bus Pirate is an Atom D330 running 64bit Ubuntu Lucid Lynx and is normally just a TimeMachine/Fileserver, but was idling all the time.
Hm. Are you running the machine with HZ=100 or HZ=100? HZ=1000 could in theory improve flash access speed (due to scheduler side effects).
I have no idea what is the default, as I haven't add any special commands to change that.
I will try to make an exact measurement of the flash erasing and rom reading again.
No need to get erase timing, read timing is sufficient.
Shall I give your speed-up patch a try before I start doing the measurement above?
It would be nice if you could measure read timing with unmodified flashrom and with my protocol violation hack.
As promised: here is the reading test. first: standard SVN 1048, second: added your buspirate patch, third: added buspirate patch and no_delay patch.
And sorry adding so much text to this email, but I am not sure if there is any important stuff for you inside.
Flashrom without Speed-Update: (20:41:08 to 21:27:50 = 46 min 42 sec)
root@zwerg:~# date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -r readtest -V ; date Wed Jun 16 20:41:08 CEST 2010 flashrom v0.9.2-r1048 on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 300M loops per second, 10 myus = 11 us, 100 myus = 148 us, 1000 myus = 1002 us, 10000 myus = 10056 us, 4 myus = 5 us, OK. Initializing buspirate_spi programmer SPI speed is 8MHz Raw bitbang mode version 1 Raw SPI mode version 1 Probing for AMD Am29F010A/B, 128 KB: skipped. Probing for AMD Am29F002(N)BB, 256 KB: skipped. Probing for AMD Am29F002(N)BT, 256 KB: skipped. Probing for AMD Am29F016D, 2048 KB: skipped. Probing for AMD Am29F040B, 512 KB: skipped. Probing for AMD Am29F080B, 1024 KB: skipped. Probing for AMD Am29LV040B, 512 KB: skipped. Probing for AMD Am29LV081B, 1024 KB: skipped. Probing for ASD AE49F2008, 256 KB: skipped. Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF081, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321A, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF641, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25F512B, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF041, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF081A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26F004, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT29C512, 64 KB: skipped. Probing for Atmel AT29C010A, 128 KB: skipped. Probing for Atmel AT29C020, 256 KB: skipped. Probing for Atmel AT29C040A, 512 KB: skipped. Probing for Atmel AT45CS1282, 16896 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB011D, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB021D, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB041D, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB081D, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB161D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321C, 4224 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB642D, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT49BV512, 64 KB: skipped. Probing for Atmel AT49F020, 256 KB: skipped. Probing for Atmel AT49F002(N), 256 KB: skipped. Probing for Atmel AT49F002(N)T, 256 KB: skipped. Probing for AMIC A25L40PT, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L40PU, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A29002B, 256 KB: skipped. Probing for AMIC A29002T, 256 KB: skipped. Probing for AMIC A29040B, 512 KB: skipped. Probing for AMIC A49LF040A, 512 KB: skipped. Probing for EMST F49B002UA, 256 KB: skipped. Probing for Eon EN25B05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B05T, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10T, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20T, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40T, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80T, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16T, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32T, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64T, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25D16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN29F010, 128 KB: skipped. Probing for EON EN29F002(A)(N)B, 256 KB: skipped. Probing for EON EN29F002(A)(N)T, 256 KB: skipped. Probing for Fujitsu MBM29F004BC, 512 KB: skipped. Probing for Fujitsu MBM29F004TC, 512 KB: skipped. Probing for Fujitsu MBM29F400BC, 512 KB: skipped. Probing for Fujitsu MBM29F400TC, 512 KB: skipped. Probing for Intel 28F001BX-B, 128 KB: skipped. Probing for Intel 28F001BX-T, 128 KB: skipped. Probing for Intel 28F004S5, 512 KB: skipped. Probing for Intel 28F004BV/BE-B, 512 KB: skipped. Probing for Intel 28F004BV/BE-T, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-B, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-T, 512 KB: skipped. Probing for Intel 82802AB, 512 KB: skipped. Probing for Intel 82802AC, 1024 KB: skipped. Probing for Macronix MX25L512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1005, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L2005, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L4005, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L8005, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1605, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1635D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3205, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3235D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L6405, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L12805, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX29F001B, 128 KB: skipped. Probing for Macronix MX29F001T, 128 KB: skipped. Probing for Macronix MX29F002B, 256 KB: skipped. Probing for Macronix MX29F002T, 256 KB: skipped. Probing for Macronix MX29LV040, 512 KB: skipped. Probing for Numonyx M25PE10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV020, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm29F002T, 256 KB: skipped. Probing for PMC Pm29F002B, 256 KB: skipped. Probing for PMC Pm39LV010, 128 KB: skipped. Probing for PMC Pm39LV020, 256 KB: skipped. Probing for PMC Pm39LV040, 512 KB: skipped. Probing for PMC Pm49FL002, 256 KB: skipped. Probing for PMC Pm49FL004, 512 KB: skipped. Probing for Sanyo LF25FW203A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sharp LHF00L04, 1024 KB: skipped. Probing for Spansion S25FL008A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Spansion S25FL016A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF032B, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF040.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF040B, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25LF040A.RES, 512 KB: probe_spi_res2: id1 0xbf, id2 0x8e Probing for SST SST25VF040B.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Probing for SST SST28SF040A, 512 KB: skipped. Probing for SST SST29EE010, 128 KB: skipped. Probing for SST SST29LE010, 128 KB: skipped. Probing for SST SST29EE020A, 256 KB: skipped. Probing for SST SST29LE020, 256 KB: skipped. Probing for SST SST39SF512, 64 KB: skipped. Probing for SST SST39SF010A, 128 KB: skipped. Probing for SST SST39SF020A, 256 KB: skipped. Probing for SST SST39SF040, 512 KB: skipped. Probing for SST SST39VF512, 64 KB: skipped. Probing for SST SST39VF010, 128 KB: skipped. Probing for SST SST39VF020, 256 KB: skipped. Probing for SST SST39VF040, 512 KB: skipped. Probing for SST SST39VF080, 1024 KB: skipped. Probing for SST SST49LF002A/B, 256 KB: skipped. Probing for SST SST49LF003A/B, 384 KB: skipped. Probing for SST SST49LF004A/B, 512 KB: skipped. Probing for SST SST49LF004C, 512 KB: skipped. Probing for SST SST49LF008A, 1024 KB: skipped. Probing for SST SST49LF008C, 1024 KB: skipped. Probing for SST SST49LF016C, 2048 KB: skipped. Probing for SST SST49LF020, 256 KB: skipped. Probing for SST SST49LF020A, 256 KB: skipped. Probing for SST SST49LF040, 512 KB: skipped. Probing for SST SST49LF040B, 512 KB: skipped. Probing for SST SST49LF080A, 1024 KB: skipped. Probing for SST SST49LF160C, 2048 KB: skipped. Probing for ST M25P05-A, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P05.RES, 64 KB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P10.RES, 128 KB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40-old, 512 KB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P128, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M29F002B, 256 KB: skipped. Probing for ST M29F002T/NT, 256 KB: skipped. Probing for ST M29F040B, 512 KB: skipped. Probing for ST M29F400BT, 512 KB: skipped. Probing for ST M29W010B, 128 KB: skipped. Probing for ST M29W040B, 512 KB: skipped. Probing for ST M29W512B, 64 KB: skipped. Probing for ST M50FLW040A, 512 KB: skipped. Probing for ST M50FLW040B, 512 KB: skipped. Probing for ST M50FLW080A, 1024 KB: skipped. Probing for ST M50FLW080B, 1024 KB: skipped. Probing for ST M50FW002, 256 KB: skipped. Probing for ST M50FW016, 2048 KB: skipped. Probing for ST M50FW040, 512 KB: skipped. Probing for ST M50FW080, 1024 KB: skipped. Probing for ST M50LPW116, 2048 KB: skipped. Probing for SyncMOS S29C31004T, 512 KB: skipped. Probing for SyncMOS S29C51001T, 128 KB: skipped. Probing for SyncMOS S29C51002T, 256 KB: skipped. Probing for SyncMOS S29C51004T, 512 KB: skipped. Probing for TI TMS29F002RB, 256 KB: skipped. Probing for TI TMS29F002RT, 256 KB: skipped. Probing for Winbond W25Q80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W29C011, 128 KB: skipped. Probing for Winbond W29C020C, 256 KB: skipped. Probing for Winbond W29C040P, 512 KB: skipped. Probing for Winbond W29EE011, 128 KB: skipped. Probing for Winbond W39V040A, 512 KB: skipped. Probing for Winbond W39V040B, 512 KB: skipped. Probing for Winbond W39V040C, 512 KB: skipped. Probing for Winbond W39V040FA, 512 KB: skipped. Probing for Winbond W39V080A, 1024 KB: skipped. Probing for Winbond W49F002U, 256 KB: skipped. Probing for Winbond W49V002A, 256 KB: skipped. Probing for Winbond W49V002FA, 256 KB: skipped. Probing for Winbond W39V080FA, 1024 KB: skipped. Probing for Winbond W39V080FA (dual mode), 512 KB: skipped. Probing for Atmel unknown Atmel SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for EON unknown EON SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix unknown Macronix SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC unknown PMC SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST unknown SST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST unknown ST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sanyo unknown Sanyo SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (RDID), 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (REMS), 0 KB: probe_spi_rems: id1 0xbf, id2 0x8e === This flash part has status UNTESTED for operations: ERASE 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@flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -Vw, -VE), and mention which mainboard or programmer you tested. Thanks for your help! === Reading flash... done. Raw bitbang mode version 1 Bus Pirate shutdown completed. Wed Jun 16 21:27:50 CEST 2010
Second try with your Buspirate-3x-patch published today: Process running from 21:51:51 to 22:07:40 = 15 min 49 sec
root@zwerg:~# date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -r readtest2 -V ; date Wed Jun 16 21:51:51 CEST 2010 flashrom v0.9.2-r1048-with-3xspeed-bp-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 300M loops per second, 10 myus = 11 us, 100 myus = 101 us, 1000 myus = 1002 us, 10000 myus = 10057 us, 4 myus = 5 us, OK. Initializing buspirate_spi programmer SPI speed is 8MHz Raw bitbang mode version 1 Raw SPI mode version 1 Probing for AMD Am29F010A/B, 128 KB: skipped. Probing for AMD Am29F002(N)BB, 256 KB: skipped. Probing for AMD Am29F002(N)BT, 256 KB: skipped. Probing for AMD Am29F016D, 2048 KB: skipped. Probing for AMD Am29F040B, 512 KB: skipped. Probing for AMD Am29F080B, 1024 KB: skipped. Probing for AMD Am29LV040B, 512 KB: skipped. Probing for AMD Am29LV081B, 1024 KB: skipped. Probing for ASD AE49F2008, 256 KB: skipped. Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF081, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321A, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF641, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25F512B, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF041, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF081A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26F004, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT29C512, 64 KB: skipped. Probing for Atmel AT29C010A, 128 KB: skipped. Probing for Atmel AT29C020, 256 KB: skipped. Probing for Atmel AT29C040A, 512 KB: skipped. Probing for Atmel AT45CS1282, 16896 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB011D, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB021D, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB041D, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB081D, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB161D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321C, 4224 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB642D, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT49BV512, 64 KB: skipped. Probing for Atmel AT49F020, 256 KB: skipped. Probing for Atmel AT49F002(N), 256 KB: skipped. Probing for Atmel AT49F002(N)T, 256 KB: skipped. Probing for AMIC A25L40PT, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L40PU, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A29002B, 256 KB: skipped. Probing for AMIC A29002T, 256 KB: skipped. Probing for AMIC A29040B, 512 KB: skipped. Probing for AMIC A49LF040A, 512 KB: skipped. Probing for EMST F49B002UA, 256 KB: skipped. Probing for Eon EN25B05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B05T, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10T, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20T, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40T, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80T, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16T, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32T, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64T, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25D16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN29F010, 128 KB: skipped. Probing for EON EN29F002(A)(N)B, 256 KB: skipped. Probing for EON EN29F002(A)(N)T, 256 KB: skipped. Probing for Fujitsu MBM29F004BC, 512 KB: skipped. Probing for Fujitsu MBM29F004TC, 512 KB: skipped. Probing for Fujitsu MBM29F400BC, 512 KB: skipped. Probing for Fujitsu MBM29F400TC, 512 KB: skipped. Probing for Intel 28F001BX-B, 128 KB: skipped. Probing for Intel 28F001BX-T, 128 KB: skipped. Probing for Intel 28F004S5, 512 KB: skipped. Probing for Intel 28F004BV/BE-B, 512 KB: skipped. Probing for Intel 28F004BV/BE-T, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-B, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-T, 512 KB: skipped. Probing for Intel 82802AB, 512 KB: skipped. Probing for Intel 82802AC, 1024 KB: skipped. Probing for Macronix MX25L512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1005, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L2005, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L4005, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L8005, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1605, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1635D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3205, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3235D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L6405, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L12805, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX29F001B, 128 KB: skipped. Probing for Macronix MX29F001T, 128 KB: skipped. Probing for Macronix MX29F002B, 256 KB: skipped. Probing for Macronix MX29F002T, 256 KB: skipped. Probing for Macronix MX29LV040, 512 KB: skipped. Probing for Numonyx M25PE10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV020, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm29F002T, 256 KB: skipped. Probing for PMC Pm29F002B, 256 KB: skipped. Probing for PMC Pm39LV010, 128 KB: skipped. Probing for PMC Pm39LV020, 256 KB: skipped. Probing for PMC Pm39LV040, 512 KB: skipped. Probing for PMC Pm49FL002, 256 KB: skipped. Probing for PMC Pm49FL004, 512 KB: skipped. Probing for Sanyo LF25FW203A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sharp LHF00L04, 1024 KB: skipped. Probing for Spansion S25FL008A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Spansion S25FL016A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF032B, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF040.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF040B, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25LF040A.RES, 512 KB: probe_spi_res2: id1 0xbf, id2 0x8e Probing for SST SST25VF040B.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Probing for SST SST28SF040A, 512 KB: skipped. Probing for SST SST29EE010, 128 KB: skipped. Probing for SST SST29LE010, 128 KB: skipped. Probing for SST SST29EE020A, 256 KB: skipped. Probing for SST SST29LE020, 256 KB: skipped. Probing for SST SST39SF512, 64 KB: skipped. Probing for SST SST39SF010A, 128 KB: skipped. Probing for SST SST39SF020A, 256 KB: skipped. Probing for SST SST39SF040, 512 KB: skipped. Probing for SST SST39VF512, 64 KB: skipped. Probing for SST SST39VF010, 128 KB: skipped. Probing for SST SST39VF020, 256 KB: skipped. Probing for SST SST39VF040, 512 KB: skipped. Probing for SST SST39VF080, 1024 KB: skipped. Probing for SST SST49LF002A/B, 256 KB: skipped. Probing for SST SST49LF003A/B, 384 KB: skipped. Probing for SST SST49LF004A/B, 512 KB: skipped. Probing for SST SST49LF004C, 512 KB: skipped. Probing for SST SST49LF008A, 1024 KB: skipped. Probing for SST SST49LF008C, 1024 KB: skipped. Probing for SST SST49LF016C, 2048 KB: skipped. Probing for SST SST49LF020, 256 KB: skipped. Probing for SST SST49LF020A, 256 KB: skipped. Probing for SST SST49LF040, 512 KB: skipped. Probing for SST SST49LF040B, 512 KB: skipped. Probing for SST SST49LF080A, 1024 KB: skipped. Probing for SST SST49LF160C, 2048 KB: skipped. Probing for ST M25P05-A, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P05.RES, 64 KB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P10.RES, 128 KB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40-old, 512 KB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P128, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M29F002B, 256 KB: skipped. Probing for ST M29F002T/NT, 256 KB: skipped. Probing for ST M29F040B, 512 KB: skipped. Probing for ST M29F400BT, 512 KB: skipped. Probing for ST M29W010B, 128 KB: skipped. Probing for ST M29W040B, 512 KB: skipped. Probing for ST M29W512B, 64 KB: skipped. Probing for ST M50FLW040A, 512 KB: skipped. Probing for ST M50FLW040B, 512 KB: skipped. Probing for ST M50FLW080A, 1024 KB: skipped. Probing for ST M50FLW080B, 1024 KB: skipped. Probing for ST M50FW002, 256 KB: skipped. Probing for ST M50FW016, 2048 KB: skipped. Probing for ST M50FW040, 512 KB: skipped. Probing for ST M50FW080, 1024 KB: skipped. Probing for ST M50LPW116, 2048 KB: skipped. Probing for SyncMOS S29C31004T, 512 KB: skipped. Probing for SyncMOS S29C51001T, 128 KB: skipped. Probing for SyncMOS S29C51002T, 256 KB: skipped. Probing for SyncMOS S29C51004T, 512 KB: skipped. Probing for TI TMS29F002RB, 256 KB: skipped. Probing for TI TMS29F002RT, 256 KB: skipped. Probing for Winbond W25Q80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W29C011, 128 KB: skipped. Probing for Winbond W29C020C, 256 KB: skipped. Probing for Winbond W29C040P, 512 KB: skipped. Probing for Winbond W29EE011, 128 KB: skipped. Probing for Winbond W39V040A, 512 KB: skipped. Probing for Winbond W39V040B, 512 KB: skipped. Probing for Winbond W39V040C, 512 KB: skipped. Probing for Winbond W39V040FA, 512 KB: skipped. Probing for Winbond W39V080A, 1024 KB: skipped. Probing for Winbond W49F002U, 256 KB: skipped. Probing for Winbond W49V002A, 256 KB: skipped. Probing for Winbond W49V002FA, 256 KB: skipped. Probing for Winbond W39V080FA, 1024 KB: skipped. Probing for Winbond W39V080FA (dual mode), 512 KB: skipped. Probing for Atmel unknown Atmel SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for EON unknown EON SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix unknown Macronix SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC unknown PMC SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST unknown SST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST unknown ST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sanyo unknown Sanyo SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (RDID), 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (REMS), 0 KB: probe_spi_rems: id1 0xbf, id2 0x8e === This flash part has status UNTESTED for operations: ERASE 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@flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -Vw, -VE), and mention which mainboard or programmer you tested. Thanks for your help! === Reading flash... done. Raw bitbang mode version 1 Bus Pirate shutdown completed. Wed Jun 16 22:07:40 CEST 2010
Third try: using upper optimized flash and add the no_delay_patch from you: From 22:42:51 to 22:58:27 = 15 min 36 sec
root@zwerg:~# date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -r readtest3 -V ; date Wed Jun 16 22:42:51 CEST 2010 flashrom v0.9.2-r1048-with-3xspeed-bp-patch-with-spi_nodelay-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 299M loops per second, 10 myus = 11 us, 100 myus = 109 us, 1000 myus = 998 us, 10000 myus = 10116 us, 4 myus = 4 us, OK. Initializing buspirate_spi programmer SPI speed is 8MHz Raw bitbang mode version 1 Raw SPI mode version 1 Probing for AMD Am29F010A/B, 128 KB: skipped. Probing for AMD Am29F002(N)BB, 256 KB: skipped. Probing for AMD Am29F002(N)BT, 256 KB: skipped. Probing for AMD Am29F016D, 2048 KB: skipped. Probing for AMD Am29F040B, 512 KB: skipped. Probing for AMD Am29F080B, 1024 KB: skipped. Probing for AMD Am29LV040B, 512 KB: skipped. Probing for AMD Am29LV081B, 1024 KB: skipped. Probing for ASD AE49F2008, 256 KB: skipped. Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF081, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321A, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF641, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25F512B, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF041, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF081A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26F004, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT29C512, 64 KB: skipped. Probing for Atmel AT29C010A, 128 KB: skipped. Probing for Atmel AT29C020, 256 KB: skipped. Probing for Atmel AT29C040A, 512 KB: skipped. Probing for Atmel AT45CS1282, 16896 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB011D, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB021D, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB041D, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB081D, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB161D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321C, 4224 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB642D, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT49BV512, 64 KB: skipped. Probing for Atmel AT49F020, 256 KB: skipped. Probing for Atmel AT49F002(N), 256 KB: skipped. Probing for Atmel AT49F002(N)T, 256 KB: skipped. Probing for AMIC A25L40PT, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L40PU, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A29002B, 256 KB: skipped. Probing for AMIC A29002T, 256 KB: skipped. Probing for AMIC A29040B, 512 KB: skipped. Probing for AMIC A49LF040A, 512 KB: skipped. Probing for EMST F49B002UA, 256 KB: skipped. Probing for Eon EN25B05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B05T, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10T, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20T, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40T, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80T, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16T, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32T, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64T, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25D16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN29F010, 128 KB: skipped. Probing for EON EN29F002(A)(N)B, 256 KB: skipped. Probing for EON EN29F002(A)(N)T, 256 KB: skipped. Probing for Fujitsu MBM29F004BC, 512 KB: skipped. Probing for Fujitsu MBM29F004TC, 512 KB: skipped. Probing for Fujitsu MBM29F400BC, 512 KB: skipped. Probing for Fujitsu MBM29F400TC, 512 KB: skipped. Probing for Intel 28F001BX-B, 128 KB: skipped. Probing for Intel 28F001BX-T, 128 KB: skipped. Probing for Intel 28F004S5, 512 KB: skipped. Probing for Intel 28F004BV/BE-B, 512 KB: skipped. Probing for Intel 28F004BV/BE-T, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-B, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-T, 512 KB: skipped. Probing for Intel 82802AB, 512 KB: skipped. Probing for Intel 82802AC, 1024 KB: skipped. Probing for Macronix MX25L512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1005, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L2005, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L4005, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L8005, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1605, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1635D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3205, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3235D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L6405, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L12805, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX29F001B, 128 KB: skipped. Probing for Macronix MX29F001T, 128 KB: skipped. Probing for Macronix MX29F002B, 256 KB: skipped. Probing for Macronix MX29F002T, 256 KB: skipped. Probing for Macronix MX29LV040, 512 KB: skipped. Probing for Numonyx M25PE10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV020, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm29F002T, 256 KB: skipped. Probing for PMC Pm29F002B, 256 KB: skipped. Probing for PMC Pm39LV010, 128 KB: skipped. Probing for PMC Pm39LV020, 256 KB: skipped. Probing for PMC Pm39LV040, 512 KB: skipped. Probing for PMC Pm49FL002, 256 KB: skipped. Probing for PMC Pm49FL004, 512 KB: skipped. Probing for Sanyo LF25FW203A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sharp LHF00L04, 1024 KB: skipped. Probing for Spansion S25FL008A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Spansion S25FL016A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF032B, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF040.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF040B, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25LF040A.RES, 512 KB: probe_spi_res2: id1 0xbf, id2 0x8e Probing for SST SST25VF040B.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Probing for SST SST28SF040A, 512 KB: skipped. Probing for SST SST29EE010, 128 KB: skipped. Probing for SST SST29LE010, 128 KB: skipped. Probing for SST SST29EE020A, 256 KB: skipped. Probing for SST SST29LE020, 256 KB: skipped. Probing for SST SST39SF512, 64 KB: skipped. Probing for SST SST39SF010A, 128 KB: skipped. Probing for SST SST39SF020A, 256 KB: skipped. Probing for SST SST39SF040, 512 KB: skipped. Probing for SST SST39VF512, 64 KB: skipped. Probing for SST SST39VF010, 128 KB: skipped. Probing for SST SST39VF020, 256 KB: skipped. Probing for SST SST39VF040, 512 KB: skipped. Probing for SST SST39VF080, 1024 KB: skipped. Probing for SST SST49LF002A/B, 256 KB: skipped. Probing for SST SST49LF003A/B, 384 KB: skipped. Probing for SST SST49LF004A/B, 512 KB: skipped. Probing for SST SST49LF004C, 512 KB: skipped. Probing for SST SST49LF008A, 1024 KB: skipped. Probing for SST SST49LF008C, 1024 KB: skipped. Probing for SST SST49LF016C, 2048 KB: skipped. Probing for SST SST49LF020, 256 KB: skipped. Probing for SST SST49LF020A, 256 KB: skipped. Probing for SST SST49LF040, 512 KB: skipped. Probing for SST SST49LF040B, 512 KB: skipped. Probing for SST SST49LF080A, 1024 KB: skipped. Probing for SST SST49LF160C, 2048 KB: skipped. Probing for ST M25P05-A, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P05.RES, 64 KB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P10.RES, 128 KB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40-old, 512 KB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P128, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M29F002B, 256 KB: skipped. Probing for ST M29F002T/NT, 256 KB: skipped. Probing for ST M29F040B, 512 KB: skipped. Probing for ST M29F400BT, 512 KB: skipped. Probing for ST M29W010B, 128 KB: skipped. Probing for ST M29W040B, 512 KB: skipped. Probing for ST M29W512B, 64 KB: skipped. Probing for ST M50FLW040A, 512 KB: skipped. Probing for ST M50FLW040B, 512 KB: skipped. Probing for ST M50FLW080A, 1024 KB: skipped. Probing for ST M50FLW080B, 1024 KB: skipped. Probing for ST M50FW002, 256 KB: skipped. Probing for ST M50FW016, 2048 KB: skipped. Probing for ST M50FW040, 512 KB: skipped. Probing for ST M50FW080, 1024 KB: skipped. Probing for ST M50LPW116, 2048 KB: skipped. Probing for SyncMOS S29C31004T, 512 KB: skipped. Probing for SyncMOS S29C51001T, 128 KB: skipped. Probing for SyncMOS S29C51002T, 256 KB: skipped. Probing for SyncMOS S29C51004T, 512 KB: skipped. Probing for TI TMS29F002RB, 256 KB: skipped. Probing for TI TMS29F002RT, 256 KB: skipped. Probing for Winbond W25Q80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W29C011, 128 KB: skipped. Probing for Winbond W29C020C, 256 KB: skipped. Probing for Winbond W29C040P, 512 KB: skipped. Probing for Winbond W29EE011, 128 KB: skipped. Probing for Winbond W39V040A, 512 KB: skipped. Probing for Winbond W39V040B, 512 KB: skipped. Probing for Winbond W39V040C, 512 KB: skipped. Probing for Winbond W39V040FA, 512 KB: skipped. Probing for Winbond W39V080A, 1024 KB: skipped. Probing for Winbond W49F002U, 256 KB: skipped. Probing for Winbond W49V002A, 256 KB: skipped. Probing for Winbond W49V002FA, 256 KB: skipped. Probing for Winbond W39V080FA, 1024 KB: skipped. Probing for Winbond W39V080FA (dual mode), 512 KB: skipped. Probing for Atmel unknown Atmel SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for EON unknown EON SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix unknown Macronix SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC unknown PMC SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST unknown SST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST unknown ST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sanyo unknown Sanyo SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (RDID), 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (REMS), 0 KB: probe_spi_rems: id1 0xbf, id2 0x8e === This flash part has status UNTESTED for operations: ERASE 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@flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -Vw, -VE), and mention which mainboard or programmer you tested. Thanks for your help! === Reading flash... done. Raw bitbang mode version 1 Bus Pirate shutdown completed. Wed Jun 16 22:58:27 CEST 2010
kind regards,
Daniel
On 16.06.2010 23:07, Daniel Flinkmann wrote:
Am 16.06.2010 um 17:00 schrieb Carl-Daniel Hailfinger:
The used computer which is running flashrom and using the Bus Pirate is an Atom D330 running 64bit Ubuntu Lucid Lynx and is normally just a TimeMachine/Fileserver, but was idling all the time.
Hm. Are you running the machine with HZ=100 or HZ=100? HZ=1000 could in theory improve flash access speed (due to scheduler side effects).
I have no idea what is the default, as I haven't add any special commands to change that.
I think it is possible to specify HZ=1000 in the bootloader, but it has been a few years since I looked at that. Anyway, for us this might not be as important as I thought.
It would be nice if you could measure read timing with unmodified flashrom and with my protocol violation hack.
As promised: here is the reading test. first: standard SVN 1048, second: added your buspirate patch, third: added buspirate patch and no_delay patch.
And sorry adding so much text to this email, but I am not sure if there is any important stuff for you inside.
Thanks, those are very detailed results and very helpful.
flashrom without Speed-Update: 46 min 42 sec
# flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -r readtest -V Wed Jun 16 20:41:08 CEST 2010 flashrom v0.9.2-r1048 on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian Initializing buspirate_spi programmer Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Reading flash... done. Bus Pirate shutdown completed. Wed Jun 16 21:27:50 CEST 2010
46 minutes instead of the theoretical minimum of 9 minutes. Bad. Maybe the kernel usbserial driver is really crappy.
flashrom with Buspirate-3x-patch published today: 15 min 49 sec
# flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -r readtest2 -V flashrom v0.9.2-r1048-with-3xspeed-bp-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian Initializing buspirate_spi programmer Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Reading flash... done. Bus Pirate shutdown completed.
15 minutes instead of the theoretical minimum of 3 minutes. Still bad, but at least we got the expected speedup from my patch.
flashrom with Buspirate-3x-patch and the no_delay_patch: 15 min 36 sec
# flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -r readtest3 -V Wed Jun 16 22:42:51 CEST 2010 flashrom v0.9.2-r1048-with-3xspeed-bp-patch-with-spi_nodelay-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian Initializing buspirate_spi programmer Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Reading flash... done. Bus Pirate shutdown completed.
No additional speedup as I expected.
Could you try erase with my 3x speedup patch? It should not take longer than read. If it takes significantly longer, please test with 3x speedup and no_delay as well.
There still is a bug with the first transmitted SPI command. It seems we always send garbage or we always read garbage. Not sure. I bet that if you run
flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -c AT25DF041A -V
you will see a RDID byte 0 parity violation again. In fact, this will probably happen with every SPI chip you can specify. If I'm right, we either have a Bus Pirate bug or a flashrom bug.
Regards, Carl-Daniel
Am 17.06.2010 um 01:22 schrieb Carl-Daniel Hailfinger:
Could you try erase with my 3x speedup patch? It should not take longer than read. If it takes significantly longer, please test with 3x speedup and no_delay as well.
Well, I could try that, but see my experience below.
There still is a bug with the first transmitted SPI command. It seems we always send garbage or we always read garbage. Not sure. I bet that if you run
flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -c AT25DF041A -V
you will see a RDID byte 0 parity violation again. In fact, this will probably happen with every SPI chip you can specify. If I'm right, we either have a Bus Pirate bug or a flashrom bug.
At the moment I am still waiting for the end of the write flash command, which is running since 23:22 CET yesterday (So that are 8 hour running).
I made following experience with the "no_delay patch": date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -Vw JX58D422.BIN ; date Wed Jun 16 23:07:52 CEST 2010 flashrom v0.9.2-r1048-with-3xspeed-bp-patch-with-spi_nodelay-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 300M loops per second, 10 myus = 11 us, 100 myus = 149 us, 1000 myus = 1002 us, 10000 myus = 10062 us, 4 myus = 5 us, OK. Initializing buspirate_spi programmer SPI speed is 8MHz Raw bitbang mode version 1 Raw SPI mode version 1 Probing for AMD Am29F010A/B, 128 KB: skipped. Probing for AMD Am29F002(N)BB, 256 KB: skipped. Probing for AMD Am29F002(N)BT, 256 KB: skipped. Probing for AMD Am29F016D, 2048 KB: skipped. Probing for AMD Am29F040B, 512 KB: skipped. Probing for AMD Am29F080B, 1024 KB: skipped. Probing for AMD Am29LV040B, 512 KB: skipped. Probing for AMD Am29LV081B, 1024 KB: skipped. Probing for ASD AE49F2008, 256 KB: skipped. Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF081, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321A, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF641, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25F512B, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF041, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF081A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26F004, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT29C512, 64 KB: skipped. Probing for Atmel AT29C010A, 128 KB: skipped. Probing for Atmel AT29C020, 256 KB: skipped. Probing for Atmel AT29C040A, 512 KB: skipped. Probing for Atmel AT45CS1282, 16896 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB011D, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB021D, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB041D, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB081D, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB161D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321C, 4224 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB642D, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT49BV512, 64 KB: skipped. Probing for Atmel AT49F020, 256 KB: skipped. Probing for Atmel AT49F002(N), 256 KB: skipped. Probing for Atmel AT49F002(N)T, 256 KB: skipped. Probing for AMIC A25L40PT, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L40PU, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A29002B, 256 KB: skipped. Probing for AMIC A29002T, 256 KB: skipped. Probing for AMIC A29040B, 512 KB: skipped. Probing for AMIC A49LF040A, 512 KB: skipped. Probing for EMST F49B002UA, 256 KB: skipped. Probing for Eon EN25B05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B05T, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10T, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20T, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40T, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80T, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16T, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32T, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64T, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25D16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN29F010, 128 KB: skipped. Probing for EON EN29F002(A)(N)B, 256 KB: skipped. Probing for EON EN29F002(A)(N)T, 256 KB: skipped. Probing for Fujitsu MBM29F004BC, 512 KB: skipped. Probing for Fujitsu MBM29F004TC, 512 KB: skipped. Probing for Fujitsu MBM29F400BC, 512 KB: skipped. Probing for Fujitsu MBM29F400TC, 512 KB: skipped. Probing for Intel 28F001BX-B, 128 KB: skipped. Probing for Intel 28F001BX-T, 128 KB: skipped. Probing for Intel 28F004S5, 512 KB: skipped. Probing for Intel 28F004BV/BE-B, 512 KB: skipped. Probing for Intel 28F004BV/BE-T, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-B, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-T, 512 KB: skipped. Probing for Intel 82802AB, 512 KB: skipped. Probing for Intel 82802AC, 1024 KB: skipped. Probing for Macronix MX25L512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1005, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L2005, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L4005, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L8005, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1605, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1635D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3205, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3235D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L6405, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L12805, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX29F001B, 128 KB: skipped. Probing for Macronix MX29F001T, 128 KB: skipped. Probing for Macronix MX29F002B, 256 KB: skipped. Probing for Macronix MX29F002T, 256 KB: skipped. Probing for Macronix MX29LV040, 512 KB: skipped. Probing for Numonyx M25PE10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV020, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm29F002T, 256 KB: skipped. Probing for PMC Pm29F002B, 256 KB: skipped. Probing for PMC Pm39LV010, 128 KB: skipped. Probing for PMC Pm39LV020, 256 KB: skipped. Probing for PMC Pm39LV040, 512 KB: skipped. Probing for PMC Pm49FL002, 256 KB: skipped. Probing for PMC Pm49FL004, 512 KB: skipped. Probing for Sanyo LF25FW203A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sharp LHF00L04, 1024 KB: skipped. Probing for Spansion S25FL008A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Spansion S25FL016A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF032B, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF040.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF040B, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25LF040A.RES, 512 KB: probe_spi_res2: id1 0xbf, id2 0x8e Probing for SST SST25VF040B.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Probing for SST SST28SF040A, 512 KB: skipped. Probing for SST SST29EE010, 128 KB: skipped. Probing for SST SST29LE010, 128 KB: skipped. Probing for SST SST29EE020A, 256 KB: skipped. Probing for SST SST29LE020, 256 KB: skipped. Probing for SST SST39SF512, 64 KB: skipped. Probing for SST SST39SF010A, 128 KB: skipped. Probing for SST SST39SF020A, 256 KB: skipped. Probing for SST SST39SF040, 512 KB: skipped. Probing for SST SST39VF512, 64 KB: skipped. Probing for SST SST39VF010, 128 KB: skipped. Probing for SST SST39VF020, 256 KB: skipped. Probing for SST SST39VF040, 512 KB: skipped. Probing for SST SST39VF080, 1024 KB: skipped. Probing for SST SST49LF002A/B, 256 KB: skipped. Probing for SST SST49LF003A/B, 384 KB: skipped. Probing for SST SST49LF004A/B, 512 KB: skipped. Probing for SST SST49LF004C, 512 KB: skipped. Probing for SST SST49LF008A, 1024 KB: skipped. Probing for SST SST49LF008C, 1024 KB: skipped. Probing for SST SST49LF016C, 2048 KB: skipped. Probing for SST SST49LF020, 256 KB: skipped. Probing for SST SST49LF020A, 256 KB: skipped. Probing for SST SST49LF040, 512 KB: skipped. Probing for SST SST49LF040B, 512 KB: skipped. Probing for SST SST49LF080A, 1024 KB: skipped. Probing for SST SST49LF160C, 2048 KB: skipped. Probing for ST M25P05-A, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P05.RES, 64 KB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P10.RES, 128 KB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40-old, 512 KB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P128, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M29F002B, 256 KB: skipped. Probing for ST M29F002T/NT, 256 KB: skipped. Probing for ST M29F040B, 512 KB: skipped. Probing for ST M29F400BT, 512 KB: skipped. Probing for ST M29W010B, 128 KB: skipped. Probing for ST M29W040B, 512 KB: skipped. Probing for ST M29W512B, 64 KB: skipped. Probing for ST M50FLW040A, 512 KB: skipped. Probing for ST M50FLW040B, 512 KB: skipped. Probing for ST M50FLW080A, 1024 KB: skipped. Probing for ST M50FLW080B, 1024 KB: skipped. Probing for ST M50FW002, 256 KB: skipped. Probing for ST M50FW016, 2048 KB: skipped. Probing for ST M50FW040, 512 KB: skipped. Probing for ST M50FW080, 1024 KB: skipped. Probing for ST M50LPW116, 2048 KB: skipped. Probing for SyncMOS S29C31004T, 512 KB: skipped. Probing for SyncMOS S29C51001T, 128 KB: skipped. Probing for SyncMOS S29C51002T, 256 KB: skipped. Probing for SyncMOS S29C51004T, 512 KB: skipped. Probing for TI TMS29F002RB, 256 KB: skipped. Probing for TI TMS29F002RT, 256 KB: skipped. Probing for Winbond W25Q80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W29C011, 128 KB: skipped. Probing for Winbond W29C020C, 256 KB: skipped. Probing for Winbond W29C040P, 512 KB: skipped. Probing for Winbond W29EE011, 128 KB: skipped. Probing for Winbond W39V040A, 512 KB: skipped. Probing for Winbond W39V040B, 512 KB: skipped. Probing for Winbond W39V040C, 512 KB: skipped. Probing for Winbond W39V040FA, 512 KB: skipped. Probing for Winbond W39V080A, 1024 KB: skipped. Probing for Winbond W49F002U, 256 KB: skipped. Probing for Winbond W49V002A, 256 KB: skipped. Probing for Winbond W49V002FA, 256 KB: skipped. Probing for Winbond W39V080FA, 1024 KB: skipped. Probing for Winbond W39V080FA (dual mode), 512 KB: skipped. Probing for Atmel unknown Atmel SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for EON unknown EON SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix unknown Macronix SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC unknown PMC SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST unknown SST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST unknown ST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sanyo unknown Sanyo SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (RDID), 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (REMS), 0 KB: probe_spi_rems: id1 0xbf, id2 0x8e === This flash part has status UNTESTED for operations: ERASE 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@flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -Vw, -VE), and mention which mainboard or programmer you tested. Thanks for your help! === Flash image seems to be a legacy BIOS. Disabling checks. Writing flash chip... Some block protection in effect, disabling Erasing flash before programming... Erasing flash chip... Looking at blockwise erase function 0... trying... 0x000000-0x000fff, 0x001000-0x001fff, 0x002000-0x002fff, 0x003000-0x003fff, 0x004000-0x004fff, 0x005000-0x005fff, 0x006000-0x006fff, 0x007000-0x007fff, 0x008000-0x008fff, 0x009000-0x009fff, 0x00a000-0x00afff, 0x00b000-0x00bfff, 0x00c000-0x00cfff, 0x00d000-0x00dfff, 0x00e000-0x00efff, 0x00f000-0x00ffff, 0x010000-0x010fff, 0x011000-0x011fff, 0x012000-0x012fff, 0x013000-0x013fff, ERASE FAILED at 0x00013000! Expected=0xff, Read=0x00, failed byte count from 0x00013000-0x00013fff: 0xc ERASE FAILED!
Looking at blockwise erase function 1... trying... 0x000000-0x007fff, 0x008000-0x00ffff, 0x010000-0x017fff, ERASE FAILED at 0x00010000! Expected=0xff, Read=0x00, failed byte count from 0x00010000-0x00017fff: 0xc ERASE FAILED!
Looking at blockwise erase function 2... trying... 0x000000-0x00ffff, ERASE FAILED at 0x00000000! Expected=0xff, Read=0x00, failed byte count from 0x00000000-0x0000ffff: 0xc ERASE FAILED!
Looking at blockwise erase function 3... trying... 0x000000-0x0fffff, ERASE FAILED at 0x00000000! Expected=0xff, Read=0x00,^C
... So I stopped the erasing and rebuild the version without the no_delay patch and using just the 3x-speed-bp-patch:
root@zwerg:~# date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -Vw JX58D422.BIN ; date Wed Jun 16 23:22:25 CEST 2010 flashrom v0.9.2-r1048-with-3xspeed-bp-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 2 usecs, 300M loops per second, 10 myus = 11 us, 100 myus = 101 us, 1000 myus = 1051 us, 10000 myus = 10057 us, 8 myus = 8 us, OK. Initializing buspirate_spi programmer SPI speed is 8MHz Raw bitbang mode version 1 Raw SPI mode version 1 Probing for AMD Am29F010A/B, 128 KB: skipped. Probing for AMD Am29F002(N)BB, 256 KB: skipped. Probing for AMD Am29F002(N)BT, 256 KB: skipped. Probing for AMD Am29F016D, 2048 KB: skipped. Probing for AMD Am29F040B, 512 KB: skipped. Probing for AMD Am29F080B, 1024 KB: skipped. Probing for AMD Am29LV040B, 512 KB: skipped. Probing for AMD Am29LV081B, 1024 KB: skipped. Probing for ASD AE49F2008, 256 KB: skipped. Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF081, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321A, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF641, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25F512B, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF041, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF081A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26F004, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT29C512, 64 KB: skipped. Probing for Atmel AT29C010A, 128 KB: skipped. Probing for Atmel AT29C020, 256 KB: skipped. Probing for Atmel AT29C040A, 512 KB: skipped. Probing for Atmel AT45CS1282, 16896 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB011D, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB021D, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB041D, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB081D, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB161D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321C, 4224 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB642D, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT49BV512, 64 KB: skipped. Probing for Atmel AT49F020, 256 KB: skipped. Probing for Atmel AT49F002(N), 256 KB: skipped. Probing for Atmel AT49F002(N)T, 256 KB: skipped. Probing for AMIC A25L40PT, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L40PU, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A29002B, 256 KB: skipped. Probing for AMIC A29002T, 256 KB: skipped. Probing for AMIC A29040B, 512 KB: skipped. Probing for AMIC A49LF040A, 512 KB: skipped. Probing for EMST F49B002UA, 256 KB: skipped. Probing for Eon EN25B05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B05T, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10T, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20T, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40T, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80T, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16T, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32T, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64T, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25D16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN29F010, 128 KB: skipped. Probing for EON EN29F002(A)(N)B, 256 KB: skipped. Probing for EON EN29F002(A)(N)T, 256 KB: skipped. Probing for Fujitsu MBM29F004BC, 512 KB: skipped. Probing for Fujitsu MBM29F004TC, 512 KB: skipped. Probing for Fujitsu MBM29F400BC, 512 KB: skipped. Probing for Fujitsu MBM29F400TC, 512 KB: skipped. Probing for Intel 28F001BX-B, 128 KB: skipped. Probing for Intel 28F001BX-T, 128 KB: skipped. Probing for Intel 28F004S5, 512 KB: skipped. Probing for Intel 28F004BV/BE-B, 512 KB: skipped. Probing for Intel 28F004BV/BE-T, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-B, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-T, 512 KB: skipped. Probing for Intel 82802AB, 512 KB: skipped. Probing for Intel 82802AC, 1024 KB: skipped. Probing for Macronix MX25L512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1005, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L2005, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L4005, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L8005, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1605, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1635D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3205, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3235D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L6405, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L12805, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX29F001B, 128 KB: skipped. Probing for Macronix MX29F001T, 128 KB: skipped. Probing for Macronix MX29F002B, 256 KB: skipped. Probing for Macronix MX29F002T, 256 KB: skipped. Probing for Macronix MX29LV040, 512 KB: skipped. Probing for Numonyx M25PE10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV020, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm29F002T, 256 KB: skipped. Probing for PMC Pm29F002B, 256 KB: skipped. Probing for PMC Pm39LV010, 128 KB: skipped. Probing for PMC Pm39LV020, 256 KB: skipped. Probing for PMC Pm39LV040, 512 KB: skipped. Probing for PMC Pm49FL002, 256 KB: skipped. Probing for PMC Pm49FL004, 512 KB: skipped. Probing for Sanyo LF25FW203A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sharp LHF00L04, 1024 KB: skipped. Probing for Spansion S25FL008A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Spansion S25FL016A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF032B, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF040.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF040B, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25LF040A.RES, 512 KB: probe_spi_res2: id1 0xbf, id2 0x8e Probing for SST SST25VF040B.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Probing for SST SST28SF040A, 512 KB: skipped. Probing for SST SST29EE010, 128 KB: skipped. Probing for SST SST29LE010, 128 KB: skipped. Probing for SST SST29EE020A, 256 KB: skipped. Probing for SST SST29LE020, 256 KB: skipped. Probing for SST SST39SF512, 64 KB: skipped. Probing for SST SST39SF010A, 128 KB: skipped. Probing for SST SST39SF020A, 256 KB: skipped. Probing for SST SST39SF040, 512 KB: skipped. Probing for SST SST39VF512, 64 KB: skipped. Probing for SST SST39VF010, 128 KB: skipped. Probing for SST SST39VF020, 256 KB: skipped. Probing for SST SST39VF040, 512 KB: skipped. Probing for SST SST39VF080, 1024 KB: skipped. Probing for SST SST49LF002A/B, 256 KB: skipped. Probing for SST SST49LF003A/B, 384 KB: skipped. Probing for SST SST49LF004A/B, 512 KB: skipped. Probing for SST SST49LF004C, 512 KB: skipped. Probing for SST SST49LF008A, 1024 KB: skipped. Probing for SST SST49LF008C, 1024 KB: skipped. Probing for SST SST49LF016C, 2048 KB: skipped. Probing for SST SST49LF020, 256 KB: skipped. Probing for SST SST49LF020A, 256 KB: skipped. Probing for SST SST49LF040, 512 KB: skipped. Probing for SST SST49LF040B, 512 KB: skipped. Probing for SST SST49LF080A, 1024 KB: skipped. Probing for SST SST49LF160C, 2048 KB: skipped. Probing for ST M25P05-A, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P05.RES, 64 KB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P10.RES, 128 KB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40-old, 512 KB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P128, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M29F002B, 256 KB: skipped. Probing for ST M29F002T/NT, 256 KB: skipped. Probing for ST M29F040B, 512 KB: skipped. Probing for ST M29F400BT, 512 KB: skipped. Probing for ST M29W010B, 128 KB: skipped. Probing for ST M29W040B, 512 KB: skipped. Probing for ST M29W512B, 64 KB: skipped. Probing for ST M50FLW040A, 512 KB: skipped. Probing for ST M50FLW040B, 512 KB: skipped. Probing for ST M50FLW080A, 1024 KB: skipped. Probing for ST M50FLW080B, 1024 KB: skipped. Probing for ST M50FW002, 256 KB: skipped. Probing for ST M50FW016, 2048 KB: skipped. Probing for ST M50FW040, 512 KB: skipped. Probing for ST M50FW080, 1024 KB: skipped. Probing for ST M50LPW116, 2048 KB: skipped. Probing for SyncMOS S29C31004T, 512 KB: skipped. Probing for SyncMOS S29C51001T, 128 KB: skipped. Probing for SyncMOS S29C51002T, 256 KB: skipped. Probing for SyncMOS S29C51004T, 512 KB: skipped. Probing for TI TMS29F002RB, 256 KB: skipped. Probing for TI TMS29F002RT, 256 KB: skipped. Probing for Winbond W25Q80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W29C011, 128 KB: skipped. Probing for Winbond W29C020C, 256 KB: skipped. Probing for Winbond W29C040P, 512 KB: skipped. Probing for Winbond W29EE011, 128 KB: skipped. Probing for Winbond W39V040A, 512 KB: skipped. Probing for Winbond W39V040B, 512 KB: skipped. Probing for Winbond W39V040C, 512 KB: skipped. Probing for Winbond W39V040FA, 512 KB: skipped. Probing for Winbond W39V080A, 1024 KB: skipped. Probing for Winbond W49F002U, 256 KB: skipped. Probing for Winbond W49V002A, 256 KB: skipped. Probing for Winbond W49V002FA, 256 KB: skipped. Probing for Winbond W39V080FA, 1024 KB: skipped. Probing for Winbond W39V080FA (dual mode), 512 KB: skipped. Probing for Atmel unknown Atmel SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for EON unknown EON SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix unknown Macronix SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC unknown PMC SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST unknown SST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST unknown ST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sanyo unknown Sanyo SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (RDID), 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (REMS), 0 KB: probe_spi_rems: id1 0xbf, id2 0x8e === This flash part has status UNTESTED for operations: ERASE 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@flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -Vw, -VE), and mention which mainboard or programmer you tested. Thanks for your help! === Flash image seems to be a legacy BIOS. Disabling checks. Writing flash chip... Some block protection in effect, disabling Erasing flash before programming... Erasing flash chip... Looking at blockwise erase function 0... trying... 0x000000-0x000fff, 0x001000-0x001fff, 0x002000-0x002fff, 0x003000-0x003fff, 0x004000-0x004fff, 0x005000-0x005fff, 0x006000-0x006fff, 0x007000-0x007fff, 0x008000-0x008fff, 0x009000-0x009fff, 0x00a000-0x00afff, 0x00b000-0x00bfff, 0x00c000-0x00cfff, 0x00d000-0x00dfff, 0x00e000-0x00efff, 0x00f000-0x00ffff, 0x010000-0x010fff, 0x011000-0x011fff, 0x012000-0x012fff, 0x013000-0x013fff, 0x014000-0x014fff, 0x015000-0x015fff, 0x016000-0x016fff, 0x017000-0x017fff, 0x018000-0x018fff, 0x019000-0x019fff, 0x01a000-0x01afff, 0x01b000-0x01bfff, 0x01c000-0x01cfff, 0x01d000-0x01dfff, 0x01e000-0x01efff, 0x01f000-0x01ffff, 0x020000-0x020fff, 0x021000-0x021fff, 0x022000-0x022fff, 0x023000-0x023fff, 0x024000-0x024fff, 0x025000-0x025fff, 0x026000-0x026fff, 0x027000-0x027fff, 0x028000-0x028fff, 0x029000-0x029fff, 0x02a000-0x02afff, 0x02b000-0x02bfff, 0x02c000-0x02cfff, 0x02d000-0x02dfff, 0x02e000-0x02efff, 0x02f000-0x02ffff, 0x030000-0x030fff, 0x031000-0x031fff, 0x032000-0x032fff, 0x033000-0x033fff, 0x034000-0x034fff, 0x035000-0x035fff, 0x036000-0x036fff, 0x037000-0x037fff, 0x038000-0x038fff, 0x039000-0x039fff, 0x03a000-0x03afff, 0x03b000-0x03bfff, 0x03c000-0x03cfff, 0x03d000-0x03dfff, 0x03e000-0x03efff, 0x03f000-0x03ffff, 0x040000-0x040fff, 0x041000-0x041fff, 0x042000-0x042fff, 0x043000-0x043fff, 0x044000-0x044fff, 0x045000-0x045fff, 0x046000-0x046fff, 0x047000-0x047fff, 0x048000-0x048fff, 0x049000-0x049fff, 0x04a000-0x04afff, 0x04b000-0x04bfff, 0x04c000-0x04cfff, 0x04d000-0x04dfff, 0x04e000-0x04efff, 0x04f000-0x04ffff, 0x050000-0x050fff, 0x051000-0x051fff, 0x052000-0x052fff, 0x053000-0x053fff, 0x054000-0x054fff, 0x055000-0x055fff, 0x056000-0x056fff, 0x057000-0x057fff, 0x058000-0x058fff, 0x059000-0x059fff, 0x05a000-0x05afff, 0x05b000-0x05bfff, 0x05c000-0x05cfff, 0x05d000-0x05dfff, 0x05e000-0x05efff, 0x05f000-0x05ffff, 0x060000-0x060fff, 0x061000-0x061fff, 0x062000-0x062fff, 0x063000-0x063fff, 0x064000-0x064fff, 0x065000-0x065fff, 0x066000-0x066fff, 0x067000-0x067fff, 0x068000-0x068fff, 0x069000-0x069fff, 0x06a000-0x06afff, 0x06b000-0x06bfff, 0x06c000-0x06cfff, 0x06d000-0x06dfff, 0x06e000-0x06efff, 0x06f000-0x06ffff, 0x070000-0x070fff, 0x071000-0x071fff, 0x072000-0x072fff, 0x073000-0x073fff, 0x074000-0x074fff, 0x075000-0x075fff, 0x076000-0x076fff, 0x077000-0x077fff, 0x078000-0x078fff, 0x079000-0x079fff, 0x07a000-0x07afff, 0x07b000-0x07bfff, 0x07c000-0x07cfff, 0x07d000-0x07dfff, 0x07e000-0x07efff, 0x07f000-0x07ffff, 0x080000-0x080fff, 0x081000-0x081fff, 0x082000-0x082fff, 0x083000-0x083fff, 0x084000-0x084fff, 0x085000-0x085fff, 0x086000-0x086fff, 0x087000-0x087fff, 0x088000-0x088fff, 0x089000-0x089fff, 0x08a000-0x08afff, 0x08b000-0x08bfff, 0x08c000-0x08cfff, 0x08d000-0x08dfff, 0x08e000-0x08efff, 0x08f000-0x08ffff, 0x090000-0x090fff, 0x091000-0x091fff, 0x092000-0x092fff, 0x093000-0x093fff, 0x094000-0x094fff, 0x095000-0x095fff, 0x096000-0x096fff, 0x097000-0x097fff, 0x098000-0x098fff, 0x099000-0x099fff, 0x09a000-0x09afff, 0x09b000-0x09bfff, 0x09c000-0x09cfff, 0x09d000-0x09dfff, 0x09e000-0x09efff, 0x09f000-0x09ffff, 0x0a0000-0x0a0fff, 0x0a1000-0x0a1fff, 0x0a2000-0x0a2fff, 0x0a3000-0x0a3fff, 0x0a4000-0x0a4fff, 0x0a5000-0x0a5fff, 0x0a6000-0x0a6fff, 0x0a7000-0x0a7fff, 0x0a8000-0x0a8fff, 0x0a9000-0x0a9fff, 0x0aa000-0x0aafff, 0x0ab000-0x0abfff, 0x0ac000-0x0acfff, 0x0ad000-0x0adfff, 0x0ae000-0x0aefff, 0x0af000-0x0affff, 0x0b0000-0x0b0fff, 0x0b1000-0x0b1fff, 0x0b2000-0x0b2fff, 0x0b3000-0x0b3fff, 0x0b4000-0x0b4fff, 0x0b5000-0x0b5fff, 0x0b6000-0x0b6fff, 0x0b7000-0x0b7fff, 0x0b8000-0x0b8fff, 0x0b9000-0x0b9fff, 0x0ba000-0x0bafff, 0x0bb000-0x0bbfff, 0x0bc000-0x0bcfff, 0x0bd000-0x0bdfff, 0x0be000-0x0befff, 0x0bf000-0x0bffff, 0x0c0000-0x0c0fff, 0x0c1000-0x0c1fff, 0x0c2000-0x0c2fff, 0x0c3000-0x0c3fff, 0x0c4000-0x0c4fff, 0x0c5000-0x0c5fff, 0x0c6000-0x0c6fff, 0x0c7000-0x0c7fff, 0x0c8000-0x0c8fff, 0x0c9000-0x0c9fff, 0x0ca000-0x0cafff, 0x0cb000-0x0cbfff, 0x0cc000-0x0ccfff, 0x0cd000-0x0cdfff, 0x0ce000-0x0cefff, 0x0cf000-0x0cffff, 0x0d0000-0x0d0fff, 0x0d1000-0x0d1fff, 0x0d2000-0x0d2fff, 0x0d3000-0x0d3fff, 0x0d4000-0x0d4fff, 0x0d5000-0x0d5fff, 0x0d6000-0x0d6fff, 0x0d7000-0x0d7fff, 0x0d8000-0x0d8fff, 0x0d9000-0x0d9fff, 0x0da000-0x0dafff, 0x0db000-0x0dbfff, 0x0dc000-0x0dcfff, 0x0dd000-0x0ddfff, 0x0de000-0x0defff, 0x0df000-0x0dffff, 0x0e0000-0x0e0fff, 0x0e1000-0x0e1fff, 0x0e2000-0x0e2fff, 0x0e3000-0x0e3fff, 0x0e4000-0x0e4fff, 0x0e5000-0x0e5fff, 0x0e6000-0x0e6fff, 0x0e7000-0x0e7fff, 0x0e8000-0x0e8fff, 0x0e9000-0x0e9fff, 0x0ea000-0x0eafff, 0x0eb000-0x0ebfff, 0x0ec000-0x0ecfff, 0x0ed000-0x0edfff, 0x0ee000-0x0eefff, 0x0ef000-0x0effff, 0x0f0000-0x0f0fff, 0x0f1000-0x0f1fff, 0x0f2000-0x0f2fff, 0x0f3000-0x0f3fff, 0x0f4000-0x0f4fff, 0x0f5000-0x0f5fff, 0x0f6000-0x0f6fff, 0x0f7000-0x0f7fff, 0x0f8000-0x0f8fff, 0x0f9000-0x0f9fff, 0x0fa000-0x0fafff, 0x0fb000-0x0fbfff, 0x0fc000-0x0fcfff, 0x0fd000-0x0fdfff, 0x0fe000-0x0fefff, 0x0ff000-0x0fffff, SUCCESS. done.
Erasing was complete at aprox 23:38:30 , so roughly after 13 minutes, which is much better. Up to now, I am waiting 8 hours to see any additional reporting, but flashrom is still running. Since the erase function was broken with the no_delay patch, I don't think it is helpful to retest that now.
I will try the test with a first spi command later and report again.
Kind regards,
Daniel
On 17.06.2010 07:30, Daniel Flinkmann wrote:
Am 17.06.2010 um 01:22 schrieb Carl-Daniel Hailfinger:
Could you try erase with my 3x speedup patch? It should not take longer than read. If it takes significantly longer, please test with 3x speedup and no_delay as well.
Well, I could try that, but see my experience below.
There still is a bug with the first transmitted SPI command. It seems we always send garbage or we always read garbage. Not sure. I bet that if you run
flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -c AT25DF041A -V
you will see a RDID byte 0 parity violation again. In fact, this will probably happen with every SPI chip you can specify. If I'm right, we either have a Bus Pirate bug or a flashrom bug.
At the moment I am still waiting for the end of the write flash command, which is running since 23:22 CET yesterday (So that are 8 hour running).
If I take into account the too long timing you were experiencing during read, the expected write time (with my 3x speedup patch) is roughly 9 hours.
I made following experience with the "no_delay patch": date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -Vw JX58D422.BIN ; date Wed Jun 16 23:07:52 CEST 2010 flashrom v0.9.2-r1048-with-3xspeed-bp-patch-with-spi_nodelay-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian Calibrating delay loop... OS timer resolution is 1 usecs, 300M loops per second, 10 myus = 11 us, 100 myus = 149 us, 1000 myus = 1002 us, 10000 myus = 10062 us, 4 myus = 5 us, OK. Initializing buspirate_spi programmer Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Writing flash chip... Some block protection in effect, disabling Erasing flash before programming... Erasing flash chip... Looking at blockwise erase function 0... trying... 0x000000-0x000fff, 0x001000-0x001fff, 0x002000-0x002fff, 0x003000-0x003fff, 0x004000-0x004fff, 0x005000-0x005fff, 0x006000-0x006fff, 0x007000-0x007fff, 0x008000-0x008fff, 0x009000-0x009fff, 0x00a000-0x00afff, 0x00b000-0x00bfff, 0x00c000-0x00cfff, 0x00d000-0x00dfff, 0x00e000-0x00efff, 0x00f000-0x00ffff, 0x010000-0x010fff, 0x011000-0x011fff, 0x012000-0x012fff, 0x013000-0x013fff, ERASE FAILED at 0x00013000! Expected=0xff, Read=0x00, failed byte count from 0x00013000-0x00013fff: 0xc ERASE FAILED!
Looking at blockwise erase function 1... trying... 0x000000-0x007fff, 0x008000-0x00ffff, 0x010000-0x017fff, ERASE FAILED at 0x00010000! Expected=0xff, Read=0x00, failed byte count from 0x00010000-0x00017fff: 0xc ERASE FAILED!
Looking at blockwise erase function 2... trying... 0x000000-0x00ffff, ERASE FAILED at 0x00000000! Expected=0xff, Read=0x00, failed byte count from 0x00000000-0x0000ffff: 0xc ERASE FAILED!
Looking at blockwise erase function 3... trying... 0x000000-0x0fffff, ERASE FAILED at 0x00000000! Expected=0xff, Read=0x00,^C
Very nasty. This looks like the chip completely ignores erase in one region regardless of the command. That should never happen.
... So I stopped the erasing and rebuild the version without the no_delay patch and using just the 3x-speed-bp-patch:
root@zwerg:~# date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -Vw JX58D422.BIN ; date Wed Jun 16 23:22:25 CEST 2010 flashrom v0.9.2-r1048-with-3xspeed-bp-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian Calibrating delay loop... OS timer resolution is 2 usecs, 300M loops per second, 10 myus = 11 us, 100 myus = 101 us, 1000 myus = 1051 us, 10000 myus = 10057 us, 8 myus = 8 us, OK. Initializing buspirate_spi programmer Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Flash image seems to be a legacy BIOS. Disabling checks. Writing flash chip... Some block protection in effect, disabling Erasing flash before programming... Erasing flash chip... Looking at blockwise erase function 0... trying... 0x000000-0x000fff, 0x001000-0x001fff, 0x002000-0x002fff, 0x003000-0x003fff, 0x004000-0x004fff, 0x005000-0x005fff, 0x006000-0x006fff, 0x007000-0x007fff, 0x008000-0x008fff, 0x009000-0x009fff, 0x00a000-0x00afff, 0x00b000-0x00bfff, 0x00c000-0x00cfff, 0x00d000-0x00dfff, 0x00e000-0x00efff, 0x00f000-0x00ffff, 0x010000-0x010fff, 0x011000-0x011fff, 0x012000-0x012fff, 0x013000-0x013fff, 0x014000-0x014fff, 0x015000-0x015fff, 0x016000-0x016fff, 0x017000-0x017fff, 0x018000-0x018fff, 0x019000-0x019fff, 0x01a000-0x01afff, 0x01b000-0x01bfff, 0x01c000-0x01cfff, 0x01d000-0x01dfff, 0x01e000-0x01efff, 0x01f000-0x01ffff, 0x020000-0x020fff, 0x021000-0x021fff, 0x022000-0x022fff, 0x023000-0x023fff, 0x024000-0x024fff, 0x025000-0x025fff, 0x026000-0x026fff, 0x027000-0x027fff, 0x028000-0x028fff, 0x029000-0x029fff, 0x02a000-0x02afff, 0x02b000-0x02bfff, 0x02c000-0x02cfff, 0x02d000-0x02dfff, 0x02e000-0x02efff, 0x02f000-0x02ffff, 0x030000-0x030fff, 0x031000-0x031fff, 0x032000-0x032fff, 0x033000-0x033fff, 0x034000-0x034fff, 0x035000-0x035fff, 0x036000-0x036fff, 0x037000-0x037fff, 0x038000-0x038fff, 0x039000-0x039fff, 0x03a000-0x03afff, 0x03b000-0x03bfff, 0x03c000-0x03cfff, 0x03d000-0x03dfff, 0x03e000-0x03efff, 0x03f000-0x03ffff, 0x040000-0x040fff, 0x041000-0x041fff, 0x042000-0x042fff, 0x043000-0x043fff, 0x044000-0x044fff, 0x045000-0x045fff, 0x046000-0x046fff, 0x047000-0x047fff, 0x048000-0x048fff, 0x049000-0x049fff, 0x04a000-0x04afff, 0x04b000-0x04bfff, 0x04c000-0x04cfff, 0x04d000-0x04dfff, 0x04e000-0x04efff, 0x04f000-0x04ffff, 0x050000-0x050fff, 0x051000-0x051fff, 0x052000-0x052fff, 0x053000-0x053fff, 0x054000-0x054fff, 0x055000-0x055fff, 0x056000-0x056fff, 0x057000-0x057fff, 0x058000-0x058fff, 0x059000-0x059fff, 0x05a000-0x05afff, 0x05b000-0x05bfff, 0x05c000-0x05cfff, 0x05d000-0x05dfff, 0x05e000-0x05efff, 0x05f000-0x05ffff, 0x060000-0x060fff, 0x061000-0x061fff, 0x062000-0x062fff, 0x063000-0x063fff, 0x064000-0x064fff, 0x065000-0x065fff, 0x066000-0x066fff, 0x067000-0x067fff, 0x068000-0x068fff, 0x069000-0x069fff, 0x06a000-0x06afff, 0x06b000-0x06bfff, 0x06c000-0x06cfff, 0x06d000-0x06dfff, 0x06e000-0x06efff, 0x06f000-0x06ffff, 0x070000-0x070fff, 0x071000-0x071fff, 0x072000-0x072fff, 0x073000-0x073fff, 0x074000-0x074fff, 0x075000-0x075fff, 0x076000-0x076fff, 0x077000-0x077fff, 0x078000-0x078fff, 0x079000-0x079fff, 0x07a000-0x07afff, 0x07b000-0x07bfff, 0x07c000-0x07cfff, 0x07d000-0x07dfff, 0x07e000-0x07efff, 0x07f000-0x07ffff, 0x080000-0x080fff, 0x081000-0x081fff, 0x082000-0x082fff, 0x083000-0x083fff, 0x084000-0x084fff, 0x085000-0x085fff, 0x086000-0x086fff, 0x087000-0x087fff, 0x088000-0x088fff, 0x089000-0x089fff, 0x08a000-0x08afff, 0x08b000-0x08bfff, 0x08c000-0x08cfff, 0x08d000-0x08dfff, 0x08e000-0x08efff, 0x08f000-0x08ffff, 0x090000-0x090fff, 0x091000-0x091fff, 0x092000-0x092fff, 0x093000-0x093fff, 0x094000-0x094fff, 0x095000-0x095fff, 0x096000-0x096fff, 0x097000-0x097fff, 0x098000-0x098fff, 0x099000-0x099fff, 0x09a000-0x09afff, 0x09b000-0x09bfff, 0x09c000-0x09cfff, 0x09d000-0x09dfff, 0x09e000-0x09efff, 0x09f000-0x09ffff, 0x0a0000-0x0a0fff, 0x0a1000-0x0a1fff, 0x0a2000-0x0a2fff, 0x0a3000-0x0a3fff, 0x0a4000-0x0a4fff, 0x0a5000-0x0a5fff, 0x0a6000-0x0a6fff, 0x0a7000-0x0a7fff, 0x0a8000-0x0a8fff, 0x0a9000-0x0a9fff, 0x0aa000-0x0aafff, 0x0ab000-0x0abfff, 0x0ac000-0x0acfff, 0x0ad000-0x0adfff, 0x0ae000-0x0aefff, 0x0af000-0x0affff, 0x0b0000-0x0b0fff, 0x0b1000-0x0b1fff, 0x0b2000-0x0b2fff, 0x0b3000-0x0b3fff, 0x0b4000-0x0b4fff, 0x0b5000-0x0b5fff, 0x0b6000-0x0b6fff, 0x0b7000-0x0b7fff, 0x0b8000-0x0b8fff, 0x0b9000-0x0b9fff, 0x0ba000-0x0bafff, 0x0bb000-0x0bbfff, 0x0bc000-0x0bcfff, 0x0bd000-0x0bdfff, 0x0be000-0x0befff, 0x0bf000-0x0bffff, 0x0c0000-0x0c0fff, 0x0c1000-0x0c1fff, 0x0c2000-0x0c2fff, 0x0c3000-0x0c3fff, 0x0c4000-0x0c4fff, 0x0c5000-0x0c5fff, 0x0c6000-0x0c6fff, 0x0c7000-0x0c7fff, 0x0c8000-0x0c8fff, 0x0c9000-0x0c9fff, 0x0ca000-0x0cafff, 0x0cb000-0x0cbfff, 0x0cc000-0x0ccfff, 0x0cd000-0x0cdfff, 0x0ce000-0x0cefff, 0x0cf000-0x0cffff, 0x0d0000-0x0d0fff, 0x0d1000-0x0d1fff, 0x0d2000-0x0d2fff, 0x0d3000-0x0d3fff, 0x0d4000-0x0d4fff, 0x0d5000-0x0d5fff, 0x0d6000-0x0d6fff, 0x0d7000-0x0d7fff, 0x0d8000-0x0d8fff, 0x0d9000-0x0d9fff, 0x0da000-0x0dafff, 0x0db000-0x0dbfff, 0x0dc000-0x0dcfff, 0x0dd000-0x0ddfff, 0x0de000-0x0defff, 0x0df000-0x0dffff, 0x0e0000-0x0e0fff, 0x0e1000-0x0e1fff, 0x0e2000-0x0e2fff, 0x0e3000-0x0e3fff, 0x0e4000-0x0e4fff, 0x0e5000-0x0e5fff, 0x0e6000-0x0e6fff, 0x0e7000-0x0e7fff, 0x0e8000-0x0e8fff, 0x0e9000-0x0e9fff, 0x0ea000-0x0eafff, 0x0eb000-0x0ebfff, 0x0ec000-0x0ecfff, 0x0ed000-0x0edfff, 0x0ee000-0x0eefff, 0x0ef000-0x0effff, 0x0f0000-0x0f0fff, 0x0f1000-0x0f1fff, 0x0f2000-0x0f2fff, 0x0f3000-0x0f3fff, 0x0f4000-0x0f4fff, 0x0f5000-0x0f5fff, 0x0f6000-0x0f6fff, 0x0f7000-0x0f7fff, 0x0f8000-0x0f8fff, 0x0f9000-0x0f9fff, 0x0fa000-0x0fafff, 0x0fb000-0x0fbfff, 0x0fc000-0x0fcfff, 0x0fd000-0x0fdfff, 0x0fe000-0x0fefff, 0x0ff000-0x0fffff, SUCCESS. done.
Erasing was complete at aprox 23:38:30 , so roughly after 13 minutes, which is much better. Up to now, I am waiting 8 hours to see any additional reporting, but flashrom is still running.
It might make sense to abort if it is still running after 12 hours total (4 hours after your mail). If you abort, please read the chip afterwards and upload the read file here: http://wedgewww.dyndns.org/uploader/
Since the erase function was broken with the no_delay patch, I don't think it is helpful to retest that now.
Agreed.
I will try the test with a first spi command later and report again.
Thanks.
I just sent a progress bar printing patch (OK, it is a really nasty hack) to the list. If you decide to abort, please use the progress printing patch together with the 3x speedup patch. Read/erase time shouldn't suffer that much from progress printing, and write probably won't be slowed down that much either.
Regards, Carl-Daniel
Hi Carl-Daniel,
Am 17.06.2010 um 12:32 schrieb Carl-Daniel Hailfinger:
At the moment I am still waiting for the end of the write flash command, which is running since 23:22 CET yesterday (So that are 8 hour running).
If I take into account the too long timing you were experiencing during read, the expected write time (with my 3x speedup patch) is roughly 9 hours.
As Homer says: Doh!
I had to stop the writing again (probably after 8,5 hours, because I wasn't expecting to wait so long and I needed my computer which ran the ssh session elsewhere. So I had to restart the process in a gnu screen session today morning and left it running. Excuse me for that dumb idea to not running the flashrom in a HUPable situation.
Erasing was complete at aprox 23:38:30 , so roughly after 13 minutes, which is much better. Up to now, I am waiting 8 hours to see any additional reporting, but flashrom is still running.
It might make sense to abort if it is still running after 12 hours total (4 hours after your mail). If you abort, please read the chip afterwards and upload the read file here: http://wedgewww.dyndns.org/uploader/
Yes, I will do so.
By the way. The first reading tests I have done ( svn1048, 1048+3xBP-patch and 1048+3xBP-patch+no_delay-patch) resulted in three identical binary files. I just double checked that with an md5sum.
I will try the test with a first spi command later and report again.
Thanks.
As you expected, the first spi command fails all the time. I added my normally detected spi flash device and retried it, which causes the same error:
root@zwerg:~# flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -c SST25VF080B -VV flashrom v0.9.2-r1048-with-3xspeed-bp-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 298M loops per second, 10 myus = 11 us, 100 myus = 101 us, 1000 myus = 1050 us, 10000 myus = 9990 us, 4 myus = 5 us, OK. Initializing buspirate_spi programmer SPI speed is 8MHz buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 5 Sending 0x00, receiving 0x42 0x42 0x49 0x4f 0x31 Raw bitbang mode version 1 buspirate_sendrecv: write 1, read 4 Sending 0x01, receiving 0x53 0x50 0x49 0x31 Raw SPI mode version 1 buspirate_sendrecv: write 1, read 1 Sending 0x4b, receiving 0x01 buspirate_sendrecv: write 1, read 1 Sending 0x67, receiving 0x01 buspirate_sendrecv: write 1, read 1 Sending 0x8a, receiving 0x01 buspirate_sendrecv: write 1, read 1 Sending 0x03, receiving 0x01 Probing for SST SST25VF080B, 1024 KB: buspirate_sendrecv: write 7, read 7 Sending 0x02 0x13 0x9f 0x00 0x00 0x00 0x03, receiving 0x01 0x01 0x00 0x00 0x00 0x00 0x01 RDID returned 0x00 0x00 0x00. RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 No EEPROM/flash device found. Note: flashrom can never write if the flash chip isn't found automatically. buspirate_sendrecv: write 1, read 5 Sending 0x00, receiving 0x42 0x42 0x49 0x4f 0x31 Raw bitbang mode version 1 buspirate_sendrecv: write 1, read 0 Sending 0x0f, receiving Bus Pirate shutdown completed.
I just sent a progress bar printing patch (OK, it is a really nasty hack) to the list. If you decide to abort, please use the progress printing patch together with the 3x speedup patch. Read/erase time shouldn't suffer that much from progress printing, and write probably won't be slowed down that much either.
Lets see how far it will be tonight and then I will restart it. I received my backup BIOS flash today, so I will first install the new flash and see if that PC runs fine again. If so, I will make a short setup to flash the bricked BIOS externally, so that we still get forward in with the Bit-Pirate issue.
Cheers,
Daniel
Hi Daniel,
On 17.06.2010 12:54, Daniel Flinkmann wrote:
Am 17.06.2010 um 12:32 schrieb Carl-Daniel Hailfinger:
At the moment I am still waiting for the end of the write flash command, which is running since 23:22 CET yesterday (So that are 8 hour running).
If I take into account the too long timing you were experiencing during read, the expected write time (with my 3x speedup patch) is roughly 9 hours.
As Homer says: Doh!
I had to stop the writing again (probably after 8,5 hours, because I wasn't expecting to wait so long and I needed my computer which ran the ssh session elsewhere. So I had to restart the process in a gnu screen session today morning and left it running. Excuse me for that dumb idea to not running the flashrom in a HUPable situation.
Heh. I should have warned you. Sorry about that.
Erasing was complete at aprox 23:38:30 , so roughly after 13 minutes, which is much better. Up to now, I am waiting 8 hours to see any additional reporting, but flashrom is still running.
It might make sense to abort if it is still running after 12 hours total (4 hours after your mail). If you abort, please read the chip afterwards and upload the read file here: http://wedgewww.dyndns.org/uploader/
Yes, I will do so.
By the way. The first reading tests I have done ( svn1048, 1048+3xBP-patch and 1048+3xBP-patch+no_delay-patch) resulted in three identical binary files. I just double checked that with an md5sum.
Good. Did those images contain only 0xff bytes or was there real content inside (you can use hexdump or xxd to check).
I will try the test with a first spi command later and report again.
Thanks.
As you expected, the first spi command fails all the time. I added my normally detected spi flash device and retried it, which causes the same error:
root@zwerg:~# flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -c SST25VF080B -VV flashrom v0.9.2-r1048-with-3xspeed-bp-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 298M loops per second, 10 myus = 11 us, 100 myus = 101 us, 1000 myus = 1050 us, 10000 myus = 9990 us, 4 myus = 5 us, OK. Initializing buspirate_spi programmer SPI speed is 8MHz buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 0 Sending 0x00, receiving buspirate_sendrecv: write 1, read 5 Sending 0x00, receiving 0x42 0x42 0x49 0x4f 0x31 Raw bitbang mode version 1 buspirate_sendrecv: write 1, read 4 Sending 0x01, receiving 0x53 0x50 0x49 0x31 Raw SPI mode version 1 buspirate_sendrecv: write 1, read 1 Sending 0x4b, receiving 0x01 buspirate_sendrecv: write 1, read 1 Sending 0x67, receiving 0x01 buspirate_sendrecv: write 1, read 1 Sending 0x8a, receiving 0x01 buspirate_sendrecv: write 1, read 1 Sending 0x03, receiving 0x01 Probing for SST SST25VF080B, 1024 KB: buspirate_sendrecv: write 7, read 7 Sending 0x02 0x13 0x9f 0x00 0x00 0x00 0x03, receiving 0x01 0x01 0x00 0x00 0x00 0x00 0x01
Mh. I expect that an unpatched Bus Pirate driver will have the same problems. Which Bus Pirate is this, and which firmware are you running on it? AFAIK some firmware versions have known bugs which might affect us. If your firmware is indeed one of the broken versions, I hope we can add a blacklist to flashrom and refuse to communicate unless the Bus Pirate is upgraded.
RDID returned 0x00 0x00 0x00. RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 No EEPROM/flash device found. Note: flashrom can never write if the flash chip isn't found automatically. buspirate_sendrecv: write 1, read 5 Sending 0x00, receiving 0x42 0x42 0x49 0x4f 0x31 Raw bitbang mode version 1 buspirate_sendrecv: write 1, read 0 Sending 0x0f, receiving Bus Pirate shutdown completed.
I just sent a progress bar printing patch (OK, it is a really nasty hack) to the list. If you decide to abort, please use the progress printing patch together with the 3x speedup patch. Read/erase time shouldn't suffer that much from progress printing, and write probably won't be slowed down that much either.
Lets see how far it will be tonight and then I will restart it. I received my backup BIOS flash today, so I will first install the new flash and see if that PC runs fine again. If so, I will make a short setup to flash the bricked BIOS externally, so that we still get forward in with the Bit-Pirate issue.
Cool, thanks!
Regards, Carl-Daniel
Hi again,
Am 17.06.2010 um 13:08 schrieb Carl-Daniel Hailfinger:
By the way. The first reading tests I have done ( svn1048, 1048+3xBP-patch and 1048+3xBP-patch+no_delay-patch) resulted in three identical binary files. I just double checked that with an md5sum.
Good. Did those images contain only 0xff bytes or was there real content inside (you can use hexdump or xxd to check).
Just 0xff bytes (sorry forget to say that). As you eventually remember, I had made erase tests before the read tests.
Mh. I expect that an unpatched Bus Pirate driver will have the same problems. Which Bus Pirate is this, and which firmware are you running on it? AFAIK some firmware versions have known bugs which might affect us. If your firmware is indeed one of the broken versions, I hope we can add a blacklist to flashrom and refuse to communicate unless the Bus Pirate is upgraded.
I have a Bus-Pirate V3 with Firmware v4.5. Thats the most updated stable version. I had refreshed the firmware (and bootloader) just before I started flashing the spi flash chip. If you know about a firmware which causes the problem, please give me a link to the source of that info.
cheers,
Daniel
Hi Daniel,
On 17.06.2010 13:56, Daniel Flinkmann wrote:
Am 17.06.2010 um 13:08 schrieb Carl-Daniel Hailfinger:
By the way. The first reading tests I have done ( svn1048, 1048+3xBP-patch and 1048+3xBP-patch+no_delay-patch) resulted in three identical binary files. I just double checked that with an md5sum.
Good. Did those images contain only 0xff bytes or was there real content inside (you can use hexdump or xxd to check).
Just 0xff bytes (sorry forget to say that). As you eventually remember, I had made erase tests before the read tests.
Ah. I thought you had tried read after the aborted write attempt. Sorry for the confusion.
Side note: My AAI patch on the list might result in a faster write if you change the write function for your chip in flashchips.c. It does not support progres printing, though, so you might want to wait for an updated progress printing patch.
Mh. I expect that an unpatched Bus Pirate driver will have the same problems. Which Bus Pirate is this, and which firmware are you running on it? AFAIK some firmware versions have known bugs which might affect us. If your firmware is indeed one of the broken versions, I hope we can add a blacklist to flashrom and refuse to communicate unless the Bus Pirate is upgraded.
I have a Bus-Pirate V3 with Firmware v4.5. Thats the most updated stable version. I had refreshed the firmware (and bootloader) just before I started flashing the spi flash chip. If you know about a firmware which causes the problem, please give me a link to the source of that info.
I think I read somewhere on dangerousprototypes.com that OpenOCD support was broken in some firmware versions. We use essentially the same interface. Anyway, I reported your problem here: http://dangerousprototypes.com/forum/index.php?topic=651.0
Regards, Carl-Daniel
Hello All, I have tried upgrading BIOS image using flashrom v0.9.2-r1001. Surprisingly it failed in this attempt.
I did many times upgrade of BIOS using flashrom utility of above said version. Earlier it was done by internal programmer with erase function-2.
This flash chip present on "Intel ICH10R" over SPI Bus.
Please find the detailed trace attached.
======================================================================== =====================
[root@localhost images]# flashrom -V -w atca-7360-cpu-v1.1.1.rom flashrom v0.9.2-r1001 on Linux 2.6.18-194.el5xen (x86_64), built with libpci 2.2.3, GCC 4.1.2 20080704 (Red Hat 4.1.2-48) flashrom is free software, get the source code at http://www.flashrom.org
Initializing internal programmer No coreboot table found. DMI string system-manufacturer: "Emerson" DMI string system-product-name: "PCA,ATCA-7360/R1.0/6E " DMI string system-version: "R1.0 " DMI string baseboard-manufacturer: "Emerson" DMI string baseboard-product-name: "ATCA-7360/7365" DMI string baseboard-version: "0106865F01A " DMI string chassis-type: "" Found chipset "Intel ICH10R", enabling flash write... 0x7fffffff/0x7fffffff FWH IDSEL: 0x0 0x7fffffff/0x7fffffff FWH IDSEL: 0x0 0x7fffffff/0x7fffffff FWH IDSEL: 0x0 0x7fffffff/0x7fffffff FWH IDSEL: 0x0 0x7fffffff/0x7fffffff FWH IDSEL: 0x0 0x7fffffff/0x7fffffff FWH IDSEL: 0x0 0x7fffffff/0x7fffffff FWH IDSEL: 0x0 0x7fffffff/0x7fffffff FWH IDSEL: 0x0 0x7fffffff/0x7fffffff FWH IDSEL: 0x4 0x7fffffff/0x7fffffff FWH IDSEL: 0x5 0x7fffffff/0x7fffffff FWH IDSEL: 0x6 0x7fffffff/0x7fffffff FWH IDSEL: 0x7 0x7fffffff/0x7fffffff FWH decode enabled 0x7fffffff/0x7fffffff FWH decode enabled 0x7fffffff/0x7fffffff FWH decode enabled 0x7fffffff/0x7fffffff FWH decode enabled 0x7fffffff/0x7fffffff FWH decode enabled 0x7fffffff/0x7fffffff FWH decode enabled 0x7fffffff/0x7fffffff FWH decode enabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled 0x7fffffff/0x7fffffff FWH decode disabled Maximum FWH chip size: 0x380000 bytes BIOS Lock Enable: disabled, BIOS Write Enable: enabled, BIOS_CNTL is 0x9
Root Complex Register Block address = 0xfed1c000 GCS = 0x460: BIOS Interface Lock-Down: disabled, BOOT BIOS Straps: 0x1 (SPI) Top Swap : not enabled SPIBAR = 0xfed1c000 + 0x3800 0x04: 0x6008 (HSFS) FLOCKDN 0, FDV 1, FDOPSS 1, SCIP 0, BERASE 1, AEL 0, FCERR 0, FDONE 0 0x50: 0x00001b1b (FRAP) BMWAG 0, BMRAG 0, BRWA 27, BRRA 27 0x54: 0x00010000 (FREG0) 0x58: 0x03ff0080 (FREG1) 0x5C: 0x00001fff (FREG2) 0x60: 0x00030002 (FREG3) 0x64: 0x007f0004 (FREG4) 0x74: 0x00000000 (PR0) 0x78: 0x00000000 (PR1) 0x7C: 0x00000000 (PR2) 0x80: 0x00000000 (PR3) 0x84: 0x00000000 (PR4) 0x90: 0x007f100c (SSFS, SSFC) 0x94: 0x0006 (PREOP) 0x96: 0x463b (OPTYPE) 0x98: 0x05d80302 (OPMENU) 0x9C: 0xc79f0190 (OPMENU+4) 0xA0: 0x00000000 (BBAR) 0xB0: 0x00004000 (FDOC) Programming OPCODES... program_opcodes: preop=5006 optype=463b opmenu=05d80302c79f0190 done SPI Read Configuration: prefetching enabled, caching enabled, OK. This chipset supports the following protocols: FWH,SPI. Calibrating delay loop... 1062M loops per second, 10 myus = 12 us, 100 myus = 101 us, 1000 myus = 999 us, 10000 myus = 10005 us, OK. Probing for AMD Am29F010A/B, 128 KB: skipped. Probing for AMD Am29F002(N)BB, 256 KB: skipped. Probing for AMD Am29F002(N)BT, 256 KB: skipped. Probing for AMD Am29F016D, 2048 KB: skipped. Probing for AMD Am29F040B, 512 KB: skipped. Probing for AMD Am29F080B, 1024 KB: skipped. Probing for AMD Am29LV040B, 512 KB: skipped. Probing for AMD Am29LV081B, 1024 KB: skipped. Probing for ASD AE49F2008, 256 KB: skipped. Probing for Atmel AT25DF021, 256 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT25DF081, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT25DF161, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT25DF321, 4096 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Chip status register is 10 Found chip "Atmel AT25DF321" (4096 KB, SPI) at physical address 0xffc00000. Probing for Atmel AT25DF321A, 4096 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT25DF641, 8192 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT25F512B, 64 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT25FS010, 128 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT25FS040, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT26DF041, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT26DF081A, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT26DF161, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT26DF161A, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT26F004, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT29C512, 64 KB: skipped. Probing for Atmel AT29C010A, 128 KB: skipped. Probing for Atmel AT29C020, 256 KB: skipped. Probing for Atmel AT29C040A, 512 KB: skipped. Probing for Atmel AT45CS1282, 16896 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT45DB011D, 128 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT45DB021D, 256 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT45DB041D, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT45DB081D, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT45DB161D, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT45DB321C, 4224 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT45DB321D, 4096 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT45DB642D, 8192 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Atmel AT49BV512, 64 KB: skipped. Probing for Atmel AT49F002(N), 256 KB: skipped. Probing for Atmel AT49F002(N)T, 256 KB: skipped. Probing for AMIC A25L40PT, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for AMIC A25L40PU, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for AMIC A29002B, 256 KB: skipped. Probing for AMIC A29002T, 256 KB: skipped. Probing for AMIC A29040B, 512 KB: skipped. Probing for AMIC A49LF040A, 512 KB: skipped. Probing for EMST F49B002UA, 256 KB: skipped. Probing for Eon EN25B05, 64 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B05T, 64 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B10, 128 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B10T, 128 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B20, 256 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B20T, 256 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B40, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B40T, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B80, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B80T, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B16, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B16T, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B32, 4096 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B32T, 4096 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B64, 8192 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25B64T, 8192 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25D16, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25F05, 64 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25F10, 128 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25F20, 256 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25F40, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25F80, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25F16, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN25F32, 4096 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Eon EN29F010, 128 KB: skipped. Probing for EON EN29F002(A)(N)B, 256 KB: skipped. Probing for EON EN29F002(A)(N)T, 256 KB: skipped. Probing for Fujitsu MBM29F004BC, 512 KB: skipped. Probing for Fujitsu MBM29F004TC, 512 KB: skipped. Probing for Fujitsu MBM29F400BC, 512 KB: skipped. Probing for Fujitsu MBM29F400TC, 512 KB: skipped. Probing for Intel 28F001BX-B, 128 KB: skipped. Probing for Intel 28F001BX-T, 128 KB: skipped. Probing for Intel 28F004S5, 512 KB: skipped. Probing for Intel 28F004BV/BE-B, 512 KB: skipped. Probing for Intel 28F004BV/BE-T, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-B, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-T, 512 KB: skipped. Probing for Intel 82802AB, 512 KB: probe_82802ab: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for Intel 82802AC, 1024 KB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Macronix MX25L512, 64 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Macronix MX25L1005, 128 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Macronix MX25L2005, 256 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Macronix MX25L4005, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Macronix MX25L8005, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Macronix MX25L1605, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Macronix MX25L1635D, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Macronix MX25L3205, 4096 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Macronix MX25L3235D, 4096 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Macronix MX25L6405, 8192 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Macronix MX25L12805, 16384 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Macronix MX29F001B, 128 KB: skipped. Probing for Macronix MX29F001T, 128 KB: skipped. Probing for Macronix MX29F002B, 256 KB: skipped. Probing for Macronix MX29F002T, 256 KB: skipped. Probing for Macronix MX29LV040, 512 KB: skipped. Probing for Numonyx M25PE10, 128 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Numonyx M25PE20, 256 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Numonyx M25PE40, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Numonyx M25PE80, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Numonyx M25PE16, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for PMC Pm25LV010, 128 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for PMC Pm25LV016B, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for PMC Pm25LV020, 256 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for PMC Pm25LV040, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for PMC Pm25LV080B, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for PMC Pm25LV512, 64 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for PMC Pm29F002T, 256 KB: skipped. Probing for PMC Pm29F002B, 256 KB: skipped. Probing for PMC Pm39LV010, 128 KB: skipped. Probing for PMC Pm39LV020, 256 KB: skipped. Probing for PMC Pm39LV040, 512 KB: skipped. Probing for PMC Pm49FL002, 256 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for PMC Pm49FL004, 512 KB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for Sanyo LF25FW203A, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Sharp LHF00L04, 1024 KB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Spansion S25FL008A, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Spansion S25FL016A, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for SST SST25VF016B, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for SST SST25VF032B, 4096 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for SST SST25VF040.REMS, 512 KB: probe_spi_rems: id1 0x0, id2 0x0 Probing for SST SST25VF040B, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for SST SST25VF040B.REMS, 512 KB: probe_spi_rems: id1 0x0, id2 0x0 Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for SST SST28SF040A, 512 KB: skipped. Probing for SST SST29EE010, 128 KB: skipped. Probing for SST SST29LE010, 128 KB: skipped. Probing for SST SST29EE020A, 256 KB: skipped. Probing for SST SST29LE020, 256 KB: skipped. Probing for SST SST39SF512, 64 KB: skipped. Probing for SST SST39SF010A, 128 KB: skipped. Probing for SST SST39SF020A, 256 KB: skipped. Probing for SST SST39SF040, 512 KB: skipped. Probing for SST SST39VF512, 64 KB: skipped. Probing for SST SST39VF010, 128 KB: skipped. Probing for SST SST39VF020, 256 KB: skipped. Probing for SST SST39VF040, 512 KB: skipped. Probing for SST SST39VF080, 1024 KB: skipped. Probing for SST SST49LF002A/B, 256 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF003A/B, 384 KB: probe_jedec_common: id1 0x66, id2 0x8b, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004A/B, 512 KB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF004C, 512 KB: probe_82802ab: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008A, 1024 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF008C, 1024 KB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF016C, 2048 KB: probe_82802ab: id1 0x3f, id2 0xe1, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for SST SST49LF020, 256 KB: skipped. Probing for SST SST49LF020A, 256 KB: skipped. Probing for SST SST49LF040, 512 KB: skipped. Probing for SST SST49LF040B, 512 KB: skipped. Probing for SST SST49LF080A, 1024 KB: skipped. Probing for SST SST49LF160C, 2048 KB: skipped. Probing for ST M25P05-A, 64 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for ST M25P05.RES, 64 KB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for ST M25P10.RES, 128 KB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for ST M25P40, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for ST M25P40-old, 512 KB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for ST M25P16, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for ST M25P32, 4096 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for ST M25P64, 8192 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for ST M25P128, 16384 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for ST M29F002B, 256 KB: skipped. Probing for ST M29F002T/NT, 256 KB: skipped. Probing for ST M29F040B, 512 KB: skipped. Probing for ST M29F400BT, 512 KB: skipped. Probing for ST M29W010B, 128 KB: skipped. Probing for ST M29W040B, 512 KB: skipped. Probing for ST M29W512B, 64 KB: skipped. Probing for ST M50FLW040A, 512 KB: probe_82802ab: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW040B, 512 KB: probe_82802ab: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080A, 1024 KB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FLW080B, 1024 KB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW002, 256 KB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW016, 2048 KB: probe_82802ab: id1 0x3f, id2 0xe1, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW040, 512 KB: probe_82802ab: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for ST M50FW080, 1024 KB: probe_82802ab: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for ST M50LPW116, 2048 KB: skipped. Probing for SyncMOS S29C31004T, 512 KB: skipped. Probing for SyncMOS S29C51001T, 128 KB: skipped. Probing for SyncMOS S29C51002T, 256 KB: skipped. Probing for SyncMOS S29C51004T, 512 KB: skipped. Probing for TI TMS29F002RB, 256 KB: skipped. Probing for TI TMS29F002RT, 256 KB: skipped. Probing for Winbond W25Q80, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Winbond W25Q16, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Winbond W25Q32, 4096 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Winbond W25x10, 128 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Winbond W25x20, 256 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Winbond W25x40, 512 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Winbond W25x80, 1024 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Winbond W25x16, 2048 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Winbond W25x32, 4096 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Winbond W25x64, 8192 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Winbond W29C011, 128 KB: skipped. Probing for Winbond W29C020C, 256 KB: skipped. Probing for Winbond W29C040P, 512 KB: skipped. Probing for Winbond W29EE011, 128 KB: skipped. Probing for Winbond W39V040A, 512 KB: skipped. Probing for Winbond W39V040B, 512 KB: skipped. Probing for Winbond W39V040C, 512 KB: skipped. Probing for Winbond W39V040FA, 512 KB: probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080A, 1024 KB: skipped. Probing for Winbond W49F002U, 256 KB: skipped. Probing for Winbond W49V002A, 256 KB: skipped. Probing for Winbond W49V002FA, 256 KB: probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA, 1024 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0xff, id2 0xff, id1 parity violation, id1 is normal flash content, id2 is normal flash content Probing for Winbond W39V080FA (dual mode), 512 KB: Chip lacks correct probe timing information, using default 10mS/40uS. probe_jedec_common: id1 0xea, id2 0xd0, id1 is normal flash content, id2 is normal flash content Probing for Atmel unknown Atmel SPI chip, 0 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for EON unknown EON SPI chip, 0 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Macronix unknown Macronix SPI chip, 0 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for PMC unknown PMC SPI chip, 0 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for SST unknown SST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for ST unknown ST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Sanyo unknown Sanyo SPI chip, 0 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Generic unknown SPI chip (RDID), 0 KB: probe_spi_rdid_generic: id1 0x1f, id2 0x4700 Probing for Generic unknown SPI chip (REMS), 0 KB: probe_spi_rems: id1 0x0, id2 0x0 === This flash part has status UNTESTED for operations: ERASE 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@flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -Vw, -VE), and mention which mainboard or programmer you tested. Thanks for your help! === Flash image seems to be a legacy BIOS. Disabling checks. Writing flash chip... Some block protection in effect, disabling Erasing flash before programming... Erasing flash chip... Looking at blockwise erase function 0... trying... 0x000000-0x000fff, ich_spi_send_multicommand: FIXME: Add on-the-fly reprogramming of the chipset opcode list. Invalid OPCODE 0x20 spi_block_erase_20 failed during command execution at address 0x0
Looking at blockwise erase function 1... trying... 0x000000-0x007fff, ich_spi_send_multicommand: FIXME: Add on-the-fly reprogramming of the chipset opcode list. Invalid OPCODE 0x52 spi_block_erase_52 failed during command execution at address 0x0
Looking at blockwise erase function 2... trying... 0x000000-0x00ffff, 0x010000-0x01ffff, 0x020000-0x02ffff, 0x030000-0x03ffff, 0x040000-0x04ffff, 0x050000-0x05ffff, 0x060000-0x06ffff, 0x070000-0x07ffff, 0x080000-0x08ffff, 0x090000-0x09ffff, 0x0a0000-0x0affff, ERASE FAILED at 0x000a0800! Expected=0xff, Read=0x1f,Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed Transaction error! run OPCODE 0x03 failed failed byte count from 0x000a0000-0x000affff: 0x1a ERASE FAILED!
Looking at blockwise erase function 3... trying... 0x000000-0x3fffff, Some block protection in effect, disabling ich_spi_send_multicommand: FIXME: Add on-the-fly reprogramming of the chipset opcode list. Invalid OPCODE 0x60 spi_chip_erase_60 failed during command execution
Looking at blockwise erase function 4... trying... 0x000000-0x3fffff, Some block protection in effect, disabling
======================================================================== =====================
With thanks & regards, Ramakrishna Kvv Embedded Computing
Emerson Network Power T +9140 66747045 M + 919246659136 ramakrishna.koduri@emerson.com
www.emersonnetworkpower.com/embeddedcomputing
Hello again,
Am 17.06.2010 um 16:00 schrieb Carl-Daniel Hailfinger:
Side note: My AAI patch on the list might result in a faster write if you change the write function for your chip in flashchips.c. It does not support progres printing, though, so you might want to wait for an updated progress printing patch.
I think I will wait for a combination of the AAI patch + Progress bar + 3x BP-Speedpatch.
I think I read somewhere on dangerousprototypes.com that OpenOCD support was broken in some firmware versions. We use essentially the same interface. Anyway, I reported your problem here: http://dangerousprototypes.com/forum/index.php?topic=651.0
So they suggest to send a dummy spi command first and then start. Thats a quick and dirty workaround. Shall I hang in a Logic Analyzer between the Bus-Pirate and the spi-flash to figure out the communication exactly ?
By the way: The flashing yesterday was not only sucessfull, Bus-Pirate and Flashrom saved my bricked T3H6 mainboard and the pc is running perfectly again. Thanks for all the support on this.
And I heard through the grapevine that a pirate in a bus is driving to Tübingen somewhere in the next 2-3 weeks ;-)
Cheers,
Daniel
Hi Daniel,
On 18.06.2010 12:02, Daniel Flinkmann wrote:
Am 17.06.2010 um 16:00 schrieb Carl-Daniel Hailfinger:
Side note: My AAI patch on the list might result in a faster write if you change the write function for your chip in flashchips.c. It does not support progres printing, though, so you might want to wait for an updated progress printing patch.
I think I will wait for a combination of the AAI patch + Progress bar + 3x BP-Speedpatch.
Very understandable. I still need to figure out where the 6x slowdown comes from. Maybe the Linux usbserial driver is crappy, or maybe the Bus Pirate has some internal issues with FTDI<->PIC communication.
I think I read somewhere on dangerousprototypes.com that OpenOCD support was broken in some firmware versions. We use essentially the same interface. Anyway, I reported your problem here: http://dangerousprototypes.com/forum/index.php?topic=651.0
So they suggest to send a dummy spi command first and then start. Thats a quick and dirty workaround. Shall I hang in a Logic Analyzer between the Bus-Pirate and the spi-flash to figure out the communication exactly?
That would be awesome! A logic analyzer trace with an unpatched "flashrom -VV" would help a lot. Admittedly the trace gets less interesting after probing the second chip, but what's essential for me is to compare what's happening on the wire for the first and the second probe. Unfortunately SPI does not have any dummy command, so I don't see a cheap workaround for a possibly broken first command (well, we could issue a RDID command which is the command we also use for probing).
By the way: The flashing yesterday was not only sucessfull, Bus-Pirate and Flashrom saved my bricked T3H6 mainboard and the pc is running perfectly again. Thanks for all the support on this.
Congratulations, this is awesome. Sales pitch follows. ;-) Please spread the word, write about flashrom in your blog and tell your friends. And please stay on the list and/or IRC, we're always happy about people following development, and maybe you'll send some patches of your own in the future.
And I heard through the grapevine that a pirate in a bus is driving to Tübingen somewhere in the next 2-3 weeks ;-)
Awesome! I'm really happy about that.
Congratulations again for the smooth recovery.
Regards, Carl-Daniel
Hi Carl-Daniel,
I have some news:
Am 17.06.2010 um 12:32 schrieb Carl-Daniel Hailfinger:
At the moment I am still waiting for the end of the write flash command, which is running since 23:22 CET yesterday (So that are 8 hour running).
If I take into account the too long timing you were experiencing during read, the expected write time (with my 3x speedup patch) is roughly 9 hours.
Finally I know that it was running from 07:40:08 to 16:57:18 , so 9hrs 17min 10secs . So your calculation was perfect. (See below)
Erasing was complete at aprox 23:38:30 , so roughly after 13 minutes, which is much better. Up to now, I am waiting 8 hours to see any additional reporting, but flashrom is still running.
It might make sense to abort if it is still running after 12 hours total (4 hours after your mail). If you abort, please read the chip afterwards and upload the read file here: http://wedgewww.dyndns.org/uploader/
The following log is the whole erase/write run with the 1048 + 3x-speed-bp-patch .
I am currently making a second read test to see if the flashed binary is still correct.
Thu Jun 17 07:40:08 CEST 2010 flashrom v0.9.2-r1048-with-3xspeed-bp-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 299M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 998 us, 10000 myus = 10013 us, 4 myus = 5 us, OK. Initializing buspirate_spi programmer SPI speed is 8MHz Raw bitbang mode version 1 Raw SPI mode version 1 Probing for AMD Am29F010A/B, 128 KB: skipped. Probing for AMD Am29F002(N)BB, 256 KB: skipped. Probing for AMD Am29F002(N)BT, 256 KB: skipped. Probing for AMD Am29F016D, 2048 KB: skipped. Probing for AMD Am29F040B, 512 KB: skipped. Probing for AMD Am29F080B, 1024 KB: skipped. Probing for AMD Am29LV040B, 512 KB: skipped. Probing for AMD Am29LV081B, 1024 KB: skipped. Probing for ASD AE49F2008, 256 KB: skipped. Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for Atmel AT25DF041A, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF081, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF321A, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25DF641, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25F512B, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT25FS040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF041, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF081A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26DF161A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT26F004, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT29C512, 64 KB: skipped. Probing for Atmel AT29C010A, 128 KB: skipped. Probing for Atmel AT29C020, 256 KB: skipped. Probing for Atmel AT29C040A, 512 KB: skipped. Probing for Atmel AT45CS1282, 16896 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB011D, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB021D, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB041D, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB081D, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB161D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321C, 4224 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB321D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT45DB642D, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Atmel AT49BV512, 64 KB: skipped. Probing for Atmel AT49F020, 256 KB: skipped. Probing for Atmel AT49F002(N), 256 KB: skipped. Probing for Atmel AT49F002(N)T, 256 KB: skipped. Probing for AMIC A25L40PT, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A25L40PU, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for AMIC A29002B, 256 KB: skipped. Probing for AMIC A29002T, 256 KB: skipped. Probing for AMIC A29040B, 512 KB: skipped. Probing for AMIC A49LF040A, 512 KB: skipped. Probing for EMST F49B002UA, 256 KB: skipped. Probing for Eon EN25B05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B05T, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B10T, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B20T, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B40T, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B80T, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B16T, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B32T, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25B64T, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25D16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F05, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN25F32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Eon EN29F010, 128 KB: skipped. Probing for EON EN29F002(A)(N)B, 256 KB: skipped. Probing for EON EN29F002(A)(N)T, 256 KB: skipped. Probing for Fujitsu MBM29F004BC, 512 KB: skipped. Probing for Fujitsu MBM29F004TC, 512 KB: skipped. Probing for Fujitsu MBM29F400BC, 512 KB: skipped. Probing for Fujitsu MBM29F400TC, 512 KB: skipped. Probing for Intel 28F001BX-B, 128 KB: skipped. Probing for Intel 28F001BX-T, 128 KB: skipped. Probing for Intel 28F004S5, 512 KB: skipped. Probing for Intel 28F004BV/BE-B, 512 KB: skipped. Probing for Intel 28F004BV/BE-T, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-B, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-T, 512 KB: skipped. Probing for Intel 82802AB, 512 KB: skipped. Probing for Intel 82802AC, 1024 KB: skipped. Probing for Macronix MX25L512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1005, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L2005, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L4005, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L8005, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1605, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L1635D, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3205, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L3235D, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L6405, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX25L12805, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix MX29F001B, 128 KB: skipped. Probing for Macronix MX29F001T, 128 KB: skipped. Probing for Macronix MX29F002B, 256 KB: skipped. Probing for Macronix MX29F002T, 256 KB: skipped. Probing for Macronix MX29LV040, 512 KB: skipped. Probing for Numonyx M25PE10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Numonyx M25PE16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV010, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV020, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV040, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm25LV512, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC Pm29F002T, 256 KB: skipped. Probing for PMC Pm29F002B, 256 KB: skipped. Probing for PMC Pm39LV010, 128 KB: skipped. Probing for PMC Pm39LV020, 256 KB: skipped. Probing for PMC Pm39LV040, 512 KB: skipped. Probing for PMC Pm49FL002, 256 KB: skipped. Probing for PMC Pm49FL004, 512 KB: skipped. Probing for Sanyo LF25FW203A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sharp LHF00L04, 1024 KB: skipped. Probing for Spansion S25FL008A, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Spansion S25FL016A, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF016B, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF032B, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25VF040.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF040B, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST SST25LF040A.RES, 512 KB: probe_spi_res2: id1 0xbf, id2 0x8e Probing for SST SST25VF040B.REMS, 512 KB: probe_spi_rems: id1 0xbf, id2 0x8e Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Probing for SST SST28SF040A, 512 KB: skipped. Probing for SST SST29EE010, 128 KB: skipped. Probing for SST SST29LE010, 128 KB: skipped. Probing for SST SST29EE020A, 256 KB: skipped. Probing for SST SST29LE020, 256 KB: skipped. Probing for SST SST39SF512, 64 KB: skipped. Probing for SST SST39SF010A, 128 KB: skipped. Probing for SST SST39SF020A, 256 KB: skipped. Probing for SST SST39SF040, 512 KB: skipped. Probing for SST SST39VF512, 64 KB: skipped. Probing for SST SST39VF010, 128 KB: skipped. Probing for SST SST39VF020, 256 KB: skipped. Probing for SST SST39VF040, 512 KB: skipped. Probing for SST SST39VF080, 1024 KB: skipped. Probing for SST SST49LF002A/B, 256 KB: skipped. Probing for SST SST49LF003A/B, 384 KB: skipped. Probing for SST SST49LF004A/B, 512 KB: skipped. Probing for SST SST49LF004C, 512 KB: skipped. Probing for SST SST49LF008A, 1024 KB: skipped. Probing for SST SST49LF008C, 1024 KB: skipped. Probing for SST SST49LF016C, 2048 KB: skipped. Probing for SST SST49LF020, 256 KB: skipped. Probing for SST SST49LF020A, 256 KB: skipped. Probing for SST SST49LF040, 512 KB: skipped. Probing for SST SST49LF040B, 512 KB: skipped. Probing for SST SST49LF080A, 1024 KB: skipped. Probing for SST SST49LF160C, 2048 KB: skipped. Probing for ST M25P05-A, 64 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P05.RES, 64 KB: Ignoring RES in favour of RDID. Probing for ST M25P10-A, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P10.RES, 128 KB: Ignoring RES in favour of RDID. Probing for ST M25P20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P40-old, 512 KB: Ignoring RES in favour of RDID. Probing for ST M25P80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M25P128, 16384 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST M29F002B, 256 KB: skipped. Probing for ST M29F002T/NT, 256 KB: skipped. Probing for ST M29F040B, 512 KB: skipped. Probing for ST M29F400BT, 512 KB: skipped. Probing for ST M29W010B, 128 KB: skipped. Probing for ST M29W040B, 512 KB: skipped. Probing for ST M29W512B, 64 KB: skipped. Probing for ST M50FLW040A, 512 KB: skipped. Probing for ST M50FLW040B, 512 KB: skipped. Probing for ST M50FLW080A, 1024 KB: skipped. Probing for ST M50FLW080B, 1024 KB: skipped. Probing for ST M50FW002, 256 KB: skipped. Probing for ST M50FW016, 2048 KB: skipped. Probing for ST M50FW040, 512 KB: skipped. Probing for ST M50FW080, 1024 KB: skipped. Probing for ST M50LPW116, 2048 KB: skipped. Probing for SyncMOS S29C31004T, 512 KB: skipped. Probing for SyncMOS S29C51001T, 128 KB: skipped. Probing for SyncMOS S29C51002T, 256 KB: skipped. Probing for SyncMOS S29C51004T, 512 KB: skipped. Probing for TI TMS29F002RB, 256 KB: skipped. Probing for TI TMS29F002RT, 256 KB: skipped. Probing for Winbond W25Q80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25Q32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x10, 128 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x20, 256 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x40, 512 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x80, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x16, 2048 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x32, 4096 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W25x64, 8192 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Winbond W29C011, 128 KB: skipped. Probing for Winbond W29C020C, 256 KB: skipped. Probing for Winbond W29C040P, 512 KB: skipped. Probing for Winbond W29EE011, 128 KB: skipped. Probing for Winbond W39V040A, 512 KB: skipped. Probing for Winbond W39V040B, 512 KB: skipped. Probing for Winbond W39V040C, 512 KB: skipped. Probing for Winbond W39V040FA, 512 KB: skipped. Probing for Winbond W39V080A, 1024 KB: skipped. Probing for Winbond W49F002U, 256 KB: skipped. Probing for Winbond W49V002A, 256 KB: skipped. Probing for Winbond W49V002FA, 256 KB: skipped. Probing for Winbond W39V080FA, 1024 KB: skipped. Probing for Winbond W39V080FA (dual mode), 512 KB: skipped. Probing for Atmel unknown Atmel SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for EON unknown EON SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Macronix unknown Macronix SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for PMC unknown PMC SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for SST unknown SST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for ST unknown ST SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Sanyo unknown Sanyo SPI chip, 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (RDID), 0 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Probing for Generic unknown SPI chip (REMS), 0 KB: probe_spi_rems: id1 0xbf, id2 0x8e === This flash part has status UNTESTED for operations: ERASE 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@flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -Vw, -VE), and mention which mainboard or programmer you tested. Thanks for your help! === Flash image seems to be a legacy BIOS. Disabling checks. Writing flash chip... Some block protection in effect, disabling Erasing flash before programming... Erasing flash chip... Looking at blockwise erase function 0... trying... 0x000000-0x000fff, 0x001000-0x001fff, 0x002000-0x002fff, 0x003000-0x003fff, 0x004000-0x004fff, 0x005000-0x005fff, 0x006000-0x006fff, 0x007000-0x007fff, 0x008000-0x008fff, 0x009000-0x009fff, 0x00a000-0x00afff, 0x00b000-0x00bfff, 0x00c000-0x00cfff, 0x00d000-0x00dfff, 0x00e000-0x00efff, 0x00f000-0x00ffff, 0x010000-0x010fff, 0x011000-0x011fff, 0x012000-0x012fff, 0x013000-0x013fff, 0x014000-0x014fff, 0x015000-0x015fff, 0x016000-0x016fff, 0x017000-0x017fff, 0x018000-0x018fff, 0x019000-0x019fff, 0x01a000-0x01afff, 0x01b000-0x01bfff, 0x01c000-0x01cfff, 0x01d000-0x01dfff, 0x01e000-0x01efff, 0x01f000-0x01ffff, 0x020000-0x020fff, 0x021000-0x021fff, 0x022000-0x022fff, 0x023000-0x023fff, 0x024000-0x024fff, 0x025000-0x025fff, 0x026000-0x026fff, 0x027000-0x027fff, 0x028000-0x028fff, 0x029000-0x029fff, 0x02a000-0x02afff, 0x02b000-0x02bfff, 0x02c000-0x02cfff, 0x02d000-0x02dfff, 0x02e000-0x02efff, 0x02f000-0x02ffff, 0x030000-0x030fff, 0x031000-0x031fff, 0x032000-0x032fff, 0x033000-0x033fff, 0x034000-0x034fff, 0x035000-0x035fff, 0x036000-0x036fff, 0x037000-0x037fff, 0x038000-0x038fff, 0x039000-0x039fff, 0x03a000-0x03afff, 0x03b000-0x03bfff, 0x03c000-0x03cfff, 0x03d000-0x03dfff, 0x03e000-0x03efff, 0x03f000-0x03ffff, 0x040000-0x040fff, 0x041000-0x041fff, 0x042000-0x042fff, 0x043000-0x043fff, 0x044000-0x044fff, 0x045000-0x045fff, 0x046000-0x046fff, 0x047000-0x047fff, 0x048000-0x048fff, 0x049000-0x049fff, 0x04a000-0x04afff, 0x04b000-0x04bfff, 0x04c000-0x04cfff, 0x04d000-0x04dfff, 0x04e000-0x04efff, 0x04f000-0x04ffff, 0x050000-0x050fff, 0x051000-0x051fff, 0x052000-0x052fff, 0x053000-0x053fff, 0x054000-0x054fff, 0x055000-0x055fff, 0x056000-0x056fff, 0x057000-0x057fff, 0x058000-0x058fff, 0x059000-0x059fff, 0x05a000-0x05afff, 0x05b000-0x05bfff, 0x05c000-0x05cfff, 0x05d000-0x05dfff, 0x05e000-0x05efff, 0x05f000-0x05ffff, 0x060000-0x060fff, 0x061000-0x061fff, 0x062000-0x062fff, 0x063000-0x063fff, 0x064000-0x064fff, 0x065000-0x065fff, 0x066000-0x066fff, 0x067000-0x067fff, 0x068000-0x068fff, 0x069000-0x069fff, 0x06a000-0x06afff, 0x06b000-0x06bfff, 0x06c000-0x06cfff, 0x06d000-0x06dfff, 0x06e000-0x06efff, 0x06f000-0x06ffff, 0x070000-0x070fff, 0x071000-0x071fff, 0x072000-0x072fff, 0x073000-0x073fff, 0x074000-0x074fff, 0x075000-0x075fff, 0x076000-0x076fff, 0x077000-0x077fff, 0x078000-0x078fff, 0x079000-0x079fff, 0x07a000-0x07afff, 0x07b000-0x07bfff, 0x07c000-0x07cfff, 0x07d000-0x07dfff, 0x07e000-0x07efff, 0x07f000-0x07ffff, 0x080000-0x080fff, 0x081000-0x081fff, 0x082000-0x082fff, 0x083000-0x083fff, 0x084000-0x084fff, 0x085000-0x085fff, 0x086000-0x086fff, 0x087000-0x087fff, 0x088000-0x088fff, 0x089000-0x089fff, 0x08a000-0x08afff, 0x08b000-0x08bfff, 0x08c000-0x08cfff, 0x08d000-0x08dfff, 0x08e000-0x08efff, 0x08f000-0x08ffff, 0x090000-0x090fff, 0x091000-0x091fff, 0x092000-0x092fff, 0x093000-0x093fff, 0x094000-0x094fff, 0x095000-0x095fff, 0x096000-0x096fff, 0x097000-0x097fff, 0x098000-0x098fff, 0x099000-0x099fff, 0x09a000-0x09afff, 0x09b000-0x09bfff, 0x09c000-0x09cfff, 0x09d000-0x09dfff, 0x09e000-0x09efff, 0x09f000-0x09ffff, 0x0a0000-0x0a0fff, 0x0a1000-0x0a1fff, 0x0a2000-0x0a2fff, 0x0a3000-0x0a3fff, 0x0a4000-0x0a4fff, 0x0a5000-0x0a5fff, 0x0a6000-0x0a6fff, 0x0a7000-0x0a7fff, 0x0a8000-0x0a8fff, 0x0a9000-0x0a9fff, 0x0aa000-0x0aafff, 0x0ab000-0x0abfff, 0x0ac000-0x0acfff, 0x0ad000-0x0adfff, 0x0ae000-0x0aefff, 0x0af000-0x0affff, 0x0b0000-0x0b0fff, 0x0b1000-0x0b1fff, 0x0b2000-0x0b2fff, 0x0b3000-0x0b3fff, 0x0b4000-0x0b4fff, 0x0b5000-0x0b5fff, 0x0b6000-0x0b6fff, 0x0b7000-0x0b7fff, 0x0b8000-0x0b8fff, 0x0b9000-0x0b9fff, 0x0ba000-0x0bafff, 0x0bb000-0x0bbfff, 0x0bc000-0x0bcfff, 0x0bd000-0x0bdfff, 0x0be000-0x0befff, 0x0bf000-0x0bffff, 0x0c0000-0x0c0fff, 0x0c1000-0x0c1fff, 0x0c2000-0x0c2fff, 0x0c3000-0x0c3fff, 0x0c4000-0x0c4fff, 0x0c5000-0x0c5fff, 0x0c6000-0x0c6fff, 0x0c7000-0x0c7fff, 0x0c8000-0x0c8fff, 0x0c9000-0x0c9fff, 0x0ca000-0x0cafff, 0x0cb000-0x0cbfff, 0x0cc000-0x0ccfff, 0x0cd000-0x0cdfff, 0x0ce000-0x0cefff, 0x0cf000-0x0cffff, 0x0d0000-0x0d0fff, 0x0d1000-0x0d1fff, 0x0d2000-0x0d2fff, 0x0d3000-0x0d3fff, 0x0d4000-0x0d4fff, 0x0d5000-0x0d5fff, 0x0d6000-0x0d6fff, 0x0d7000-0x0d7fff, 0x0d8000-0x0d8fff, 0x0d9000-0x0d9fff, 0x0da000-0x0dafff, 0x0db000-0x0dbfff, 0x0dc000-0x0dcfff, 0x0dd000-0x0ddfff, 0x0de000-0x0defff, 0x0df000-0x0dffff, 0x0e0000-0x0e0fff, 0x0e1000-0x0e1fff, 0x0e2000-0x0e2fff, 0x0e3000-0x0e3fff, 0x0e4000-0x0e4fff, 0x0e5000-0x0e5fff, 0x0e6000-0x0e6fff, 0x0e7000-0x0e7fff, 0x0e8000-0x0e8fff, 0x0e9000-0x0e9fff, 0x0ea000-0x0eafff, 0x0eb000-0x0ebfff, 0x0ec000-0x0ecfff, 0x0ed000-0x0edfff, 0x0ee000-0x0eefff, 0x0ef000-0x0effff, 0x0f0000-0x0f0fff, 0x0f1000-0x0f1fff, 0x0f2000-0x0f2fff, 0x0f3000-0x0f3fff, 0x0f4000-0x0f4fff, 0x0f5000-0x0f5fff, 0x0f6000-0x0f6fff, 0x0f7000-0x0f7fff, 0x0f8000-0x0f8fff, 0x0f9000-0x0f9fff, 0x0fa000-0x0fafff, 0x0fb000-0x0fbfff, 0x0fc000-0x0fcfff, 0x0fd000-0x0fdfff, 0x0fe000-0x0fefff, 0x0ff000-0x0fffff, SUCCESS. done. COMPLETE. Verifying flash... VERIFIED. Raw bitbang mode version 1 Bus Pirate shutdown completed. Thu Jun 17 16:57:18 CEST 2010
Just a general thing when I have a look at the flash process output:
1. Writing flash chip... 2. Erasing flash before programming... 3. SUCCESS. 4. done. 5. COMPLETE. 6. Verifying flash... 7. VERIFIED.
So for me as a (happy bunny) user I can be sure that flashrom is: (1) starting to write the flash chip, (2) starting to erase the flash before programming, (3) sucessfully done something (4) done again something, (5) Completed something, (6) starting to verify (7) sucessfully verified the flash write.
It is a bit inconsistent in the user interface.
I would be happy to see the output similar to this:
Writing flash chip... Erasing flash before programming... ERASED
Programming flash ... PROGRAMMED
Starting to verify ... VERIFIED
When I used flashrom the first time, I was pretty much confused by the "done." at the end and I wasn't sure that flashrom is now programming the flash. I assumed it would have completed its work, but don't exit the application. It could be that I am not the only one who suddenly fall into this trap ;-) I know it's just nitpicking, but sometimes these views from the 3rd person helps.
I have also done a second read test to ensure that the flash was really successfully written. Again the time to read the flash was just 15 min 7sec and both Original and re-read flash binary were exactly the same: # md5sum JX58D422.BIN readtest-after-flash.bin 52c44f00eecaad3626c3d8b42f1dd1d8 JX58D422.BIN 52c44f00eecaad3626c3d8b42f1dd1d8 readtest-after-flash.bin
Log: Thu Jun 17 17:35:18 CEST 2010 flashrom v0.9.2-r1048-with-3xspeed-bp-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OK. Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. === This flash part has status UNTESTED for operations: ERASE 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@flashrom.org if any of the above operations work correctly for you with this flash part. Please include the flashrom output with the additional -V option for all operations you tested (-V, -Vr, -Vw, -VE), and mention which mainboard or programmer you tested. Thanks for your help! === Reading flash... done. Thu Jun 17 17:50:25 CEST 2010
Please let me know if I can do any additional tests for you.
Kind regards,
Daniel
Hi Daniel,
On 17.06.2010 18:01, Daniel Flinkmann wrote:
I have some news:
Am 17.06.2010 um 12:32 schrieb Carl-Daniel Hailfinger:
At the moment I am still waiting for the end of the write flash command, which is running since 23:22 CET yesterday (So that are 8 hour running).
If I take into account the too long timing you were experiencing during read, the expected write time (with my 3x speedup patch) is roughly 9 hours.
Finally I know that it was running from 07:40:08 to 16:57:18 , so 9hrs 17min 10secs . So your calculation was perfect. (See below)
Glad to hear my estimates were correct. This also means that something is slowing down all accesses with the same factor (not good).
Erasing was complete at aprox 23:38:30 , so roughly after 13 minutes, which is much better. Up to now, I am waiting 8 hours to see any additional reporting, but flashrom is still running.
It might make sense to abort if it is still running after 12 hours total (4 hours after your mail). If you abort, please read the chip afterwards and upload the read file here: http://wedgewww.dyndns.org/uploader/
The following log is the whole erase/write run with the 1048 + 3x-speed-bp-patch .
I am currently making a second read test to see if the flashed binary is still correct.
Thu Jun 17 07:40:08 CEST 2010 flashrom v0.9.2-r1048-with-3xspeed-bp-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 299M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 998 us, 10000 myus = 10013 us, 4 myus = 5 us, OK. Initializing buspirate_spi programmer SPI speed is 8MHz Raw bitbang mode version 1 Raw SPI mode version 1 Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00 Probing for SST SST25VF080B, 1024 KB: probe_spi_rdid_generic: id1 0xbf, id2 0x258e Chip status register is 1c Chip status register: Block Protect Write Disable (BPL) is not set Chip status register: Auto Address Increment Programming (AAI) is not set Chip status register: Bit 5 / Block Protect 3 (BP3) is not set Chip status register: Bit 4 / Block Protect 2 (BP2) is set Chip status register: Bit 3 / Block Protect 1 (BP1) is set Chip status register: Bit 2 / Block Protect 0 (BP0) is set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Flash image seems to be a legacy BIOS. Disabling checks. Writing flash chip... Some block protection in effect, disabling Erasing flash before programming... Erasing flash chip... Looking at blockwise erase function 0... trying... 0x000000-0x000fff, 0x001000-0x001fff, 0x002000-0x002fff, 0x003000-0x003fff, 0x004000-0x004fff, 0x005000-0x005fff, 0x006000-0x006fff, 0x007000-0x007fff, 0x008000-0x008fff, 0x009000-0x009fff, 0x00a000-0x00afff, 0x00b000-0x00bfff, 0x00c000-0x00cfff, 0x00d000-0x00dfff, 0x00e000-0x00efff, 0x00f000-0x00ffff, 0x010000-0x010fff, 0x011000-0x011fff, 0x012000-0x012fff, 0x013000-0x013fff, 0x014000-0x014fff, 0x015000-0x015fff, 0x016000-0x016fff, 0x017000-0x017fff, 0x018000-0x018fff, 0x019000-0x019fff, 0x01a000-0x01afff, 0x01b000-0x01bfff, 0x01c000-0x01cfff, 0x01d000-0x01dfff, 0x01e000-0x01efff, 0x01f000-0x01ffff, 0x020000-0x020fff, 0x021000-0x021fff, 0x022000-0x022fff, 0x023000-0x023fff, 0x024000-0x024fff, 0x025000-0x025fff, 0x026000-0x026fff, 0x027000-0x027fff, 0x028000-0x028fff, 0x029000-0x029fff, 0x02a000-0x02afff, 0x02b000-0x02bfff, 0x02c000-0x02cfff, 0x02d000-0x02dfff, 0x02e000-0x02efff, 0x02f000-0x02ffff, 0x0 SUCCESS. done. COMPLETE. Verifying flash... VERIFIED. Raw bitbang mode version 1 Bus Pirate shutdown completed. Thu Jun 17 16:57:18 CEST 2010
Congratulations!
Just a general thing when I have a look at the flash process output:
- Writing flash chip...
- Erasing flash before programming...
- SUCCESS.
- done.
- COMPLETE.
- Verifying flash...
- VERIFIED.
So for me as a (happy bunny) user I can be sure that flashrom is: (1) starting to write the flash chip, (2) starting to erase the flash before programming, (3) sucessfully done something (4) done again something, (5) Completed something, (6) starting to verify (7) sucessfully verified the flash write.
It is a bit inconsistent in the user interface.
Yes. This is caused by activating the verbose switch. The normal output is a lot more readable AFAIK.
I would be happy to see the output similar to this:
Writing flash chip... Erasing flash before programming... ERASED Programming flash ... PROGRAMMED Starting to verify ... VERIFIED
When I used flashrom the first time, I was pretty much confused by the "done." at the end and I wasn't sure that flashrom is now programming the flash. I assumed it would have completed its work, but don't exit the application. It could be that I am not the only one who suddenly fall into this trap ;-) I know it's just nitpicking, but sometimes these views from the 3rd person helps.
Yes, thanks. We should probably change the messages a bit. However, it seems progress printing is also very important and maybe it should even come first.
I have also done a second read test to ensure that the flash was really successfully written. Again the time to read the flash was just 15 min 7sec and both Original and re-read flash binary were exactly the same: # md5sum JX58D422.BIN readtest-after-flash.bin 52c44f00eecaad3626c3d8b42f1dd1d8 JX58D422.BIN 52c44f00eecaad3626c3d8b42f1dd1d8 readtest-after-flash.bin
Very nice.
Log: Thu Jun 17 17:35:18 CEST 2010 flashrom v0.9.2-r1048-with-3xspeed-bp-patch on Linux 2.6.32-22-server (x86_64), built with libpci 3.0.0, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OK. Found chip "SST SST25VF080B" (1024 KB, SPI) at physical address 0xfff00000. Reading flash... done. Thu Jun 17 17:50:25 CEST 2010
Excellent.
Please let me know if I can do any additional tests for you.
Could you run "flashrom -VV" with a completely unpatched flashrom? I'd like to give Ian Lesnet (Bus Pirate creator) a full log which he requested here: http://dangerousprototypes.com/forum/index.php?topic=651.0
Thanks again for all the testing you did.
Kind regards, Carl-Daniel
Am 16.06.2010 um 16:05 schrieb Carl-Daniel Hailfinger:
Calibrating delay loop... OS timer resolution is 1 usecs, 299M loops per second, 10 myus = 11 us, 100 myus = 101 us, 1000 myus = 999 us, 10000 myus = 10113 us, 4 myus = 5 us, OK. Initializing buspirate_spi programmer SPI speed is 8MHz Raw bitbang mode version 1 Raw SPI mode version 1 Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00
WTF?!? This looks like data corruption. Such a response is absolutely unacceptable. Can you run
flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -V
a few times (should be a matter of a few seconds) and check if any probe_spi_rdid_generic complains about a parity violation? If yes, there is a bug somewhere which needs to be fixed.
Just that one with AT25DF021 (constantly). See:
root@zwerg:~# date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -V|grep vio Wed Jun 16 20:38:12 CEST 2010 Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00
root@zwerg:~# date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -V|grep vio Wed Jun 16 20:38:17 CEST 2010 Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00
root@zwerg:~# date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -V|grep vio Wed Jun 16 20:38:23 CEST 2010 Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00
root@zwerg:~# date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -V|grep vio Wed Jun 16 20:38:28 CEST 2010 Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00
root@zwerg:~# date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -V|grep vio Wed Jun 16 20:38:34 CEST 2010 Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00
root@zwerg:~# date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -V|grep vio Wed Jun 16 20:38:38 CEST 2010 Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00
root@zwerg:~# date ; flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -V|grep vio Wed Jun 16 20:38:45 CEST 2010 Probing for Atmel AT25DF021, 256 KB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0x00, id2 0x00
I will give you more updates later tonight.
Cheers,
Daniel