annotate doc/High-speed-serial @ 819:7b24c192a1e1

fc-fsio help: document write-bsim-config
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 15 May 2021 03:15:03 +0000
parents 9edb7c07bb29
children 2b4c3e0f73fc
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
694
9edb7c07bb29 doc/High-speed-serial updated for libserial rename
Mychaela Falconia <falcon@freecalypso.org>
parents: 258
diff changeset
95 * libserial-posix uses the standard and presumably portable termios API, but
258
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
694
9edb7c07bb29 doc/High-speed-serial updated for libserial rename
Mychaela Falconia <falcon@freecalypso.org>
parents: 258
diff changeset
99 * libserial-linux uses Linux-specific header files and raw ioctl calls to
258
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
694
9edb7c07bb29 doc/High-speed-serial updated for libserial rename
Mychaela Falconia <falcon@freecalypso.org>
parents: 258
diff changeset
112 which "magically" remap them, you should be able to use libserial-posix. You
258
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
694
9edb7c07bb29 doc/High-speed-serial updated for libserial rename
Mychaela Falconia <falcon@freecalypso.org>
parents: 258
diff changeset
114 libserial-posix/baudtab.c if you don't need these high baud rates and your
258
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.