annotate doc/CP2102-EEPROM-format @ 89:cddf60418f98

cp2102-decode-ee-desc: decode endpoint descriptors
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 27 Sep 2023 20:00:56 +0000
parents b36397a56bda
children 29bff463402e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
82
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 The classic CP2102 single-channel USB-serial chip from Silabs (original CP2102,
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 not CP2102N and not CP2105) features an internal 1024-byte EEPROM, readable and
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 writable over USB via vendor-specific commands. Note that it is 1024 bytes,
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 not bits, thus the internal EEPROM of CP2102 is 8 times bigger than that of its
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 direct competitor FT232R. Compared to FTDI EEPROMs, the internal EEPROM of
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 CP2102 exhibits these most obvious differences:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 * The all-important baud rate remapping table (the signature feature of CP2102)
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 is included here;
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 * All USB descriptors are stored in full in the big EEPROM;
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 * Each of the 3 string descriptors (manufacturer, product, serial number) has a
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 fixed area allocated for it, no pointer-to-string scheme like in FTDI's
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 EEPROMs;
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 * The logical structure of CP2102 EEPROM is byte-oriented - no 16-bit words as
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 elementary units.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 Intel HEX format
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 ================
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 Our FreeCalypso tools for working with CP2102 EEPROM are intended as a
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 replacement for a Python-language tool from 2014 named cp210x-program-1.0.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 This original Python tool exhibits a rather peculiar format for reading and
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 writing raw EEPROM byte images: it is a variant of Intel HEX format with a
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 peculiar base address. The size of the EEPROM is 1024 or 0x400 bytes, thus if
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 one were to represent an image of this EEPROM in Intel HEX with 16 bytes per
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 data record, the "obvious" address span would be from 0x0000 to 0x03F0.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 However, the records that comprise EEPROM images written by the Python tool and
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 included as examples in the source tarball exhibit a different address range,
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 spanning from 0x3600 to 0x39F0 - the base address is 0x3600.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 As there is no obvious place where this 0x3600 base address could have come
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 from, it is my (Mother Mychaela's) educated guess that the hex format adopted
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 by the author of the Python tool could have originated from Silabs' own vendor
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 tools, which are Windows-only and thus forbidden-ware in Themyscira temples.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 Our fc-usbser-tools CP2102 EEPROM tools use the same Intel HEX format for EEPROM
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 images, with the same 0x3600 base address - thus we are consistent with the
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 Python tool which we are directly replacing, and _possibly_ consistent with
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 whatever sight-unseen, untouchable Windows tools might use.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 EEPROM image analysis
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 =====================
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 An EEPROM image that has been read out of a CP2102 chip that appears to be
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 pristine (not modified after the chip left Silabs) is captured in
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 artifacts/CP2102-std-baud, in the variant of Intel HEX described above.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 Starting from the notes included in doc/cp210x.txt in the cp210x-program-1.0
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 package and looking further at the EEPROM image with our own eyes, we get the
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 following picture of EEPROM structure:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 Address 0x3600, 320 or 0x140 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 The baud rate table resides here, 32 entries of 10 bytes each. Each
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 entry has the following format:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 2 bytes: BRG reload value from Silabs AN205, big-endian
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 2 bytes: timeout reload value from Silabs AN205, big-endian
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 1 byte: prescaler value from Silabs AN205
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 1 byte: reserved
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 4 bytes: intended baud rate, little-endian
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 It is not clear if the "intended baud rate" field is actually used by
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 the chip for anything - it may be a sort of comment.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 Address 0x3740, 0xBF bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 Seems to be an unused area, all 00 bytes.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 Address 0x37FF, 1 byte:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 Python cp210x package notes indicate that this byte holds the part
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 number, presumably the one returned by the vendor-specific command that
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 retrieves it. This aspect remains to be tested at FreeCalypso HQ.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 Address 0x3800, 4 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 USB string descriptor 0, as in USB 2.0 spec Table 9-15.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 Address 0x3804, 4 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 Seems to be an unused area, all 00 bytes. It is possible that Silabs
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 may have left extra room here to allow a longer string descriptor 0,
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 listing more than one language code, but it does not make sense to me
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 (Mother Mychaela) to list more than one supported language when there
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 is no mechanism to return different strings in response to different
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 language requests.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 Address 0x3808, 255 or 0xFF bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 USB string descriptor for product ID string, in the full format of
83
b3989befca98 doc/CP2102-EEPROM-format: list maximum lengths of textual strings
Mychaela Falconia <falcon@freecalypso.org>
parents: 82
diff changeset
95 USB 2.0 spec Table 9-16. The maximum possible length of this string is
b3989befca98 doc/CP2102-EEPROM-format: list maximum lengths of textual strings
Mychaela Falconia <falcon@freecalypso.org>
parents: 82
diff changeset
96 126 UCS-2 characters.
82
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 Address 0x3907, 128 or 0x80 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 USB string descriptor for serial number string, in the full format of
83
b3989befca98 doc/CP2102-EEPROM-format: list maximum lengths of textual strings
Mychaela Falconia <falcon@freecalypso.org>
parents: 82
diff changeset
101 USB 2.0 spec Table 9-16. The maximum possible length of this string is
b3989befca98 doc/CP2102-EEPROM-format: list maximum lengths of textual strings
Mychaela Falconia <falcon@freecalypso.org>
parents: 82
diff changeset
102 63 UCS-2 characters.
82
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 Address 0x3987, 1 byte:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 Byte with value 0x02, purpose unknown.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 Address 0x3988, 18 or 0x12 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 USB device descriptor, as in USB 2.0 spec Table 9-8.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 Address 0x399A, 9 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 USB configuration descriptor, as in USB 2.0 spec Table 9-10.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 Address 0x39A3, 9 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 USB interface descriptor, as in USB 2.0 spec Table 9-12.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120 Address 0x39AC, 7 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 USB endpoint descriptor, as in USB 2.0 spec Table 9-13.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124 Address 0x39B3, 7 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 USB endpoint descriptor, as in USB 2.0 spec Table 9-13.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127
84
b36397a56bda doc/CP2102-EEPROM-format: small error in analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 83
diff changeset
128 Address 0x39BA, 9 bytes:
82
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 Seems to be an unused area, all 00 bytes.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 Address 0x39C3, 60 or 0x3C bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134 USB string descriptor for manufacturer ID string, in the full format of
83
b3989befca98 doc/CP2102-EEPROM-format: list maximum lengths of textual strings
Mychaela Falconia <falcon@freecalypso.org>
parents: 82
diff changeset
135 USB 2.0 spec Table 9-16. The maximum possible length of this string is
b3989befca98 doc/CP2102-EEPROM-format: list maximum lengths of textual strings
Mychaela Falconia <falcon@freecalypso.org>
parents: 82
diff changeset
136 29 UCS-2 characters.
82
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 Address 0x39FF, 1 byte:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 0xFF is the value I find here, in the EEPROMs of CP2102-based devices
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 I have on hand. Python cp210x package notes say that this byte is lock
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 status, with 0xFF meaning unlocked and 0xF0 meaning locked.