Is an amazing piece of software and a life-saver when you need it! If you’ve tried to update your before using manufacturer supplied software and something went wrong, then you know how valuable Flashrom can be. I’ve written about Flashrom and the BusPirate in a previous post. However, I just found out how easy it is to use Flashrom and an Arduino at 3.3V to program (read, write and erase) various ‘flash’ chips. All Flashrom needs is a programmer to interface with. The Arduino (or ) can very easily and economically be made into a Flashrom programmer. Basically a program is loaded into the Arduino to let Flashrom program through it.
![Serial Serial](http://i.imgur.com/yegutAh.png)
Arduino Duemilanove Pin Configuration. In the previous section, you have got a brief overview of the Arduino module pinout. ICSP (In-Circuit Serial Programming) header is added that help to connect the board with computer and upload a sketch in case USB port is not available. 5V, 3.3V, AREF, available on the board. The Vin is the. Tested with the Arduino Uno, Mega, and Duemilanove, the Board of Education Shield is designed to be physically compat Arduino Shield w/ Breadboard, Servo Ports, 3.3V & Store » Arduino » Arduino Shields » 35000.
I am using which Flashrom sees as a ‘serprog’ programmer. Serprog uses the chip, the serial port and interfaces to do its work. More information about Flashrom using the Serprog ‘programmer’ can be found. You can get the source code for frser-duino.
I am using Fedora (24 as of the date of this post). Here are the commands I used to install the prerequisites and the frser-duino code into my Arduino (a UNO). Avrdude - c arduino - p m328p - P / dev / ttyUSB0 - b 115200 - U flash: w: frser - duino.hex Notice that the documented commands are not what I used as they are for a ‘real’ Arduino UNO. Since I am using an external FTDI chip, it needs to specify 115200 BAUD to program the Arduino.
However, once programmed, the larger BAUD/buffer rate of 2000000 can be used to flash with. Once the code is loaded via into the Arduino, you are ready to use it with Flashrom.
One of the ‘problems’ in flashing BIOS chips is that they are usually 3.3V whereas the Arduino is usually 5V. You could use level translation circuitry to reduce the voltage but it turns out there is a much simpler way. The DIY Arduino can be run at 3.3V using an FTDI USB to Serial converter. A DIY version of an Arduino UNO can be easily made on a breadboard,. Here is an example of how an 8-pin Winbond BIOS chip is wired to the Arduino (download the Fritzing source ): Here is a picture of my newest DIY Arduino. It is a bit different than other Arduinos I made in the past and wrote about. You can see the 6 pin ICSP header on the side (to attach the FTDI USB to serial convertor).
Two 14 pin female headers are soldered to the base for connectivity to any pin. There is a 4 pin header for power (left side) and a four pin header for ground (right side). This is basically a bare minimum circuit to run the ATMega 328P and function as an Arduino UNO. It runs at either 5V or 3.3V depending on the jumper of the FTDI USB to serial convertor.
A 6 pin female-female cable is used to connect the FTDI converter to the 6 pin male header on the Arduino. The six pins are GND,CTS,PWR,TX,RX,DTR. The FTDI USB to Serial Converter I use has a jumper to switch between 3.3V and 5V.
I got mine from. Also sells one. I have the jumper on 5V when I load the Arduino with the frser-duino code. Then I switch the jumper to 3.3V when I use Flashrom to program chips that need 3.3V.
Here is a picture of everything wired together. Flashrom and an Arduino at 3.3V If the BIOS chip is not soldered on, it can be extracted and placed on a breadboard to flash. However, if the BIOS chip is not socketed (i.e.
It is soldered on), you may need an Test Clip or IC Test Hooks. Sometimes it is hard to use the SOIC test clip due to other circuitry in the way so I prefer the IC Test Hooks. They have a tiny ‘claw’ which can be clamped onto the leg of the IC. Here is an example command to run Flashrom and save the contents of a BIOS chip to a file.