annotate doc/High-speed-serial @ 619:f82551c77e58

libserial-newlnx: ASYNC_LOW_LATENCY patch reverted Reports from Das Signal indicate that loadtools performance on Debian is about the same as on Slackware, and that including or omitting the ASYNC_LOW_LATENCY patch from Serg makes no difference. Because the patch in question does not appear to be necessary, it is being reverted until and unless someone other than Serg reports an actual real-world system on which loadtools operation times are slowed compared to the Mother's Slackware reference and on which Slackware-like performance can be restored by setting the ASYNC_LOW_LATENCY flag.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 27 Feb 2020 01:09:48 +0000
parents 00805e7c4c45
children 9edb7c07bb29
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 The highest baud rate supported by "standard" PC serial ports is 115200 bps,
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 but Calypso UARTs can go quite a bit faster. Being clocked with 13 MHz (a
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 standard frequency in the GSM world), these UARTs can produce non-standard
258
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
4 (outside of the GSM world) baud rates of 203125, 406250 and 812500 bps. Even
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
5 though these high baud rates aren't supported by "standard" RS-232 serial ports
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
6 on PCs, they *are* supported by some of the better USB to serial adapters,
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
7 namely CP2102 (USB to single UART) and the FT2232x family (USB to two UARTs).
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
8 The Pirelli DP-L10 phone supported by FreeCalypso host tools has a CP2102 built
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
9 in, the officially recommended 2.5 mm headset jack USB-serial cables for working
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
10 with Motorola C1xx and Openmoko GTA01/02 phones also use CP2102 adapters,
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
11 whereas our FreeCalypso development boards (FCDEV3B) are typically used with an
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
12 FT2232D or other FT2232x USB to dual UART adapter.
0
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 FreeCalypso tools can use these high serial baud rates in the following ways:
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 * When you use fc-loadtool to dump and program GSM device flash memory
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 (flashing firmware images), the transfers get annoyingly slow at 115200 baud
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 if you have to do it a lot. Switching to 406250 or even better 812500 baud
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 makes them go considerably faster.
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 * Some of our target devices have large enough RAM to execute a GSM firmware
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 image entirely from RAM without flashing - very handy for development and
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 experimentation. The tool used to run these RAM-based images is fc-xram,
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 and it also supports the option of using high serial baud rates for the image
258
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
25 transfer for the same reason: repeatedly transferring >2 MiB images over
0
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 115200 baud gets tiresome.
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27
258
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
28 * If you are building your own FreeCalypso-based or TI-based GSM firmware in a
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
29 special non-standard configuration, you can make it run its RVTMUX interface
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
30 at 406250 or 812500 baud. We used this trick when we tried to make TCS211
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
31 with D-Sample-targeting UI (176x220 pix LCD, 16 bits per pixel) send its
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
32 virtual LCD raster blits out the serial port. Our rvtdump and rvinterf
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
33 utilities support this mode of operation by providing options to select
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
34 different baud rates.
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
35
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
36 Recent changes for better FTDI adapter support
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
37 ==============================================
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
38
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
39 There is one fundamental difference between the way CP2102 adapters support
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
40 non-standard baud rates (like the high GSM baud rates of interest to us) and
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
41 the way in which FTDI adapters support them. CP2102 chips have a built-in
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
42 EEPROM that contains (among other things) a 32-entry table in which the
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
43 supported serial baud rates are programmed, and the programming of this EEPROM
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
44 effects a remapping: a Linux userspace process can request B230400, B460800 or
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
45 B921600 from termios, but magically get 203125, 406250 or 812500 as the actual
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
46 resulting serial baud rate instead. In contrast, FTDI adapters have no such
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
47 magic remapping mechanism in hardware, thus in order to get 203125, 406250 or
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
48 812500 baud with an FTDI adapter, the userspace process has to explicitly
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
49 request these special baud rates from the serial driver in the kernel, and
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
50 doing the latter requires foregoing the standard termios API and using Linux-
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
51 specific <asm/...> header files and raw ioctl calls instead.
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
52
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
53 When support for high GSM baud rates was first added to FreeCalypso host tools
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
54 back in 2013, there was no need to support the more difficult FTDI adapters as
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
55 the easier to work with CP2102 was fully sufficient for our needs, hence our
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
56 original FC host tools implementation required "magic" baud rate remapping
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
57 somewhere below, usually in form of CP2102 EEPROM programming but also possibly
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
58 by way of a hacky patch to the ftdi_sio driver in the Linux kernel to achieve
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
59 the same effect with rarely-needed FTDI adapters.
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
60
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
61 The situation has changed with the introduction of our own FreeCalypso
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
62 development boards (currently FCDEV3B, possibly others in the future) which
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
63 bring out both Calypso UARTs to the user, rather than just one. The most
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
64 convenient serial adapters for working with these dual UARTs are FT2232x (our
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
65 current official adapter is FT2232D), thus we now have a strong need to support
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
66 the use of these FTDI adapters, including the use of high GSM baud rates, in a
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
67 manner which does not fight against the mainline Linux kernel.
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
68
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
69 In a radical change from fc-host-tools-r6 and earlier, the present version of
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
70 FreeCalypso host tools uses new libserial code that differs from the old code
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
71 as follows:
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
72
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
73 * Linux-specific <asm/...> headers are used instead of <termios.h>;
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
74
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
75 * Linux-specific raw ioctl calls are used instead of tcsetattr() for serial
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
76 port setup;
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
77
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
78 * When the user requests 203125, 406250 or 812500 baud, these are the actual
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
79 baud rates requested from the kernel, not 230400/460800/921600 baud.
0
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80
258
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
81 This change is expected to have no adverse effect on the existing CP2102 users,
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
82 as the cp210x driver in Linux appears to cope fine with the strange baud rate
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
83 requests from userspace and the correct CP2102 EEPROM baud rate entry still
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
84 gets selected (tested on Slackware 13.37 and Debian 9), but when working with
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
85 FTDI adapters such as our FT2232D adapter for the FCDEV3B this change makes the
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
86 high GSM baud rates work without needing the dirty kernel patch which the
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
87 Mother has been using up until now.
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
88
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
89 Support for other Unix flavors
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
90 ==============================
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
91
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
92 The serial port handling code for all of FC host tools has been factored out
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
93 into a common library called libserial. We have two versions of libserial:
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
94
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
95 * libserial-orig uses the standard and presumably portable termios API, but
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
96 requires "magic" remapping of baud rates by some invisible genie below (like
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
97 CP2102 EEPROM programming) in order to get 203125/406250/812500 baud.
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
98
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
99 * libserial-newlnx uses Linux-specific header files and raw ioctl calls to
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
100 request the actual desired baud rates.
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
101
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
102 If you would like to run FreeCalypso host tools under FreeBSD, illumos or some
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
103 other alternative-to-Linux OS, you have two basic choices:
0
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104
258
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
105 * If you wish to use high GSM baud rates with non-remapping FTDI adapters or
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
106 other serial interfaces which support the baud rates in question without
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
107 remapping, you will need to figure out how to request non-standard serial
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
108 baud rates from the underlying drivers under your OS, and create your own
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
109 version of libserial ported to use that method.
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
110
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
111 * If you don't need high GSM baud rates or need them only with CP2102 adapters
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
112 which "magically" remap them, you should be able to use libserial-orig. You
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
113 can also completely remove the entries for the high GSM baud rates from
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
114 libserial-orig/baudtab.c if you don't need these high baud rates and your
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
115 version of termios does not have B230400/B460800/B921600 baud rate constants.
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
116
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
117 It is assumed that any system on which someone may desire to run our FC host
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
118 tools supports at least 115200 baud. The Mother remembers the days when this
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
119 baud rate was considered very high and non-standard and even has some of those
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
120 lovely old systems still running; fc-loadtool and friends going through the
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
121 Calypso boot ROM (not through Compal's bootloader) can be made to work with a
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
122 host system whose UARTs max out at 19200 baud, but most Calypso GSM device
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
123 firmwares including our own use the 115200 baud rate.
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
124
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
125 Using CP2102 adapters with Mot C1xx and Openmoko phones
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
126 =======================================================
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
127
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
128 As already mentioned above, CP2102 chips have a built-in EEPROM that contains
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
129 (among other things) a 32-entry table in which the supported serial baud rates
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
130 are programmed. In order to support the special GSM baud rates, these rates
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
131 need to be added to that table, displacing some other entries. The convention
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
132 established by the Pirelli DP-L10 phone (has a CP2102 built in and programmed
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
133 at the factory for GSM baud rates) is that 203120 baud takes the place of
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
134 230400, 406250 takes the place of 460800, and 812500 takes the place of 921600.
0
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 Because you need a special cable anyway to make the necessary physical
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 connection to the debug/programming serial port presented on a 2.5 mm headset
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 jack, you will probably be buying the requisite cable from a specialized
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 professional vendor. In that case it is that vendor's responsibility to sell
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 you the cable with the CP2102 chip already programmed with GSM baud rates:
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 because the physical construction of the cable (2.5 mm headset jack on the
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 serial end) makes it specific to GSM devices, and all known GSM devices use a
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 13 MHz clock or some integer multiple thereof, it is pointless for a
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 physically-GSM-specific cable to be set up for 230400/460800/921600 baud when
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 all known GSM devices will need 203125/406250/812500 baud instead.
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146
258
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
147 If you are making a CP2102-based serial cable yourself (either for your own
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
148 personal use or professionally/commercially), please follow these instructions
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
149 for baud rate programming:
0
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150
258
00805e7c4c45 doc/High-speed-serial: update/rewrite for the new FTDI support
Mychaela Falconia <falcon@freecalypso.org>
parents: 0
diff changeset
151 http://osmocom.org/projects/baseband/wiki/HardwareCP210xTutorial
0
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 If you follow the procedure given on that page, your CP2102 will be programmed
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 the same way as the one in the Pirelli DP-L10 (Foxconn's original factory
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 programming).
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 Using adapters built into phones
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 ================================
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 The Calypso chip has no native USB capabilities, thus if a Calypso phone
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 presents a USB charging+data port to the user, it must have a USB to serial
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162 converter built in. The only phone we currently know of that does this is
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 Pirelli DP-L10, and its built-in USB-serial adapter chip is CP2102. It has
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 already been programmed with the correct GSM baud rates on Foxconn's original
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165 production line, thus one can always use 812500 baud with FreeCalypso tools on
e7502631a0f9 initial import from freecalypso-sw rev 1033:5ab737ac3ad7
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 this phone and it will Just Work.