FreeCalypso > hg > fc-usbser-tools
annotate doc/CP2102-EEPROM-format @ 107:bc3367755586 default tip
add INSTALL document
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 21 Nov 2023 22:11:09 +0000 |
parents | 29bff463402e |
children |
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. |