diff --git a/doc/supported_hw/supported_prog/ARM-USB-TINY_pinout.png b/doc/supported_hw/supported_prog/ARM-USB-TINY_pinout.png new file mode 100644 index 000000000..aa95a59b8 Binary files /dev/null and b/doc/supported_hw/supported_prog/ARM-USB-TINY_pinout.png differ diff --git a/doc/supported_hw/supported_prog/Dlp_usb1232h_bottom.jpg b/doc/supported_hw/supported_prog/Dlp_usb1232h_bottom.jpg new file mode 100644 index 000000000..5ebf9b72c Binary files /dev/null and b/doc/supported_hw/supported_prog/Dlp_usb1232h_bottom.jpg differ diff --git a/doc/supported_hw/supported_prog/Dlp_usb1232h_side.jpg b/doc/supported_hw/supported_prog/Dlp_usb1232h_side.jpg new file mode 100644 index 000000000..0a17f6e03 Binary files /dev/null and b/doc/supported_hw/supported_prog/Dlp_usb1232h_side.jpg differ diff --git a/doc/supported_hw/supported_prog/Dlp_usb1232h_spi_programmer.jpg b/doc/supported_hw/supported_prog/Dlp_usb1232h_spi_programmer.jpg new file mode 100644 index 000000000..94eecb1ff Binary files /dev/null and b/doc/supported_hw/supported_prog/Dlp_usb1232h_spi_programmer.jpg differ diff --git a/doc/supported_hw/supported_prog/Dlp_usb1232h_spi_programmer_breadboard_1.jpg b/doc/supported_hw/supported_prog/Dlp_usb1232h_spi_programmer_breadboard_1.jpg new file mode 100644 index 000000000..61a7a18f5 Binary files /dev/null and b/doc/supported_hw/supported_prog/Dlp_usb1232h_spi_programmer_breadboard_1.jpg differ diff --git a/doc/supported_hw/supported_prog/Dlp_usb1232h_spi_programmer_breadboard_2.jpg b/doc/supported_hw/supported_prog/Dlp_usb1232h_spi_programmer_breadboard_2.jpg new file mode 100644 index 000000000..92e143a65 Binary files /dev/null and b/doc/supported_hw/supported_prog/Dlp_usb1232h_spi_programmer_breadboard_2.jpg differ diff --git a/doc/supported_hw/supported_prog/Ft2232spi_programer.jpg b/doc/supported_hw/supported_prog/Ft2232spi_programer.jpg new file mode 100644 index 000000000..84f618c80 Binary files /dev/null and b/doc/supported_hw/supported_prog/Ft2232spi_programer.jpg differ diff --git a/doc/supported_hw/supported_prog/Openmoko_0001.jpeg b/doc/supported_hw/supported_prog/Openmoko_0001.jpeg new file mode 100644 index 000000000..7ea796856 Binary files /dev/null and b/doc/supported_hw/supported_prog/Openmoko_0001.jpeg differ diff --git a/doc/supported_hw/supported_prog/Openmoko_0002.jpeg b/doc/supported_hw/supported_prog/Openmoko_0002.jpeg new file mode 100644 index 000000000..be60d565c Binary files /dev/null and b/doc/supported_hw/supported_prog/Openmoko_0002.jpeg differ diff --git a/doc/supported_hw/supported_prog/Openmoko_0003.jpeg b/doc/supported_hw/supported_prog/Openmoko_0003.jpeg new file mode 100644 index 000000000..74109de52 Binary files /dev/null and b/doc/supported_hw/supported_prog/Openmoko_0003.jpeg differ diff --git a/doc/supported_hw/supported_prog/Via_epia_m700_bios.jpg b/doc/supported_hw/supported_prog/Via_epia_m700_bios.jpg new file mode 100644 index 000000000..6103838ea Binary files /dev/null and b/doc/supported_hw/supported_prog/Via_epia_m700_bios.jpg differ diff --git a/doc/supported_hw/supported_prog/Via_epia_m700_programer.jpg b/doc/supported_hw/supported_prog/Via_epia_m700_programer.jpg new file mode 100644 index 000000000..bc69bcb90 Binary files /dev/null and b/doc/supported_hw/supported_prog/Via_epia_m700_programer.jpg differ diff --git a/doc/supported_hw/supported_prog/ft2232_spi.rst b/doc/supported_hw/supported_prog/ft2232_spi.rst new file mode 100644 index 000000000..8f87117f9 --- /dev/null +++ b/doc/supported_hw/supported_prog/ft2232_spi.rst @@ -0,0 +1,308 @@ +========== +FT2232 SPI +========== + +flashrom supports the ``-p ft2232_spi`` (or ``-p ft2232spi`` in very old flashrom revisions) option +which allows you to use an FTDI FT2232/FT4232H/FT232H based device as external SPI programmer. + +This is made possible by using `libftdi `_. +flashrom autodetects the presence of libftdi headers and enables FT2232/FT4232H/FT232H support if they are available. + +Currently known FT2232/FT4232H/FT232H based devices which can be used as SPI programmer +together with flashrom are described below. + +DLP Design DLP-USB1232H +======================= + +The `DLP Design DLP-USB1232H `_ +(`datasheet DLP-USB1232H `_) can be used with flashrom +for programming SPI chips. + +Where to buy: `Digikey `_, +`Mouser `_, +`Saelig `_ + +Setup +----- + +DLP-USB1232H based SPI programmer schematics + +.. image:: Dlp_usb1232h_spi_programmer.jpg + +In order to use the DLP-USB1232H device as SPI programmer you have to setup a small circuit +(e.g. on a breadboard). See the schematics for details (you can also +`download the schematics as PDF `_ +for easier printing). + +What you will need +------------------ + +=============== ======================= ============= ====== =============================================== +Quantity Device Footprint Value Comments +=============== ======================= ============= ====== =============================================== +1 DLP Design DLP-USB1232H — — ... +1 Breadboard — — ... +many Jumper wires — — ... +1 DIP-8 SPI chip — — This is the chip you want to program/read/erase +1 3.3V voltage regulator TO-220 3.3V E.g. **LD33V** or **LD1117xx** +1 Electrolytic capacitor single ended 100nF ... +1 Electrolytic capacitor single ended 10uF ... +=============== ======================= ============= ====== =============================================== + +Instructions and hints +---------------------- + +* You must connect/shorten pins 8 and 9, which configures the device to be powered by USB. + Without this connection it will not be powered, and thus not be detected by your OS + (e.g. it will not appear in the ``lsusb`` output). + +* You need a 3.3V voltage regulator to convert the 5V from USB to 3.3V, + so you can power the 3.3V SPI BIOS chip. + + * You can probably use pretty much any 3.3V voltage regulator, e.g. **LD33V** or **LD1117xx**. + For usage on a breadboard the TO-220 packaging is probably most useful. + * You have to connect two capacitors (e.g. 100nF and 10uF as per datasheets, + but using two 10uF capacitors, or even two 47uF capacitors also works in practice) as shown in the schematics, + otherwise the voltage regulator will not work correctly and reliably. + +* Connect the following pins from the DLP-USB1232H to the SPI BIOS chip: + + * **18 (SK)** to **SCLK** + * **16 (DO)** to **SI** + * **2 (DI)** to **SO** + * **5 (CS)** to **CS#** + * The **WP# and HOLD#** pins should be tied to **VCC**! If you leave them unconnected + you'll likely experience strange issues. + * All **GND** pins should be connected together (**pins 1i and 10** on the DLP-USB1232H, + **pin 8** on the SPI chip, **pin 1** on the voltage regulator). + +You have to invoke flashrom with the following parameters:: + + $ flashrom -p ft2232_spi:type=2232H,port=A + +Photos +------ + +Module, top + +.. image:: Dlp_usb1232h_side.jpg + + +Module, bottom + +.. image:: Dlp_usb1232h_bottom.jpg + + +SPI header on a mainboard + +.. image:: Via_epia_m700_bios.jpg + + +Module on a breadboard, connected to the mainboard's SPI header + +.. image:: Via_epia_m700_programer.jpg + + +Breadboard setup + +.. image:: Ft2232spi_programer.jpg + + +Another breadboard setup + +.. image:: Dlp_usb1232h_spi_programmer_breadboard_1.jpg + + +Module and parts + +.. image:: Dlp_usb1232h_spi_programmer_breadboard_2.jpg + +FTDI FT2232H Mini-Module +======================== + +The `FTDI FT2232H Mini-Module Evaluation Kit `_ +(`the datasheet `_) +can be used with flashrom for programming SPI chips. + +Pinout +------ + +=============== ======= ======= =============== =========================== +Module Pin FTDI MPSSE SPI SPI Flash (vendor specific) +=============== ======= ======= =============== =========================== +CN2-7 AD0 TCK/SK (S)CLK (S)CLK +CN2-10 AD1 TDI/DO MOSI SI / DI +CN2-9 AD2 TDO/DI MISO SO / DO +CN2-12 AD3 TMS/CS /CS / /SS /CS +CN3-26 BD0 TCK/SK (S)CLK (S)CLK +CN3-25 BD1 TDI/DO MOSI SI / DI +CN3-24 BD2 TDO/DI MISO SO / DO +CN3-23 BD3 TMS/CS /CS / /SS /CS +=============== ======= ======= =============== =========================== + +FTDI FT4232H Mini-Module +======================== + +The `FTDI FT4232H Mini-Module Evaluation Kit `_ +(`datasheet `_) +can be used with flashrom for programming SPI chips. + +Olimex ARM-USB-TINY/-H and ARM-USB-OCD/-H +========================================= + +The `Olimex `_ `ARM-USB-TINY `_ +(VID:PID 15BA:0004) and `ARM-USB-OCD `_ (15BA:0003) +can be used with flashrom for programming SPI chips. +The `ARM-USB-TINY-H `_ (15BA:002A) +and `ARM-USB-OCD-H `_ (15BA:002B) should also work, +though the tested status is unconfirmed. + +The following setup can then be used to flash a BIOS chip through SPI. + +Pinout: + + .. image:: ARM-USB-TINY_pinout.png + +=============== ========================= +Pin (JTAG Name) SPI/Voltage Source +=============== ========================= +1 (VREF) VCC (from Voltage Source) +2 (VTARGET) VCC (to SPI target) +4 (GND) GND (from Voltage Source) +5 (TDI) SI +6 (GND) GND (to SPI target) +7 (TMS) CE# +9 (TCK) SCK +13 (TDO) SO +=============== ========================= + +On the ARM-USB-TINY, VREF, and VTARGET are internally connected, and all the GND lines +(even numbered pins, from 4 to 20) share the same line as well, so they can be used +to split VCC/GND between the voltage source and the target. + +The voltage source should provide 3.0V to 3.3V DC but doesn't have to come from USB: +it can be as simple as two AA or AAA batteries placed in serial (2 x 1.5V). + +Invoking flashrom +----------------- + +You first need to add the ``-p ft2232_spi`` option, and then specify one of ``arm-usb-tiny``, +``arm-usb-tiny-h``, ``arm-usb-ocd`` or ``arm-usb-ocd-f`` for the type. +For instance, to use an ARM-USB-TINY, you would use:: + + $ flashrom -p ft2232_spi:type=arm-usb-tiny + +Openmoko +======== + +The openmoko debug board (which can also do serial+jtag for the openmoko phones, or for other phones) +has `its shematics available here `_. + +Informations +------------ + +The openmoko debug board can act as an SPI programmer bitbanging the FTDI +(no need of an openmoko phone), you just need: + +* a breadboard +* some wires +* The openmoko debug board(v2 and after,but only tested with v3) + +The voltage is provided by the board itself. The connector to use is the JTAG one +(very similar to what's documented in the previous section(Olimex ARM-USB-TINY/-H and ARM-USB-OCD/-H ) + +Building +-------- + +**WARNING: This was tested with 3.3v chips only.** + +Here's the pinout of the JTAG connector of the openmoko debug board +(copied from ARM-USB-tiny because it's the same pinout): + + .. image:: ARM-USB-TINY_pinout.png + +=============== =============================== ======================== +Pin (JTAG Name) SPI/Voltage Source BIOS Chip connector name +=============== =============================== ======================== +1 (VREF) VCC (from Voltage Source) VCC (3.3v only) +2 (VTARGET) VCC (to SPI target) Not connected +4 (GND) GND (from Voltage Source) Ground +5 (TDI) SI DIO (Data Input) +6 (GND) GND (to SPI target) Not connected +7 (TMS) CE# CS (Chip select) +9 (TCK) SCK CLK (Clock) +13 (TDO) SO DO (Data output) +=============== =============================== ======================== + +* Also connect the BIOS chip's write protect(WP) to VCC + +* Also connect the BIOS chips's HOLD to VCC + +Pictures +-------- + +.. image:: Openmoko_0001.jpeg + +.. image:: Openmoko_0002.jpeg + +.. image:: Openmoko_0003.jpeg + +Performances +------------ + +:: + + $ time ./flashrom/flashrom -p ft2232_spi:type=openmoko -r coreboot.rom + flashrom v0.9.5.2-r1545 on Linux 3.0.0-20-generic (x86_64) + flashrom is free software, get the source code at http://www.flashrom.org + + Calibrating delay loop... OK. + Found Winbond flash chip "W25X80" (1024 kB, SPI) on ft2232_spi. + Reading flash... done. + + real 0m19.459s + user 0m1.244s + sys 0m0.000s + +:: + + $ time ./flashrom/flashrom -p ft2232_spi:type=openmoko -w coreboot.rom + flashrom v0.9.5.2-r1545 on Linux 3.0.0-20-generic (x86_64) + flashrom is free software, get the source code at http://www.flashrom.org + + Calibrating delay loop... OK. + Found Winbond flash chip "W25X80" (1024 kB, SPI) on ft2232_spi. + Reading old flash chip contents... done. + Erasing and writing flash chip... Erase/write done. + Verifying flash... VERIFIED. + + real 1m1.366s + user 0m7.692s + sys 0m0.044s + +Advantages/disadvantages +------------------------ + +* fast(see above) + +* easily available (many people in the free software world have openmoko debug board + and they don't know what to do with them), can still be bought + +* stable + +* SPI only + +Generic Pinout +============== + +There are many more simple modules that feature the FT*232H. +Actual pinouts depend on each module, the FTDI names map to SPI as follows: + +=============== ======= =============== =========================== +Pin Name MPSSE SPI SPI Flash (vendor specific) +=============== ======= =============== =========================== +DBUS0 TCK/SK (S)CLK (S)CLK +DBUS1 TDI/DO MOSI SI / DI +DBUS2 TDO/DI MISO SO / DO +DBUS3 TMS/CS /CS / /SS /CS +=============== ======= =============== =========================== diff --git a/doc/supported_hw/supported_prog/index.rst b/doc/supported_hw/supported_prog/index.rst index ec96b9fd2..7912f348f 100644 --- a/doc/supported_hw/supported_prog/index.rst +++ b/doc/supported_hw/supported_prog/index.rst @@ -17,4 +17,5 @@ Patches to add/update documentation, or migrate docs from `old wiki website