PDA

View Full Version : Reading/Writing from/to motherboard EEPROM chip... is it possible?



RicThot
01-30-2013, 01:00 PM
Hi guys,

I've seen a number of posts on the web on how to read/write a PC motherboard BIOS chip using an Arduino board - I was wondering if the same could be done using the Teensy?

I flashed my computer bios the other day and it failed - computer will not post anymore.

I'd like to build something in order to a)read what's currently on the bios chip and figure out what went wrong, then b)write the correct bios rom back to the chip.

I have a Teensy++ 2.0 and a Teensy, a breadboard, a bunch of wires etc...

The bios chip is a Winbond W25Q16VAIG.


This chip has a max input voltage of 3.6v though, so I guess I can't use the USB power - unless maybe if I add a voltage regulator to my circuit?
Or, I can disable USB power and power the board using my bench power supply, set to 3.3v.

Then comes the read/write part of the chip... not sure where to start with this... anyone could give me any pointers?
I found flashrom while searching on the subject which looks like it could take care of the data i/o, there are even projects example using UNOs on the page, just not sure if it would work the same with a Teensy...

What do you guys think?

ZTiK.nl
01-30-2013, 02:27 PM
Hey RicThot,

I happened to read something similar a day or two ago, except this was focusing on Teensy 2.0++ and a library called PROMdate (https://bitbucket.org/hudson/prom/overview), you might find something useful there.
(This is for 5v chips as far as I can tell)

image of the whole thing (http://www.flickr.com/photos/osr/7730384248/)

Hope you do get it fixed though!

PaulStoffregen
01-30-2013, 04:00 PM
A quick google search turned up this datasheet.

http://pdf1.alldatasheet.com/datasheet-pdf/view/231257/WINBOND/W25Q16.html

I'd imagine you'll need to desolder the chip from the motherboard to gain access. It's a 3.3 volt part, so use Teensy 3.0 or a Teensy 2.0 with the 3.3 volt modification.

You'll probably need to write quite a bit of code to access the chip, but at least you can use the SPI library. It looks like the chip has a write protect pin, but it's not an absolute prevention of changing the contents. Still, I'd be sure to connect the WP pin low.

You'll need to read that datasheet (I only looked at it briefly) and use the info to write code to send it read commands and get the data out.

RicThot
01-30-2013, 04:10 PM
A quick google search turned up this datasheet.

http://pdf1.alldatasheet.com/datasheet-pdf/view/231257/WINBOND/W25Q16.html

I'd imagine you'll need to desolder the chip from the motherboard to gain access. It's a 3.3 volt part, so use Teensy 3.0 or a Teensy 2.0 with the 3.3 volt modification.

You'll probably need to write quite a bit of code to access the chip, but at least you can use the SPI library. It looks like the chip has a write protect pin, but it's not an absolute prevention of changing the contents. Still, I'd be sure to connect the WP pin low.

You'll need to read that datasheet (I only looked at it briefly) and use the info to write code to send it read commands and get the data out.

Thanks guys,

Paul, I already had the datasheet, thanks, and the good thing with my chip package is... it's not soldered, it fits in a dip-8 socket - good thing!

regarding the 3.3v mod though - if I don't want to mod the Teensy itself, what are my options? I guess I can mod a usb cable, cutting the red wire, and power the teensy with my bench PS set to 3.3v? Or use a small battery with a voltage regulator between the power and the Teensy...

I'm also confused with some reading I did on the site, regarding external power source. It says between 3.0 and 3.4v, I should use only 8mhz and won't have access to USB - not sure how I'll communicate with the teensy in this case? I guess I'm not undeerstanding this the right way...

I have a good programming background but I'm a bit new to all this electronic circuitery jargon - trying to find my way around!

Cheers and Paul, by the way, thanks for the Teensy, awesome little piece of hardware :)

RicThot
02-08-2013, 07:48 PM
After much reading and studying, I got it working fine :)

I got confused about voltage when I first got the Teensy board but careful reading and googling took care of that.

The code was actually the easy part to write, pretty straignforward using the SPI Arduino library.
The trick was to use a buffer/level chip between the board and the chip to bring down voltage to 3.3v from MOSi/MISO/CS/CLK lines... I learned this the hardway, frying 3 chips before I realized something was wrong... I thought having 3.3v to my chip vcc was all that was required... I totally overlooked that tx pins were outputing 5v...

Cheers!

UnaClocker
02-10-2013, 04:51 PM
Great place to use a Teensy 3.0 with it's native 3.3v.. I too got one of these nice little SPI EEPROM chips in a DIP-8 package off an old motherboard. Might use it for some kind of project in the future, not so much to restore this old board.