comparison doc/High-speed-serial @ 1008:2b4c3e0f73fc

doc/High-speed-serial: update for current situation
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 10 Dec 2023 23:42:12 +0000
parents 9edb7c07bb29
children
comparison
equal deleted inserted replaced
1007:85ea82ce21d5 1008:2b4c3e0f73fc
3 standard frequency in the GSM world), these UARTs can produce non-standard 3 standard frequency in the GSM world), these UARTs can produce non-standard
4 (outside of the GSM world) baud rates of 203125, 406250 and 812500 bps. Even 4 (outside of the GSM world) baud rates of 203125, 406250 and 812500 bps. Even
5 though these high baud rates aren't supported by "standard" RS-232 serial ports 5 though these high baud rates aren't supported by "standard" RS-232 serial ports
6 on PCs, they *are* supported by some of the better USB to serial adapters, 6 on PCs, they *are* supported by some of the better USB to serial adapters,
7 namely CP2102 (USB to single UART) and the FT2232x family (USB to two UARTs). 7 namely CP2102 (USB to single UART) and the FT2232x family (USB to two UARTs).
8 The Pirelli DP-L10 phone supported by FreeCalypso host tools has a CP2102 built 8 Both FTDI and CP2102 USB-serial adapters are officially endorsed in FreeCalypso
9 in, the officially recommended 2.5 mm headset jack USB-serial cables for working 9 queendom:
10 with Motorola C1xx and Openmoko GTA01/02 phones also use CP2102 adapters, 10
11 whereas our FreeCalypso development boards (FCDEV3B) are typically used with an 11 * FreeCalypso DUART28 adapter (USB to dual UART at 2.8V, electrically optimized
12 FT2232D or other FT2232x USB to dual UART adapter. 12 for direct connection to Calypso UARTs) is based on FT2232D;
13
14 * For working with older Calypso devboards such as TI D-Sample and iWOW DSK
15 (two RS-232 UARTs), FTDI board USB-COM232-PLUS2 (based on FT2232H) is
16 officially recommended;
17
18 * Future FreeCalypso development boards will likely include a built-in FT2232H
19 subsystem;
20
21 * For working with Motorola C1xx and Openmoko GTA01/02 phones (Calypso UART
22 access via 2.5 mm headset jack), the cable we officially recommend is based
23 on CP2102;
24
25 * Pirelli DP-L10 is a Calypso phone with a built-in CP2102 USB-serial interface,
26 supported since the beginning of FreeCalypso project.
13 27
14 FreeCalypso tools can use these high serial baud rates in the following ways: 28 FreeCalypso tools can use these high serial baud rates in the following ways:
15 29
16 * When you use fc-loadtool to dump and program GSM device flash memory 30 * When you use fc-loadtool to dump and program GSM device flash memory
17 (flashing firmware images), the transfers get annoyingly slow at 115200 baud 31 (flashing firmware images), the transfers get annoyingly slow at 115200 baud
31 with D-Sample-targeting UI (176x220 pix LCD, 16 bits per pixel) send its 45 with D-Sample-targeting UI (176x220 pix LCD, 16 bits per pixel) send its
32 virtual LCD raster blits out the serial port. Our rvtdump and rvinterf 46 virtual LCD raster blits out the serial port. Our rvtdump and rvinterf
33 utilities support this mode of operation by providing options to select 47 utilities support this mode of operation by providing options to select
34 different baud rates. 48 different baud rates.
35 49
36 Recent changes for better FTDI adapter support 50 FreeCalypso host tools approach to FTDI adapter support
37 ============================================== 51 =======================================================
38 52
39 There is one fundamental difference between the way CP2102 adapters support 53 There is one fundamental difference between the way CP2102 adapters support
40 non-standard baud rates (like the high GSM baud rates of interest to us) and 54 non-standard baud rates (like the high GSM baud rates of interest to us) and
41 the way in which FTDI adapters support them. CP2102 chips have a built-in 55 the way in which FTDI adapters support them. CP2102 chips have a built-in
42 EEPROM that contains (among other things) a 32-entry table in which the 56 EEPROM that contains (among other things) a 32-entry table in which the
56 original FC host tools implementation required "magic" baud rate remapping 70 original FC host tools implementation required "magic" baud rate remapping
57 somewhere below, usually in form of CP2102 EEPROM programming but also possibly 71 somewhere below, usually in form of CP2102 EEPROM programming but also possibly
58 by way of a hacky patch to the ftdi_sio driver in the Linux kernel to achieve 72 by way of a hacky patch to the ftdi_sio driver in the Linux kernel to achieve
59 the same effect with rarely-needed FTDI adapters. 73 the same effect with rarely-needed FTDI adapters.
60 74
61 The situation has changed with the introduction of our own FreeCalypso 75 The situation has changed as our project transitioned from hacking on Motorola,
62 development boards (currently FCDEV3B, possibly others in the future) which 76 Openmoko and Pirelli phones to proper Calypso GSM MS development boards,
63 bring out both Calypso UARTs to the user, rather than just one. The most 77 bringing out both Calypso UARTs rather than just one. The most convenient
64 convenient serial adapters for working with these dual UARTs are FT2232x (our 78 serial adapters for working with these dual UARTs are FT2232x, thus we now have
65 current official adapter is FT2232D), thus we now have a strong need to support 79 a strong need to support the use of these FTDI adapters, including the use of
66 the use of these FTDI adapters, including the use of high GSM baud rates, in a 80 high GSM baud rates, in a manner which does not fight against the mainline
67 manner which does not fight against the mainline Linux kernel. 81 Linux kernel.
68 82
69 In a radical change from fc-host-tools-r6 and earlier, the present version of 83 In a radical change from fc-host-tools-r6 and earlier, the present version of
70 FreeCalypso host tools uses new libserial code that differs from the old code 84 FreeCalypso host tools uses new libserial code that differs from the old code
71 as follows: 85 as follows:
72 86
76 port setup; 90 port setup;
77 91
78 * When the user requests 203125, 406250 or 812500 baud, these are the actual 92 * When the user requests 203125, 406250 or 812500 baud, these are the actual
79 baud rates requested from the kernel, not 230400/460800/921600 baud. 93 baud rates requested from the kernel, not 230400/460800/921600 baud.
80 94
81 This change is expected to have no adverse effect on the existing CP2102 users, 95 This change is expected to have no adverse effect on existing CP2102 users,
82 as the cp210x driver in Linux appears to cope fine with the strange baud rate 96 as the cp210x driver in Linux appears to cope fine with the strange baud rate
83 requests from userspace and the correct CP2102 EEPROM baud rate entry still 97 requests from userspace and the correct CP2102 EEPROM baud rate entry still
84 gets selected (tested on Slackware 13.37 and Debian 9), but when working with 98 gets selected (tested on Slackware 13.37, Slackware 14.2 and Debian 9), but
85 FTDI adapters such as our FT2232D adapter for the FCDEV3B this change makes the 99 when working with FTDI adapters, this change makes our high GSM baud rates work
86 high GSM baud rates work without needing the dirty kernel patch which the 100 without needing the dirty kernel patch which we used in the early part of 2017.
87 Mother has been using up until now.
88 101
89 Support for other Unix flavors 102 Support for other Unix flavors
90 ============================== 103 ==============================
91 104
92 The serial port handling code for all of FC host tools has been factored out 105 The serial port handling code for all of FC host tools has been factored out
108 baud rates from the underlying drivers under your OS, and create your own 121 baud rates from the underlying drivers under your OS, and create your own
109 version of libserial ported to use that method. 122 version of libserial ported to use that method.
110 123
111 * If you don't need high GSM baud rates or need them only with CP2102 adapters 124 * If you don't need high GSM baud rates or need them only with CP2102 adapters
112 which "magically" remap them, you should be able to use libserial-posix. You 125 which "magically" remap them, you should be able to use libserial-posix. You
113 can also completely remove the entries for the high GSM baud rates from 126 can also completely remove the entries for high GSM baud rates from
114 libserial-posix/baudtab.c if you don't need these high baud rates and your 127 libserial-posix/baudtab.c if you don't need these high baud rates and your
115 version of termios does not have B230400/B460800/B921600 baud rate constants. 128 version of termios does not have B230400/B460800/B921600 baud rate constants.
116 129
117 It is assumed that any system on which someone may desire to run our FC host 130 It is assumed that any system on which someone may desire to run our FC host
118 tools supports at least 115200 baud. The Mother remembers the days when this 131 tools supports at least 115200 baud. The Mother remembers the days when this
123 firmwares including our own use the 115200 baud rate. 136 firmwares including our own use the 115200 baud rate.
124 137
125 Using CP2102 adapters with Mot C1xx and Openmoko phones 138 Using CP2102 adapters with Mot C1xx and Openmoko phones
126 ======================================================= 139 =======================================================
127 140
141 For the special USB-serial cable that connects to the 2.5 mm headset jack on
142 these phones, our current official recommendation is this one:
143
144 https://shop.sysmocom.de/Sysmocom-USB-serial-cable-CP2102-with-2.5mm-stereo-jack/cp2102-25
145
146 (In the past we also worked with a different vendor, UberWaves, but that vendor
147 appears to be no longer active as of 2023-12.)
148
128 As already mentioned above, CP2102 chips have a built-in EEPROM that contains 149 As already mentioned above, CP2102 chips have a built-in EEPROM that contains
129 (among other things) a 32-entry table in which the supported serial baud rates 150 (among other things) a 32-entry table in which the supported serial baud rates
130 are programmed. In order to support the special GSM baud rates, these rates 151 are programmed. In order to support the special GSM baud rates, these rates
131 need to be added to that table, displacing some other entries. The convention 152 need to be added to that table, displacing some other entries. The convention
132 established by the Pirelli DP-L10 phone (has a CP2102 built in and programmed 153 established by the Pirelli DP-L10 phone (has a CP2102 built in and programmed
133 at the factory for GSM baud rates) is that 203120 baud takes the place of 154 at the factory for GSM baud rates) is that 203120 baud takes the place of
134 230400, 406250 takes the place of 460800, and 812500 takes the place of 921600. 155 230400, 406250 takes the place of 460800, and 812500 takes the place of 921600.
135 156
136 Because you need a special cable anyway to make the necessary physical 157 If you are working with CP2102 adapters from any vendor, or headset jack serial
137 connection to the debug/programming serial port presented on a 2.5 mm headset 158 cables that incorporate such adapters, you should install this companion tools
138 jack, you will probably be buying the requisite cable from a specialized 159 package from FreeCalypso:
139 professional vendor. In that case it is that vendor's responsibility to sell
140 you the cable with the CP2102 chip already programmed with GSM baud rates:
141 because the physical construction of the cable (2.5 mm headset jack on the
142 serial end) makes it specific to GSM devices, and all known GSM devices use a
143 13 MHz clock or some integer multiple thereof, it is pointless for a
144 physically-GSM-specific cable to be set up for 230400/460800/921600 baud when
145 all known GSM devices will need 203125/406250/812500 baud instead.
146 160
147 If you are making a CP2102-based serial cable yourself (either for your own 161 https://www.freecalypso.org/pub/GSM/FreeCalypso/fc-usbser-tools-latest.tar.bz2
148 personal use or professionally/commercially), please follow these instructions
149 for baud rate programming:
150 162
151 http://osmocom.org/projects/baseband/wiki/HardwareCP210xTutorial 163 Because Sysmocom CP2102-25 adapters have been repurposed for various other uses
164 "in the Osmocom universe" (literal quote from the vendor's product description
165 page) beyond the original purpose of connecting to Mot C1xx and Openmoko
166 GTA01/02 phones, the shipping state of the adapter's internal EEPROM cannot be
167 depended on: they may ship with the EEPROM programmed for 203125/406250/812500
168 baud or for 230400/460800/921600 baud depending on which year you bought the
169 product and other unknown factors. Fortunately though, our cp2102-read-baudtab
170 utility (included in fc-usbser-tools package linked above) replaces guesswork
171 with clarity: you run this command, and it shows you the current programming of
172 the baud rate table in the EEPROM. Programming this EEPROM to the desired
173 configuration is then as simple as:
152 174
153 If you follow the procedure given on that page, your CP2102 will be programmed 175 cp2102-update-eeprom -b gsm # program EEPROM for high GSM baud rates
154 the same way as the one in the Pirelli DP-L10 (Foxconn's original factory 176
155 programming). 177 or
178
179 cp2102-update-eeprom -b std # program EEPROM for "standard" baud rates
156 180
157 Using adapters built into phones 181 Using adapters built into phones
158 ================================ 182 ================================
159 183
160 The Calypso chip has no native USB capabilities, thus if a Calypso phone 184 The Calypso chip has no native USB capabilities, thus if a Calypso phone