There are many different SPI programmers on the market right now and almost any microcontroller-based board can be used as one, but this time I will speak about one of the cheapest programmers to date - CH341A-based.
They are sold from various chinese suppliers for about 4 euro and are capable of flashing with both SPI and I2C chips, working as USB-TTL adapter and USB-I2C bridge.
In this guide I will only cover the SPI part of functionality because this is what you need to flash modified or restore original firmware on all modern PCs.
0. Get yourself a CH341A-based programmer. They are various in PCB designs and features, but all of them can flash SPI chips, so buy any model suitable for your needs. I’ve bought this one.
1. Download the software. Windows-version is attached to this post, version for Linux is here. Required drivers will be installed automatically (if not, just google for them).
2. Connect the programmer to your flash chip. If your chip is in DIP-case (i.e. you have desktop motherboard with socketed BIOS chip), just gently plug it out, insert into programmer’s ZIF-socket and press the lever to fix it in position. If your chip is in SOIC-case, you can use the supplied converter board, SOIC test clip, another ZIF-socket or just solder a tiny wires onto chip’s pins. You can also try in-system programming (i.e. programming the chip without desoldering it) but it can easily fail because the programmer needs to provide power for the half of the motherboard that way, and results of such tries are not predictable. Sometimes it works, sometimes it’s not, it’s for you to decide.
3. Connect the programmer to USB port and run the software. Select 25 SPI Flash as Type and press Detect button, your chip should be detected.
4. Press Read and wait for the operation to complete. Press Save and save your chip contents as backup somewhere.
5. Press Open and select the image you want to flash. Press Erase to erase chip contents, it’s very fast on most chips. Press Program and wait for the operation to complete.
6. Press Verify and wait for the operation to complete. If the chip is OK, verification will be successful, if not - check your connections, try to erase the chip first and repeat the whole process.
7. Disconnect the programmer from USB, return the SPI flash chip to it’s original place and try to boot the PC. If your image was OK, the system should work now.
EDIT by Fernando: Insecure eBay link replaced by a secure one
CH341A Programmer.zip (854 KB)
CH341A_FLASH_programm_v1.29.rar (3.5 MB)