Openbiosprog-nand
openbiosprog-nand is a fully Open Hardware and Free Software USB-based programmer / dumper for NAND flash chips.
The schematics and PCB layouts are licensed under the CC-BY-SA 3.0 license and were created using the open-source Kicad EDA suite (GPL, version 2). The firmware is GPL, version 3 or later. The PC software is GPL, version 2 or later.
See openbiosprog-spi for a (finished) programmer hardware for SPI (NOR) flash chips.
See openbiosprog for a (planned, unfinished) programmer hardware for other type of BIOS chips, e.g. LPC, FWH, or parallel (NOR) flash chips.
This projects is work-in-progress and not yet finished!
Contents |
Downloads
The schematics, PCB layouts, and other material is available from gitorious:
$ git clone git://gitorious.org/openbiosprog/openbiosprog-nand.git
Design
This is intended to be a USB-based device which can program, erase, and read/dump NAND flash chips.
- The design is based on the ST STM32 microcontroller (ARM Cortex-M3), which does USB and also the NAND protocol via its FSMC component.
- Alternatively, instead of using the FSMC it's also possible to use bitbanging to talk to the NAND flash chip.
- Specifically, it's planned to use the STM32F103VC (or STM32F103VD or STM32F103VE, which are the same except for more flash/SRAM).
- The board comes with a TSOP-48 socket where the NAND flash chip to be read/written/erased can be inserted.
- The firmware is written using libopencm3 (GPL, version 3 or later).
- The user-space host (PC) tool to control the device is written using libusb-1.0 (LGPL, version 2.1 or later), and is licensed under the GPL, version 2 or later.
- The board uses 2 layers, and all parts are SMD. Resistors and capacitors are 0603.
- The hardware is designed using the open-source Kicad EDA suite (GPL, version 2), and is released under the CC-BY-SA 3.0 license.
Limitations:
- Only chips in TSOP-48 package are supported, as the board has a TSOP-48 socket where you can insert your NAND flash chip.
- This means other packages are not directly supported, and that you have to desolder the NAND flash chip before using it with openbiosprog-nand.
- Only 3.3V NAND flash chips are supported (usually VCC min/max is 2.7V — 3.6V).
- 3.0V NAND flash chips should also work (usually VCC min/max is specified as 2.7V — 3.6V as well for these chips).
- 1.8V NAND chips are NOT supported in the 0.1 hardware revision (usually VCC min/max is 1.7V — 1.9V)!
- Support for chips requiring other VCC voltages might be added in later hardware revisions.
Notes
- A voltage regulator translates the 5V from USB to 3.3V, e.g. the TLV1117.
- 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 socket for the NAND flash chip so it can be easily placed into the device without the need for soldering.
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
STM32:
- STM32F103xC, STM32F103xD, STM32F103xE: High-density performance line ARM-based 32-bit MCU with 256 to 512KB Flash, USB, CAN, 11 timers, 3 ADCs, 13 communication interfaces (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)
- AN2784: Application note: Using the high-density STM32F10xxx FSMC peripheral to drive external memories (PDF)
- Documents and files for family STM32 (ARM Cortex M3) - 32-bit Microcontrollers
Cortex-M3:
- Cortex-M3 Technical Reference Manual, r2p1 (PDF)
- Cortex-M3 Technical Reference Manual r2p0, 2010 (PDF)
- Cortex-M3 Technical Reference Manual r2p0, 2008 (PDF)
- ARM Cortex M3 - Reference Manual r1p1 (PDF)
- Errata: Cortex-M3/Cortex-M3 with ETM (AT420/AT425) (PDF)
Usage
TODO
Bill of materials
TODO
| Qty | Device | Footprint | Value | Refdes | Mouser | CSD | Comments |
|---|---|---|---|---|---|---|---|
| 1 | ST STM32F103VCT6 | LQFP-100 | — | IC? | 10.14€ | ... | Datasheet. |
| 1 | NAND flash socket | TSOP48 | — | IC? | 11.20€ | ... | ... |
| 1 | 3.3V LDO | SOT-223 | 3.3V | U? | 0.528€ | 1.25€ (223-1705) | TLV1117-33 info. TLV1117-33 datasheet. LM1117IMP-3.3 datasheet. |
| 1 | Mini-USB B connector |
custom | — | U? | 1.59€, | 0.44€ (15761) | Female Mini-USB connector, Type B, 10mm x 3,95mm x 9,2mm. Mouser: Molex part no. 0548190572, Drawing. The CSD one has a slightly different footprint, but made the Kicad footprint generic enough to work for both. |
| 1 | Crystal | HC49/US | 12MHz | X1 | 0.338€ | 0.15€ (14-4S12,000MHZ) | SMD part, +/- 30 ppm, 4.8mm x 11.5mm x 4.2mm (W x L x H). Sometimes the footprint/package is called HC49/US, HC49/U, HC49S, or HC49-S4. If in doubt, check the datasheet and make sure the land pattern / footprint matches. Mouser's ABLS-12.000MHZ-B4-T has 18pF load capacitance, CSD part no. 14-4S12,000MHZ has 30pF. Ideally you should use the matching capacitors, but the 27pF ones should be fine in most cases. |
| 1 | LED | 0603 | — | D? | Power LED. Choose any color you like. Play with the value of R? to make the LED more/less brighter. | ||
| 2 | Ceramic capacitor | 0603 | 27pF | C?, C? | 0.07€ (115-06N027) | — |
Note 1: All prices are for 1 piece. If you buy more, it gets a lot cheaper usually.
Note 2: Prices from Mouser do not include German VAT ("Umsatzsteuer"). Mouser offers free shipping for orders above 75€, otherwise it's 20€ shipping. Mouser handles customs fees for you, which means less hassle.
Note 3: CSD prices do include German VAT already. Shipping is 3.59€ usually, you get free shipping on orders above 100€. No customs fees involved if you're in Germany, of course.