Hi Paul,
I'm one of the developers of flashrom http://www.flashrom.org/ which aims to be a generic utility for programming all kinds of flash EEPROMs on your mainboard, on storage/network/graphics cards, and in external programmers. There is some interest in integrating parts of your firebrand code to support a Willem backend/driver for flashrom. Would that be OK with you? flashrom is GPLv2.
On 07.03.2010 15:18, Keith Hui wrote:
Looking at this on the GSoC page:
flashrom support for Willem hardware
Haha, I'd so love to see this.
For a base to work off of, look at firebrand:
Cool. I have added Paul to CC of this mail.
You may even be able to google for an older version of the original control program with source.
Also look at the sivava "PCB45" variant as well. This site has info (and schematics with differences highlighted) on how to convert a PCB3B (for which schematics is/was available) to a PCB45: http://www.msxpro.com/py2bbs/willem_pcb45en.php
There are four versions that we can easily get schematics for - original willem, PCB3B, a simplified, flash-only "EzoFlash", and the PCB45 conversion above. There are newer variants but they are proprietary. I'd love to see support for these four implemented.
From what I read it may be a product of the shady parts of Internet. At least it is sort of open and easily accessible. I first built EzoFlash on a breadboard to flash a firmware for my infamous Apex 600A DVD player, and then built a PCB3B on a crudely made PCB, that I am using right now to flash 440BX RAM initialization code for boot testing.
Nice.
Basically, flashrom already has chip drivers for 29* series Parallel flash, 49* series LPC/FWH flash, and 25* series SPI flash (actual model numbers may differ, but pretty much every flash chip present on mainboards out there is supported). Support for other chip types (I2C...) is possible (infrastructure is there) but not on our immediate TODO list. flashrom has half a dozen backend programmer drivers, and these backend drivers can be "dumb", i.e. the only thing they have to do is pass address/data pairs (Parallel/LPC/FWH) or command streams (SPI) to the programmer hardware. Adding support for a new programmer can be as easy as writing 20 lines of code.
Regards, Carl-Daniel