I made this post as a addition or supplement to my “Flashing a BIOS chip with an Arduino” post.
While doing some research online I found several articles/posts from people using a Raspberry Pi to flash SPI flash chips. Apparently the Raspberry Pi is very suitable for this kind of thing as it has a SPI interface and is able to run linux. I was eager to try this out for myself so I got out my Pi 3 model B and got to work. For this project I used a Winbond 25X80 salvaged from a motherboard I had lying around.
Preparing the RaspberryPi
Download the latest Rasbian release, I used the Jessie Lite version.
Install the packages needed by flashrom by using the following command:
sudo apt-get install pciutils libpci-dev libusb-1.0 libusb-dev git
Build and install flashrom using the commands below:
git clone https://github.com/flashrom/flashrom.git cd flashrom make && make install
Next, the SPI interface must be enabled by uncommenting “#dtparam=spi=on” in the “/boot/config.txt” file.
After rebooting the spi interfaces are available under “/dev/spidev0.0”.
Connecting the Raspberry to the SPI flash chip
The table below show the connections between the RaspberryPi and the chip.
|RPi pin||SPI flash|
|17||VCC 3.3V and /HOLD and /WP|
Al that is left is flashing the bios.
sudo flashrom -p linux_spi:dev=/dev/spidev0.0 -w YOURBIOSHERE
flashrom 0.9.9-35-gd152fb9 on Linux 4.9.35-v7+ (armv7l) flashrom is free software, get the source code at https://flashrom.org Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns). Found Winbond flash chip "W25X80" (1024 kB, SPI) on linux_spi. Reading old flash chip contents... done. Erasing and writing flash chip... Erase/write done. Verifying flash... VERIFIED.