Openbiosprog
openbiosprog is a fully Open Hardware and Free Software USB-based programmer for BIOS chips.
The first version will support Low Pin Count (LPC), Firmware Hub (FWH) and SPI chips, later versions might add support for parallel flash chips.
The microcontroller firmware is GPL (version 3 or later), the user-space source code is part of flashrom (GPL, version 2), the schematics and PCB layouts are licensed under the CC-BY-SA 3.0 license.
Download
The schematics, PCB layouts, and the libopenstm32-based microcontroller firmware are available from gitorious:
$ git clone git://gitorious.org/openbiosprog/openbiosprog.git
The flashrom source code will be available from:
$ svn co svn://flashrom.org/flashrom/trunk flashrom
Design
- The programmer shall support LPC and FWH chips in PLCC32 packages and SPI chips in DIP8 packages.
- LPC/FWH: Support for A/A Mux mode or PP mode is not planned.
- The design is based on the ST STM32 microcontroller (ARM), which does USB and LPC/FWH via bitbanging.
- Firmware is written using libopenstm32.
- The board uses 1 or 2 layers (probably 2), and all parts are SMD. Resistors and capacitors are 0603.
- The schematics and layout files are done using gEDA/PCB.
Notes
- A software-controllable switch for powering or removing power from the chip is planned.
- A voltage regulator translates the 5V from USB to 3.3V, e.g. the LE33 (SO8) or a 3-pin one.
- A JTAG connector for flashing the SMT32 is planned (but also DFU support probably).
- Maybe serial will be available via pads (or even a connector), though this is optional.
- There will be a PLCC32 SMD socket and a DIP8 (SMD or DIP) socket for LPC/FWH and SPI chips.
LPC/FWH pins:
- WP# and TBL# are tied to VCC (disabled), we don't want to prevent writes.
- ID0-ID3 are tied to GND, we don't support multiple FWH chips, so no need to select one of them.
- GPI0-GPI4 are tied to GND, we have no use for them.
- RST# and INIT# are tied together as they serve the same purpose.
- NC and RES (reserved) pins are left unconnected.
- IC is tied to GND, this pin selects A/A Mux mode, which we don't support.
SPI pins:
- WP# is tied to VCC, we don't want to write-protect the SPI chip.
- HOLD# is tied to VCC, we don't need it.
STM32 pins:
- Most of this setup is based on Application note AN2586: STM32F10xxx hardware development: getting started.
- BOOT0 is tied to GND (so that we boot from flash). BOOT1 is not needed in this case, it can be used as GPIO.
Datasheets
- STM32F103x8/B datasheet (PDF)
- RM0008: Reference Manual: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced ARM-based 32-bit MCUs (PDF)
- Application note AN2586: STM32F10xxx hardware development: getting started (PDF)
- ARM Cortex M3 - Reference Manual r1p1 (PDF)
- Documents and files for family STM32 (ARM Cortex M3) - 32-bit Microcontrollers
Parts list
Note: The list is unfinished!
Quantity | Value | Device | Manufacturer | Digikey PN | Digikey price/EUR |
1 | — | STM32 | ST | TODO | TODO |
1 | — | PLCC32 SMD socket | TODO | TODO | TODO |
1 | — | DIP8 SMD socket | TODO | TODO | TODO |
1 | — | 3.3V voltage regulator | TODO | TODO | TODO |
1 | — | JTAG connector | TODO | TODO | TODO |
TODO | — | Capacitor | TODO | TODO | TODO |
TODO | — | Resistor | TODO | TODO | TODO |