Flash EEPROM programmer

Given the abundance of GPIOs at 3.3V, using the Raspberry Pi as programmer for Flash EEPROMs (commonly used as BIOS chips) would be awesome.

Pretty much all flash chips (Parallel/FWH/LPC/SPI interfaces) nowadays use 3.3V, so you'd just need a Raspberry Pi to recover from a failed BIOS/EFI/PXE/firmware/whatever update or to write a new image to such a flash chip. (Please note that I'm not talking about flash chips used in SSDs or USB pen drives, those are way more complicated to work with.)

The open source flashrom tool at http://flashrom.org/ is a perfect match for this task. It can use GPIO interfaces to bitbang a SPI bus/interface, or if you already have a Linux SPI driver in your kernel, it can use that driver. That alone would handle almost all flash chips on very recent x86 mainboards. Support for older LPC/FWH/Parallel type flash chips is available as well, but the bitbanging variants of those buses are fairly experimental.

If anyone with access to a beta board is willing to test how well flashrom works, I will help you to get it running and to test it.

Disclaimer: I'm the maintainer of flashrom, and I have written flashrom drivers for various pieces of hardware in the past (Bus Pirate etc.). I don't have any commercial interest in flashrom, it is a hobby for me.

The easiest way to test would be to rip a SPI flash chip (usually 8 pins, model number is something25something) out of a dead mainboard or a dead graphics card or a dead network card, tell me the flash chip model number and the GPIO pins you plan to attach it to, and I'll write a driver for it. If you don't know how to wire it up, just tell me the model number and I'll guide you. Compiling the flashrom source code is easy, you just download it and type "make".

Debian testing/unstable has a flashrom which should be new enough, but it's easy to compile flashrom from source: http://www.flashrom.org/Downloads has a short howto for compiling flashrom.If you need any help, drop by in #flashrom on irc.freenode.net.

It uses SST25VF080B ... from the datasheet it seems that it has SPI ... unfortunatelly it's already a little late today to pick up soldering iron and have some fun ... also my hands are a little shaky for soldering SMDs today (I will probably have to lower my caffeine intake )

Anyway, thanks for the info, I'll update this thread when I get to it (hopefully on Sunday).

SUCCESS!!! It worked great! I have used the kernel you have suggested and debian wheezy... flashrom wasn't in the repository, but it was no problem to compile version 0.9.5.2 ... I only had to install libpci-dev

If you want I have some ugly photos of the my setup ... the chip was SMD and I have soldered wires directly to MB ...

I have tried reading, writing and verifying the flash with RasPi's SPI and everything worked.

I have connected only VDD, VSS, SI, SO, SCK and CE# and it worked (I thought that I will have to do some magic with WP# but I was either lucky or it wasn't necessary )

I THINK it was about a minute or two ... I'd say pretty fast ... I didn't think about measuring it and you know how fast time runs when you are excited But I would say that it didn't take (significantly) longer than the normal flashing with manufacturer supplied utility.

Hi,I'd like to know how to connect the raspberry pi to an SST 49LF020 in order to reprogram it.If I've understood well, the SST 49LF020 has a parallel interface for writing.Could someone write me how to connect the RPI GPIO pins to the LPC?Thanks

Yeah, it would be good if Rasberry could work as EEPROM programmer. But has anyone thought about extending it for NAND flash memory programmer so that it can program NAND flash made by Hynix, Elpida, Samsung? E.g.. HY27US08121A or similar is used in Xbox360 and other kind of boxes?

carldani wrote:Given the abundance of GPIOs at 3.3V, using the Raspberry Pi as programmer for Flash EEPROMs (commonly used as BIOS chips) would be awesome.

Pretty much all flash chips (Parallel/FWH/LPC/SPI interfaces) nowadays use 3.3V, so you'd just need a Raspberry Pi to recover from a failed BIOS/EFI/PXE/firmware/whatever update or to write a new image to such a flash chip. (Please note that I'm not talking about flash chips used in SSDs or USB pen drives, those are way more complicated to work with.)

The open source flashrom tool at http://flashrom.org/ is a perfect match for this task. It can use GPIO interfaces to bitbang a SPI bus/interface, or if you already have a Linux SPI driver in your kernel, it can use that driver. That alone would handle almost all flash chips on very recent x86 mainboards. Support for older LPC/FWH/Parallel type flash chips is available as well, but the bitbanging variants of those buses are fairly experimental.

If anyone with access to a beta board is willing to test how well flashrom works, I will help you to get it running and to test it.

Disclaimer: I'm the maintainer of flashrom, and I have written flashrom drivers for various pieces of hardware in the past (Bus Pirate etc.). I don't have any commercial interest in flashrom, it is a hobby for me.

I know this is a old thread, but I would to know if this utility can read/program microwire EEPROMS such as 93C46/56/66 family.Thanks in advance