Recover from failed BIOS flash using Raspberry PI
Example MSI B350 TOMAHAWK Bios : winbond w25q128fw

An update regarding the JSPI1 header on MSI motherboards is available at the end of this guide.
What is a Raspberry PI?
http://www.raspberrypi.orgUsing a Raspberry PI to reprogram a SPI BIOS Chip, this is a relatively simple and inexpensive way to recover from almost any failed BIOS flash, including bad ME FW update.
The Rasperry PI costs about 25$, you also need a SDHC card for OS minimum 2GB.
Before starting, make sure that:
The chip is not electrically damaged, is 3.3V, (Check the datasheet for your chip)

The chip is supported by the free software "Flashrom" (>LINK<). It has worked with all the chips i've tried so far. Note: It's not recommended to use another SPI chip of different vendor or model. Same model in different case will work fine. (Failed ME Update) The chipset on the motherboard is new enough to have the ME firmware in the BIOS, some older chipsets use a seperate chip and that will be more complicated.
https://www.msi.com/Motherboard/support/B350-TOMAHAWK.htmlYou will need: A Raspberry PI

this guide is made with a Model B, Works fine with Raspberry PI 2 also. A soldering iron is recomended.
On your Raspberry, download Flashrom
http://www.flashrom.org i use the latest source and compile it for best chip support, to compile, open a terminal run:
$ modprobe spi_bcm2835
$ modprobe spidev
$ svn co
https://code.coreboot.org/svn/flashrom/trunk flashrom
$ cd flashrom
Copy 2 file ( flashchips.c, flashchips.h) to your Raspberry, i usually use filezilla /flashrom
https://www.mrme.net/download/flashchips.chttps://www.mrme.net/download/flashchips.h$ make
$ sudo ./flashrom -p linux_spi:dev=/dev/spidev0.0
Copy E7A34AMS.160 to your Raspberry, i usually just put it in /tmp
On Linux what you type in a teminal is case sensitive.
$ md5sum /tmp/E7A34AMS.160
To erase the chip (not needed on most chips) run:
$ sudo ./flashrom -E -p linux_spi:dev=/dev/spidev0.0
$ sudo ./flashrom -p linux_spi:dev=/dev/spidev0.0 -w /tmp/E7A34AMS.160 -V
if it still doesn't work, check all the connections, make sure it's supported by "flashrom".
When it's finished flashing and verifying: flashed.jpg18782 hits
Close the terminal, shutdown the Raspberry and remove the chip carefully from the DIL socket, put it back in the motherboard, and power up.