After successfully reading from W25Q128FV, I wanted to write data back. But I get the error "ERASE FAILED!". Is there something I can do to make writing successful?
The chip is located on the mainboard of an HP Elitebook notebook. The pins CS, DO, GND, VCC, CLK and DI are connected to a Raspberry Pi.
pi@raspberrypi:~ $ flashrom -c "W25Q128.V" -w /home/pi/Desktop/bios.bin -VVV -p linux_spi:dev=/dev/spidev0.0,spispeed=16000 flashrom on Linux 5.4.51+ (armv6l) flashrom is free software, get the source code at https://flashrom.org
flashrom was built with libpci 3.5.2, GCC 8.2.0, little endian Command line (7 args): flashrom -c W25Q128.V -w /home/pi/Desktop/bios.bin -VVV -p linux_spi:dev=/dev/spidev0.0,spispeed=16000 Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns). Initializing linux_spi programmer Using device /dev/spidev0.0 Using 16000 kHz clock The following protocols are supported: SPI. Probing for Winbond W25Q128.V, 16384 kB: programmer_map_flash_region: mapping W25Q128.V from 0xff000000 to 0x00000000 RDID returned 0xef 0x40 0x18. probe_spi_rdid_generic: id1 0xef, id2 0x4018 Found Winbond flash chip "W25Q128.V" (16384 kB, SPI) on linux_spi. Chip status register is 0xfc. programmer_unmap_flash_region: unmapped 0x00000000 This chip may contain one-time programmable memory. flashrom cannot read and may never be able to write it, hence it may not be able to completely clone the contents of this chip (see man page for details). programmer_map_flash_region: mapping W25Q128.V from 0xff000000 to 0x00000000 Some block protection in effect, disabling... Block protection could not be disabled! Chip status register is 0xfc. Reading old flash chip contents... done. Erasing and writing flash chip... Trying erase function 0... 0x000000-0x000fff:EFAILED at 0x00000000! Expected=0xff, Found=0x00, failed byte count from 0x00000000-0x00000fff: 0xffc ERASE FAILED! Reading current flash chip contents... done. Looking for another erase function. Trying erase function 1... 0x000000-0x007fff:EFAILED at 0x00000000! Expected=0xff, Found=0x00, failed byte count from 0x00000000-0x00007fff: 0x8000 ERASE FAILED! Reading current flash chip contents... done. Looking for another erase function. Trying erase function 2... 0x000000-0x00ffff:EFAILED at 0x00000000! Expected=0xff, Found=0x00, failed byte count from 0x00000000-0x0000ffff: 0x10000 ERASE FAILED! Reading current flash chip contents... done. Looking for another erase function. Trying erase function 3... 0x000000-0xffffff:EFAILED at 0x00000000! Expected=0xff, Found=0x00, failed byte count from 0x00000000-0x00ffffff: 0xffffd5 ERASE FAILED! Reading current flash chip contents... done. Looking for another erase function. Trying erase function 4... 0x000000-0xffffff:EFAILED at 0x00000000! Expected=0xff, Found=0x00, failed byte count from 0x00000000-0x00ffffff: 0xfffd3e ERASE FAILED! Reading current flash chip contents... done. Looking for another erase function. Trying erase function 5... not defined. No usable erase functions left. FAILED! Uh oh. Erase/write failed. Checking if anything has changed. Reading current flash chip contents... done. Apparently at least some data has changed. Your flash chip is in an unknown state. Please report this on IRC at chat.freenode.net (channel #flashrom) or mail flashrom@flashrom.org, thanks! programmer_unmap_flash_region: unmapped 0x00000000