annotate doc/DUART28-EEPROM-config @ 68:5cbde3c80c24

fteeprom-{erase,prog}: detach logic: change to detach by default As it turns out, detaching all ttyUSB interfaces of a multichannel device does not require outside knowledge of how many channels there are, as in our previous -d option design that is being removed here - instead we can read the bNumInterfaces constant from the USB device's config descriptor and thus know how many interfaces there are in total. Based on this discovery, change the design of fteeprom-{erase,prog} as follows: * remove -d option; * flip the default to where we detach all interfaces by default; * add -n option to NOT detach any interfaces.
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 13 Sep 2023 06:37:03 +0000
parents dbaf239436cf
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
34
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 The EEPROM on the DUART28 adapter board has two valid configurations: DUART28C
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 and DUART28S. As of this writing the S configuration is the default shipping
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 one, but this situation may change in the future. The difference between the
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 two configs is in the USB VID:PID presented by the USB device, and this USB ID
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 difference has the following practical impact:
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 * The C configuration presents a custom USB ID and requires a custom patch to
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 the Linux kernel ftdi_sio driver in order to work - without this ftdi_sio
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 driver patch it won't work at all. But if you do go through the pain of
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 applying the needed patch to your Linux kernel ftdi_sio driver, the reward
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 is that you get not only the two Calypso UARTs, but also working boot control
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 outputs.
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 * The S configuration presents the default FT2232x USB ID and is therefore
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 supported out of the box by the standard Linux ftdi_sio driver without needing
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 any patches. However, the adapter's CTL1 and CTL2 outputs cannot be used in
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 this configuration (they will be bogusly asserted whenever Channel B ttyUSB
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 device is opened), and thus they must be left unconnected, and you don't get
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 to play with the remote boot control feature.
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 The physical hardware is identical between the two configurations, only the
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 EEPROM programming changes, thus end users need to be able to switch freely
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 between the two EEPROM configs as they wish. This article explains how to
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 program the EEPROM back and forth between the two configs.
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25
43
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
26 Using fc-duart28-conf utility
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
27 =============================
34
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28
43
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
29 The present fc-usbser-tools package includes a specialized high-level utility
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
30 for examining and changing DUART28 adapter configuration. This utility has two
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
31 operation modes:
34
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32
43
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
33 fc-duart28-conf show -- check and show current configuration
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
34 fc-duart28-conf set C|S -- set new config by programming the EEPROM
34
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35
43
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
36 The show command is completely non-invasive: it looks through the system tree
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
37 of connected USB devices, looking for a DUART28 adapter (as identified not only
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
38 by USB VID:PID, but also by manufacturer and product ID strings), and if it
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
39 finds a DUART28 device, the tool reports its current configuration.
34
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40
43
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
41 The set command is invasive by necessity, as the fundamental identity of the
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
42 connected USB device is being changed: the tool commands the Linux kernel to
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
43 unbind the ftdi_sio driver from both interfaces (both ttyUSB devices disappear),
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
44 checks the current EEPROM configuration, and then reprograms it for the new
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
45 desired config. Once the operation completes, the DUART28 adapter needs to be
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
46 unplugged and replugged for the EEPROM change to take effect and for the
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
47 ftdi_sio driver to rebind.
34
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48
43
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
49 Unless you intentionally fool it by programming DUART28C or DUART28S EEPROM
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
50 config into some other FTDI device, fc-duart28-conf cannot hit a non-DUART28
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
51 USB device by mistake: VID:PID, manufacturer ID string and product ID string
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
52 all have to match either DUART28C or DUART28S. If you have multiple DUART28
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
53 adapters plugged in, the tool will hit the first one it finds - not a
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
54 recommended arrangement, but also one which is not expected to arise by
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
55 accident.
34
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56
43
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
57 Manual programming with ftee-gen2232c and fteeprom-prog
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
58 =======================================================
34
f5fbcf1ff032 doc: initial import from freecalypso-hwlab
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59
43
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
60 In order to be safe in terms of not accidentally hitting some other FTDI-based
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
61 USB device, fc-duart28-conf requires the current state of the DUART28 adapter
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
62 to be either valid DUART28C or valid DUART28S. Under ordinary expected usage
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
63 this requirement is not a problem, but if you somehow manage to totally hose
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
64 your adapter's EEPROM, then fc-duart28-conf won't be able to recover it. If
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
65 you find yourself in the latter situation, see DUART28-EEPROM-manual article
dbaf239436cf doc/DUART28-EEPROM-config: update for fc-duart28-conf
Mychaela Falconia <falcon@freecalypso.org>
parents: 34
diff changeset
66 for the older manual method which is always possible.