I'm using a Raspberry Pi Zero and SOIC clip to communicate with a
MX25L12873F chip, using flashrom built from master branch (1b1066e).
Reading the chip is working fine, no matter how many times I do a
read operation, the resulting firmware image is correct. However, I'm
unable to write to the chip:
========================================================================
flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=1000 -c \
MX25L12833F/MX25L12835F/MX25L12845E/MX25L12865E/MX25L12873F \
-w firmware.bin --ifd -i fd -i bios -i me --noverify-all -VVV -o out.log
Initializing linux_spi programmer
Using device /dev/spidev0.0
Using 1000kHz clock
get_max_kernel_buf_size: Using value from \
/sys/module/spidev/parameters/bufsiz as max buffer size.
linux_spi_init: max_kernel_buf_size: 4096
The following protocols are supported: SPI.
Probing for Macronix \
MX25L12833F/MX25L12835F/MX25L12845E/MX25L12865E/MX25L12873F, \
16384 kB: programmer_map_flash_region: mapping \
MX25L12833F/MX25L12835F/MX25L12845E/MX25L12865E/MX25L12873F from \
0xff000000 to 0x00000000
RDID returned 0xc2 0x20 0x18. compare_id: id1 0xc2, id2 0x2018
Added layout entry 00000000 - 00ffffff named complete flash
Found Macronix flash chip \
"MX25L12833F/MX25L12835F/MX25L12845E/MX25L12865E/MX25L12873F" \
(16384 kB, SPI) on linux_spi.
Chip status register is 0x7c.
Chip status register: Status Register Write Disable (SRWD, SRP, ...) \
is not set
Chip status register: Bit 6 is set
Chip status register: Block Protect 3 (BP3) is set
Chip status register: Block Protect 2 (BP2) is set
Chip status register: Block Protect 1 (BP1) is set
Chip status register: 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
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 \
MX25L12833F/MX25L12835F/MX25L12845E/MX25L12865E/MX25L12873F from \
0xff000000 to 0x00000000
Some block protection in effect, disabling... \
Block protection could not be disabled!
Chip status register is 0x7c.
Chip status register: Status Register Write Disable (SRWD, SRP, ...) \
is not set
Chip status register: Bit 6 is set
Chip status register: Block Protect 3 (BP3) is set
Chip status register: Block Protect 2 (BP2) is set
Chip status register: Block Protect 1 (BP1) is set
Chip status register: 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
Reading ich descriptor... done.
layout_from_ich_descriptors():1367, returned with value -1.
Couldn't parse the descriptor!
Illegal instruction
========================================================================
On an identical system, I have been using the flashrom internal
programmer to write the same firmware image without any errors parsing
the descriptor.
Any ideas why this happens? I'm a doing something wrong?
Thanks.
Best regards,
Pete Smith