annotate doc/CP2102-EEPROM-format @ 100:29bff463402e

doc/CP2102-EEPROM-format: part number byte confirmed
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 28 Sep 2023 05:39:44 +0000
parents b36397a56bda
children
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
100
29bff463402e doc/CP2102-EEPROM-format: part number byte confirmed
Mychaela Falconia <falcon@freecalypso.org>
parents: 84
diff changeset
17 * Unlike FTDI EEPROMs, CP2102 EEPROM is most certainly NOT optional - a blank
29bff463402e doc/CP2102-EEPROM-format: part number byte confirmed
Mychaela Falconia <falcon@freecalypso.org>
parents: 84
diff changeset
18 or garbage-filled EEPROM will result in a non-functional chip;
29bff463402e doc/CP2102-EEPROM-format: part number byte confirmed
Mychaela Falconia <falcon@freecalypso.org>
parents: 84
diff changeset
19
29bff463402e doc/CP2102-EEPROM-format: part number byte confirmed
Mychaela Falconia <falcon@freecalypso.org>
parents: 84
diff changeset
20 * There is no checksum - because there is nothing for the chip to "fall back"
29bff463402e doc/CP2102-EEPROM-format: part number byte confirmed
Mychaela Falconia <falcon@freecalypso.org>
parents: 84
diff changeset
21 on when the EEPROM is bad, there is no point in checking the EEPROM content
29bff463402e doc/CP2102-EEPROM-format: part number byte confirmed
Mychaela Falconia <falcon@freecalypso.org>
parents: 84
diff changeset
22 for validity;
29bff463402e doc/CP2102-EEPROM-format: part number byte confirmed
Mychaela Falconia <falcon@freecalypso.org>
parents: 84
diff changeset
23
82
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 * 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
25 elementary units.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 Intel HEX format
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 ================
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 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
31 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
32 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
33 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
34 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
35 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
36 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
37 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
38 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
39 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
40
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 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
42 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
43 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
44 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
45
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 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
47 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
48 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
49 whatever sight-unseen, untouchable Windows tools might use.
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 EEPROM image analysis
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 =====================
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 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
55 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
56 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
57
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 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
59 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
60 following picture of EEPROM structure:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 Address 0x3600, 320 or 0x140 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 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
65 entry has the following format:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 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
68 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
69 1 byte: prescaler value from Silabs AN205
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 1 byte: reserved
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 4 bytes: intended baud rate, little-endian
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 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
74 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
75
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 Address 0x3740, 0xBF bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 Seems to be an unused area, all 00 bytes.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 Address 0x37FF, 1 byte:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81
100
29bff463402e doc/CP2102-EEPROM-format: part number byte confirmed
Mychaela Falconia <falcon@freecalypso.org>
parents: 84
diff changeset
82 Part number code 0x02 for CP2102. The chip returns this EEPROM byte
29bff463402e doc/CP2102-EEPROM-format: part number byte confirmed
Mychaela Falconia <falcon@freecalypso.org>
parents: 84
diff changeset
83 when queried (via CP210x family-specific command) for its part number,
29bff463402e doc/CP2102-EEPROM-format: part number byte confirmed
Mychaela Falconia <falcon@freecalypso.org>
parents: 84
diff changeset
84 as in cp2102-read-partno.
82
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 Address 0x3800, 4 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 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
89
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 Address 0x3804, 4 bytes:
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 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
93 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
94 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
95 (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
96 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
97 language requests.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 Address 0x3808, 255 or 0xFF bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 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
102 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
103 126 UCS-2 characters.
82
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 Address 0x3907, 128 or 0x80 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 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
108 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
109 63 UCS-2 characters.
82
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 Address 0x3987, 1 byte:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 Byte with value 0x02, purpose unknown.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 Address 0x3988, 18 or 0x12 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 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
118
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 Address 0x399A, 9 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 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
122
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 Address 0x39A3, 9 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 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
126
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127 Address 0x39AC, 7 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 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
130
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 Address 0x39B3, 7 bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 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
134
84
b36397a56bda doc/CP2102-EEPROM-format: small error in analysis
Mychaela Falconia <falcon@freecalypso.org>
parents: 83
diff changeset
135 Address 0x39BA, 9 bytes:
82
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 Seems to be an unused area, all 00 bytes.
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 Address 0x39C3, 60 or 0x3C bytes:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 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
142 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
143 29 UCS-2 characters.
82
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 Address 0x39FF, 1 byte:
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146
2c135bde4dd0 doc/CP2102-EEPROM-format: new article
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 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
148 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
149 status, with 0xFF meaning unlocked and 0xF0 meaning locked.