FreeCalypso > hg > freecalypso-hwlab
annotate doc/FTDI-EEPROM-tools @ 81:bbeec8f293dc
FC JTAG+UART ftdi_sio patch made it to stable
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 18 Oct 2020 22:26:46 +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:
51
diff
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:
51
diff
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:
51
diff
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:
51
diff
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:
51
diff
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:
51
diff
changeset
|
27 |
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
Mychaela Falconia <falcon@freecalypso.org>
parents:
51
diff
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:
51
diff
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:
51
diff
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:
51
diff
changeset
|
32 |
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
Mychaela Falconia <falcon@freecalypso.org>
parents:
51
diff
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:
51
diff
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:
51
diff
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:
51
diff
changeset
|
36 |
0514e3520be3
doc/FTDI-EEPROM-tools: update for current state of FT232R support
Mychaela Falconia <falcon@freecalypso.org>
parents:
51
diff
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:
51
diff
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:
51
diff
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:
51
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
changeset
|
121 will stay. |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
changeset
|
142 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
changeset
|
146 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
147 fteeprom-prog <device-selector> <eeprom-image-file> |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
148 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
changeset
|
150 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
151 <generator-tool> | fteeprom-prog <device-selector> |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
152 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
changeset
|
156 are no -b or -B options to fteeprom-prog. |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
157 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
158 Generator tools |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
159 =============== |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
160 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
changeset
|
165 reverse engineering, and that includes the EEPROM format. |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
166 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
changeset
|
173 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
changeset
|
175 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
176 ftee-gen2232[ch] [-b|-B] <config-file> [serial-num] |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
177 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
changeset
|
179 fteeprom-prog. |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
180 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
changeset
|
188 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
changeset
|
201 |
51
311c800268b8
doc/FTDI-EEPROM-tools: added note about bigger EEPROMs
Mychaela Falconia <falcon@freecalypso.org>
parents:
49
diff
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:
49
diff
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:
49
diff
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:
49
diff
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:
49
diff
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:
49
diff
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:
49
diff
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:
49
diff
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:
49
diff
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:
49
diff
changeset
|
211 |
49
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
changeset
|
213 settings can be tweaked, read the source code. |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
214 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
215 Erasing the EEPROM (making it blank) |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
216 ==================================== |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
217 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
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:
45
diff
changeset
|
231 FT2232H-based designs. |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
232 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
changeset
|
234 erase" operation, run the following command: |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
235 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
236 fteeprom-erase <device-selector> |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
237 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
changeset
|
239 pipelines: |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
changeset
|
240 |
b2e9a6f3c833
doc/FTDI-EEPROM-tools: document finished
Mychaela Falconia <falcon@freecalypso.org>
parents:
45
diff
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:
45
diff
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:
45
diff
changeset
|
243 ftee-mkblank -B | fteeprom-prog <device-selector> -- blank a 93C66 EEPROM |