FreeCalypso > hg > freecalypso-hwlab
annotate doc/FTDI-EEPROM-tools @ 76:4e13c90c1405
eeproms/dumps/FT232R-notes: update for current understanding
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Thu, 17 Sep 2020 00:42:17 +0000 | 
| parents | 0514e3520be3 | 
| children | df4bf4e06221 | 
| rev | line source | 
|---|---|
| 45 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 Mother Mychaela has developed a set of Linux command line tools for manipulating | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 configuration EEPROMs that are attached to FT2232x devices and accessed in-band | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 via USB. This document describes these tools. | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 Supported FTDI chips and EEPROMs | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 ================================ | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 The present tools work with 93C46, 93C56 and 93C66 EEPROMs attached behind | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 FT2232x dual-channel UART/FIFO/MPSSE/etc chips, both FT2232C/D and FT2232H. | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 We can read these EEPROMs for examination or backup, and we can program them | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 with new bits, either restoring a previously saved backup or creating a new | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 from-scratch configuration. These EEPROM configurations (which we can save, | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 restore or create from scratch) set the USB VID:PID and the textual strings | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 naming the manufacturer, the product model and an optional serial number, | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 select whether each FT2232x channel will come up in the default UART mode or | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 one of the other EEPROM-configurable modes (245 FIFO, CPU-style FIFO or fast | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 opto-isolated serial), and allow a few other obscure chip settings to be | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 tweaked. | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 Some work has also been done toward the goal of being able to program the | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 internal EEPROM in FT232R chips (a very popular single-channel USB to UART | 
| 74 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 22 converter needing no external components), but this work should be considered | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 23 experimental: the tools appear to work on an UB232R module from Digi-Key | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 24 (presumably containing a genuine FT232RQ chip) and on a no-name FT232RL adapter | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 25 where the chip is uncertain, but because we have no real production use case | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 26 yet, we are not ready to truly vouch for FT232R support. | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 27 | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 28 More generally: | 
| 45 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 | 
| 74 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 30 * our fteeprom-read tool should be able to read out the EEPROM content from | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 31 just about any FTDI chip; | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 32 | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 33 * our fteeprom-prog tool should be able to program a user-supplied set of bits | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 34 into any FTDI+EEPROM combo where the EEPROM is a separate chip, or into FT232R | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 35 internal EEPROM - but it most likely won't work for newer FT-X chips; | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 36 | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 37 * if the goal is to generate a new EEPROM config from scratch, as opposed to | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 38 restoring a saved backup, we currently have generators only for FT2232C/D, | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 39 for FT2232H and for FT232R, with the last one considered experimental and not | 
| 
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
 Mychaela Falconia <falcon@freecalypso.org> parents: 
51diff
changeset | 40 proven. | 
| 45 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 libftdi dependency | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 ================== | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 We use libftdi (which is in turn layered on libusb) to issue the special USB | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 control pipe commands to FTDI chips which are needed to read and write their | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 EEPROMs. We use old-style libftdi-0.x (-lftdi on the link line) as opposed to | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 libftdi1 (-lftdi1) because the new versions took away the ability to write to | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 the EEPROM directly with ftdi_write_eeprom_location() calls, forcing users to | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 go through libftdi1's own EEPROM smarts, which we don't want to do - our tools | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 are all about more direct user empowerment at the lowest level. | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 Selecting the device to operate on | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 ================================== | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 Our fteeprom-read, fteeprom-prog and fteeprom-erase tools take a device selector | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 argument, selecting the device to operate on. This required argument is the | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 string to be passed to the ftdi_usb_open_string() function in libftdi, allowing | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 the device to be operated on to be selected in one of several ways. Copying | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 from libftdi documentation, the available formats are: | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 d:<devicenode> - path of bus and device-node (e.g. "003/001") within usb device | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 tree (usually at /proc/bus/usb/) | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 i:<vendor>:<product> - first device with given vendor and product id, ids can | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 be decimal, octal (preceded by "0") or hex (preceded by "0x") | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 i:<vendor>:<product>:<index> - as above with index being the number of the | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 device (starting with 0) if there are more than one | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 s:<vendor>:<product>:<serial> - first device with given vendor id, product id | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 72 and serial string | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 74 If you have only one FTDI device connected to your PC or laptop at the time of | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 75 your EEPROM manipulation session (generally a good idea to avoid hitting the | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 76 wrong device by mistake) and if that FTDI device has some sensible starting | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 77 USB VID:PID (either from the previous EEPROM config or the chip's sans-EEPROM | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 default) that doesn't clash with anything else, then the i: form will probably | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 be the most convenient, e.g.: | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 80 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 81 i:0x0403:0x6001 for single-channel FT232x devices running with the default ID | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 82 i:0x0403:0x6010 for dual-channel FT2232x devices running with the default ID | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 83 i:0x0403:0xPPPP for custom PIDs assigned out of FTDI's VID range | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 84 i:0xVVVV:0xPPPP for totally custom USB IDs | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 85 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 86 Or if the current device config is totally hosed (the EEPROM has a passing | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 87 checksum, but sets some completely bogus USB ID), then the d: form will | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 88 probably be required for recovery. | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 89 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 90 Reading the EEPROM | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 91 ================== | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 92 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 93 The basic EEPROM read command is as follows: | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 94 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 95 fteeprom-read <device-selector> | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 96 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 97 See the previous section for the device selector argument. In this default | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 98 form the tool will read the first 64 EEPROM words, which is appropriate for | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 99 93C46 external EEPROMs or for the internal 1024-bit EEPROM in the FT232R chip. | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 100 However, if you are working with an FT2232x board with an external EEPROM and | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 101 that EEPROM is of a larger variety (93C56 or 93C66), this basic form with give | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 102 you an incomplete (truncated) read, and you will need one of the following | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 103 extended forms to read the complete EEPROM: | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 104 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 105 fteeprom-read -b <device-selector> -- read 128 EEPROM words (93C56) | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 106 fteeprom-read -B <device-selector> -- read 256 EEPROM words (93C66) | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 107 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 108 (If you use one of the extended forms on a smaller EEPROM, you will get 2 or 4 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 109 copies of the same bits.) | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 110 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 111 The output of fteeprom-read is in the same format as the input to fteeprom-prog, | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 112 thus you can redirect the output to a file and get a restorable backup copy of | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 113 your EEPROM. | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 114 | 
| 49 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 115 It also needs to be noted that if the FTDI device has the kernel's ftdi_sio | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 116 driver attached to it (ttyUSB device present) when you run fteeprom-read (same | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 117 for fteeprom-prog and fteeprom-erase), the act of running any of our EEPROM | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 118 tools will cause it to unbind, i.e., the ttyUSB device will disappear. If the | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 119 device being operated on is a dual-channel FT2232x, then only the ttyUSB device | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 120 corresponding to Channel A will disappear, while the Channel B ttyUSB device | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 121 will stay. | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 122 | 
| 45 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 123 Programming the EEPROM | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 124 ====================== | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 125 | 
| 49 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 126 In terms of the primitives provided over USB, writing to EEPROMs sitting behind | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 127 FTDI chips is accomplished by writing one 16-bit word at a time: the | 
| 45 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 128 SIO_WRITE_EEPROM_REQUEST command writes a user-supplied word at a user-supplied | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 129 EEPROM address. However, our fteeprom-prog tool currently supports only writing | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 130 complete EEPROMs (64 or 128 or 256 16-bit words starting at address 0) and we | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 131 do not currently provide any kind of "random access write" utility; the primary | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 132 reason for this design decision is practical usefulness: FTDI's EEPROM structure | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 133 includes a checksum over the first 64 words for 1024-bit EEPROMs or over the | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 134 first 128 words for larger ones, and if this checksum fails to match, the entire | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 135 structure is deemed to be invalid - hence there is no practical use case for | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 136 selectively rewriting individual words. The only exception may be with 93C66 | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 137 EEPROMs: on these giants only the first half would be subject to the checksum, | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 138 and the second half could be used arbitrarily. However, we have not yet | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 139 encountered any boards out in the wild with such big EEPROMs, and we have no | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 140 plans to use such in any of our own hardware designs either, hence there is no | 
| 
1f3a4115375f
doc/FTDI-EEPROM-tools: article started
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 141 business case at the present moment to develop tooling support for them. | 
| 49 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 142 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 143 There are two primary modes of usage for our fteeprom-prog tool: restoring a | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 144 saved EEPROM backup or writing a new EEPROM config which you generate yourself. | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 145 To restore a saved EEPROM backup, run the tool as follows: | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 146 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 147 fteeprom-prog <device-selector> <eeprom-image-file> | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 148 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 149 To program a new EEPROM config of your own, run a pipeline of this form: | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 150 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 151 <generator-tool> | fteeprom-prog <device-selector> | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 152 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 153 fteeprom-prog reads the EEPROM image from stdin if no image file is named on | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 154 the command line; the image format is the same in both cases, and the length of | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 155 this EEPROM image tells the tool how many words need to be programmed - there | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 156 are no -b or -B options to fteeprom-prog. | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 157 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 158 Generator tools | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 159 =============== | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 160 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 161 Unfortunately FTDI never documented the format of their EEPROM configuration | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 162 structure - apparently they consider it a proprietary trade secret just like | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 163 the wire protocol spoken over USB between their chips and their closed-source | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 164 proprietary drivers. All FOSS community support for these chips is based on | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 165 reverse engineering, and that includes the EEPROM format. | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 166 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 167 The present suite of tools includes ftee-gen2232c and ftee-gen2232h EEPROM image | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 168 generators, meant for use with FT2232C/D and FT2232H chips, respectively. These | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 169 tools are based on the knowledge extracted from other (pre-existing) community | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 170 tools, primarily the EEPROM config code built into various libftdi versions - | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 171 we haven't done any FTDI RE of our own, instead the goal of this project has | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 172 been to create a set of tools that are better fit for production use. | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 173 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 174 Our ftee-gen2232c and ftee-gen2232h tools are invoked as follows: | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 175 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 176 ftee-gen2232[ch] [-b|-B] <config-file> [serial-num] | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 177 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 178 The output of these generator tools is meant to be piped directly into | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 179 fteeprom-prog. | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 180 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 181 The philosophy of which settings are given in the config file vs. which ones | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 182 are given on the command line reflects configuration management and factory | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 183 production line operations. In the envisioned usage there would be a config | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 184 file for each product, giving the USB VID:PID, textual manufacturer and product | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 185 ID strings and possibly other config settings which need to be changed from the | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 186 defaults, but the optional serial number string is given on the command line | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 187 because it would be different for each individual unit being programmed. | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 188 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 189 The EEPROM size selection is also made on the command line, so that the same | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 190 config can be programmed into a smaller EEPROM or a bigger one. By default our | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 191 tools generate an image suitable for a 93C46 EEPROM: the generated image is 64 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 192 words long, with a checksum in word 63, and the EEPROM type byte in FTDI's | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 193 structure is set to 0x46. Running with -b produces an image for a 93C56 EEPROM: | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 194 the EEPROM type byte is set to 0x56, and the checksum-covered image length is | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 195 extended to 128 words. Finally, -B sets things up for a 93C66 EEPROM: the | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 196 EEPROM type byte is set to 0x66, but the generated checksum-covered image is | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 197 still 128 words long just like with -b, as that is what FT2232x chips apparently | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 198 expect. I said "apparently" because I don't have any FT2232x hardware with | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 199 93C66 EEPROMs and I don't plan on acquiring or building any, hence this minimal | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 200 93C66 support is completely untested - use at your own risk. | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 201 | 
| 51 
311c800268b8
doc/FTDI-EEPROM-tools: added note about bigger EEPROMs
 Mychaela Falconia <falcon@freecalypso.org> parents: 
49diff
changeset | 202 It also needs to be noted that with our current RE-based understanding of FTDI's | 
| 
311c800268b8
doc/FTDI-EEPROM-tools: added note about bigger EEPROMs
 Mychaela Falconia <falcon@freecalypso.org> parents: 
49diff
changeset | 203 undocumented EEPROM structure, using a bigger EEPROM does NOT provide more room | 
| 
311c800268b8
doc/FTDI-EEPROM-tools: added note about bigger EEPROMs
 Mychaela Falconia <falcon@freecalypso.org> parents: 
49diff
changeset | 204 for strings: all that happens with -b and -B options is that a gap of 64 unused | 
| 
311c800268b8
doc/FTDI-EEPROM-tools: added note about bigger EEPROMs
 Mychaela Falconia <falcon@freecalypso.org> parents: 
49diff
changeset | 205 EEPROM words is inserted between the end of the fixed structure and the | 
| 
311c800268b8
doc/FTDI-EEPROM-tools: added note about bigger EEPROMs
 Mychaela Falconia <falcon@freecalypso.org> parents: 
49diff
changeset | 206 beginning of strings. The exact same arrangement has been observed in all 93C56 | 
| 
311c800268b8
doc/FTDI-EEPROM-tools: added note about bigger EEPROMs
 Mychaela Falconia <falcon@freecalypso.org> parents: 
49diff
changeset | 207 EEPROM images found in the wild, presumably produced with FTDI's official tools, | 
| 
311c800268b8
doc/FTDI-EEPROM-tools: added note about bigger EEPROMs
 Mychaela Falconia <falcon@freecalypso.org> parents: 
49diff
changeset | 208 including FTDI's own USB-COM232-PLUS2 board - thus it is not clear at all if | 
| 
311c800268b8
doc/FTDI-EEPROM-tools: added note about bigger EEPROMs
 Mychaela Falconia <falcon@freecalypso.org> parents: 
49diff
changeset | 209 FT2232x chips actually support longer strings with bigger EEPROMs, and if not, | 
| 
311c800268b8
doc/FTDI-EEPROM-tools: added note about bigger EEPROMs
 Mychaela Falconia <falcon@freecalypso.org> parents: 
49diff
changeset | 210 what does one need a bigger EEPROM for... | 
| 
311c800268b8
doc/FTDI-EEPROM-tools: added note about bigger EEPROMs
 Mychaela Falconia <falcon@freecalypso.org> parents: 
49diff
changeset | 211 | 
| 49 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 212 For the format of config files read by our ftee-gen2232[ch] tools and what | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 213 settings can be tweaked, read the source code. | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 214 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 215 Erasing the EEPROM (making it blank) | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 216 ==================================== | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 217 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 218 If you are playing with a "generic" FT2232x breakout board that is made for | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 219 tinkering, as opposed to a more finished product, such boards are typically | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 220 shipped with their EEPROMs completely blank. In that case restoring the EEPROM | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 221 to its "pristine" state after playing around would mean erasing it, i.e., | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 222 bringing it into a blank (all ones) state. FT2232x chips provide two ways to | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 223 do so: one can explicitly write 0xFFFF into each individual EEPROM word with | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 224 SIO_WRITE_EEPROM_REQUEST, or one can send a SIO_ERASE_EEPROM_REQUEST command to | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 225 the chip, and the chip then erases the entire EEPROM. But we don't know how | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 226 the latter SIO_ERASE_EEPROM_REQUEST operation is implemented by FT2232x chips: | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 227 does the FT2232x chip go through and erase each word individually, or does it | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 228 issue an "erase full chip" opcode to the serial EEPROM? If the latter, then | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 229 according to some EEPROM datasheets that operation may not work if the EEPROM | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 230 is powered from a 3.3V rail rather than the full USB 5V - may be an issue in | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 231 FT2232H-based designs. | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 232 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 233 In any case our tools provide both ways. To perform the "automatic full chip | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 234 erase" operation, run the following command: | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 235 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 236 fteeprom-erase <device-selector> | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 237 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 238 To blank the EEPROM by writing 0xFFFF into each word, run one of the following | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 239 pipelines: | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 240 | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 241 ftee-mkblank | fteeprom-prog <device-selector> -- blank a 93C46 EEPROM | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 242 ftee-mkblank -b | fteeprom-prog <device-selector> -- blank a 93C56 EEPROM | 
| 
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
 Mychaela Falconia <falcon@freecalypso.org> parents: 
45diff
changeset | 243 ftee-mkblank -B | fteeprom-prog <device-selector> -- blank a 93C66 EEPROM | 
