[flashrom] Flash erasing failed mid way on Atmel AT25DF321 flash chip

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Fri Jun 18 01:56:50 CEST 2010


Hi Ramakrishna,

is this a production system you have to recover now, or can you reflash
externally if something goes wrong?


On 17.06.2010 16:26, Ramakrishna.Koduri at emerson.com wrote:
> 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.
>
> [root at 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)
> 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... 
> 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 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.
> 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!
>   

Ah yes. This means your current BIOS version somehow blocks reading of
some regions. You could try flashrom r1016 or later which has improved
region protection handling.


>  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
>   

It would be interesting to check if reading the complete chip works. I
think it probably won't work. Please report back with the verbose
results of a pure read test.

Regards,
Carl-Daniel

-- 
http://www.hailfinger.org/





More information about the flashrom mailing list