comparison README @ 1000:36e3f6bf0156

top README: just describe what each subtree is for, and refer to other docs
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Sun, 06 Mar 2016 21:38:21 +0000
parents e8bdd3d0c4c2
children 405b5469abc4
comparison
equal deleted inserted replaced
999:0ee75fdf082f 1000:36e3f6bf0156
1 What this project is about 1 This source repository is a top-level container for all of the main software
2 ========================== 2 and firmware components developed in the FreeCalypso project.
3
4 You are looking at the software/firmware subproject of FreeCalypso. The goal
5 of this subproject is to produce a fully functional firmware version for the
6 Calypso GSM baseband chipset from Texas Instruments that is fully controlled
7 by We the People (recompilation with a free compiler from full source code
8 which is freely published and maintained by us, as opposed to a frozen
9 impenetrable binary blob from some long-defunct vendor) and which we can use in
10 two ways:
11
12 a) replace the original proprietary firmware of certain pre-existing phone
13 models based on this chipset, thereby turning these historical devices into
14 libre phones;
15
16 b) use as the official firmware for new phones and modems which we design and
17 build ourselves, using the same Calypso chipset.
18
19 Origin of the source
20 ====================
21
22 We are *not* attempting to reimplement a fully functional and practically
23 usable GSM protocol stack from scratch in this project - such a task would be
24 far beyond the capabilities of our very small and woefully underfunded team,
25 and in the opinion of project leader Space Falcon, such a from-scratch
26 reimplementation would be an egregious and morally impermissible waste of human
27 talent. Instead, we are using the L1 and G23M protocol stack code for TI's
28 LoCosto chipset that was included in the chipset.zip public release made by the
29 CEO of Peek, Inc. (the Peek mobile email device company) as that company went
30 under, and porting it from the LoCosto-based Peek platform to our Calypso target
31 devices of interest.
32
33 Where we came from
34 ==================
35
36 Just because we are reusing most components from TI's original firmware releases
37 does not mean that our project is trivial or devoid of our own original work.
38 When we started the GSM firmware subproject in the fall of 2013 (that was when
39 we obtained the last missing piece of required starting source material), the
40 available TI firmware sources consisted of:
41
42 * A TCS211 semi-src deliverable that could be compiled into a working fw image
43 for the GSM modem in the Neo Freerunner. While this version includes
44 recompilable source for most of the supporting components, the actual GSM
45 protocol stack is 100% linkable binary libraries sans source. These binary
46 object components necessitate the use of TI's proprietary compiler tools to
47 rebuild the fw. The build environment is set up for Windows only.
48
49 * The source from Peek (TCS3.2_N5.24_M18_V1.11_M23BTH_PSL1_src.zip) for TI's
50 I-Sample board with the LoCosto chipset. Mostly real source (about 95%), but
51 still has a few required components which exist only as linkable binary
52 libraries sans source. The use of TI's proprietary compiler tools is still
53 required for the same reason, and the build environment is set up to use a
54 bunch of other Windows-only tools.
55
56 * The Peek Linux project (svn.peeklinux.com) replaced the Windows-based build
57 system with a Linux-based one, but the binary-only libraries are still there,
58 hence the compiler toolchain is still the same proprietary one from TI.
59
60 The above sorry state of affairs (absolute dependency on binary object code
61 sans source, on proprietary compiler toolchains and on Windows) was very far
62 from what we sought to accomplish (compilation from full source with gcc under
63 GNU/Linux or other free Unix), hence we set out on a firmware reintegration
64 project that took a year and a half.
65
66 What we've done
67 ===============
68
69 By a process of painstaking reintegration piece by piece, we have put together
70 our own firmware suite for the Calypso that builds into a flashable or
71 RAM-loadable image and has the following essential features/qualities/
72 attributes:
73
74 * Targets Calypso rather than LoCosto. This decision is somewhat controversial,
75 i.e., one could make a valid argument that we should have gone with LoCosto
76 instead. But in our defense, we already have several pre-existing devices
77 with the Calypso chipset on which we would like to run libre firmware; as for
78 LoCosto, we don't have a hardware platform to use as a bring-up vehicle, and
79 when we started the project, we were missing a copy of some of TI's Windows
80 tools for LoCosto.
81
82 * The overall architecture of our firmware (what components are included) mimics
83 that of TCS211 (TI's official fw for Calypso platforms for which we only have
84 a semi-src): e.g., we use real RiViera rather than RV emulation atop GPF.
85 In the case of RiViera, FFS and other components for which our copy of TCS211
86 has real source, we have used that TCS211 source.
87
88 * L1 and all of G23M (including ACI, CCD and AIM/SAP definitions) are the
89 version from the LoCosto source - which has an unfortunate quality of being
90 completely untested.
91
92 * Configured for a feature set matching TCS211, i.e., most of the newer features
93 appearing in TCS3.2 are *not* enabled. The GSM protocol stack is also
94 configured for the minimal voice+SMS feature set, i.e., CSD, fax and GPRS
95 haven't been integrated or enabled yet.
96
97 * Everything builds from full source with gcc, i.e., *nothing* is used in the
98 form of a precompiled binary object or library. Some parts of GPF, L1 and
99 system initialization code had to be reconstructed from disassembly of TCS211
100 binary objects, as no original or suitable substitute source could be found.
101
102 * The version of Nucleus we use comes from a non-TI source; all TI GSM fw
103 sources we found have their Nucleus in binary-only libs.
104
105 * To reiterate: our compiler is gcc, *not* TI's proprietary TMS470!
106
107 Current status (2015-06-30)
108 ===========================
109
110 Our current firmware can be built for two targets: Openmoko's Calypso modem
111 built into their GTA01 and GTA02 smartphones (target gtamodem) and the Pirelli
112 DP-L10 feature phone. The functionality is the same on both targets: a modem
113 or pseudo-modem controlled by AT commands (no local UI on the Pirelli), and
114 only the voice+SMS subset, i.e., no CSD, fax or GPRS yet. The firmware is able
115 to register successfully to a live commercial GSM network (using a legitimate
116 SIM of course), and SMS sending and receiving both work; all SIM interface
117 functions also work as far as we've tested them. But voice calls don't work
118 yet; making them work is our next task.
119
120 We have also produced some host tools for loading firmware into Calypso GSM
121 devices, for communicating with running firmwares over the RVTMUX interface,
122 and for manipulating TI's flash file system. See README.hosttools for the
123 details.
124
125 Source tree
126 ===========
127
128 The subtrees of this source tree are as follows: 3 The subtrees of this source tree are as follows:
129 4
130 gsm-fw The main FreeCalypso GSM firmware work, see above. 5 compal-flash-boot-for-fc
6 A patched version of Compal's flash boot code for Mot C11x/12x
7 and C139/140 families, modified to work with main fw images from
8 FreeCalypso subprojects. It is compatible with our own gsm-fw
9 and with tcs211-c139.
10
11 ffstools Here you will find tools for "in vitro" examination of FFS
12 (flash file system) images read out of TI-based GSM devices.
13 See doc/TIFFS-Overview for more information.
14
15 gsm-fw Our Calypso GSM firmware reconstruction and reintegration
16 attempt lives here; see doc/Firmware_Architecture and
17 doc/Firmware_Status for more information.
18
19 loadtools These tools allow you to load your own code into Calypso GSM
20 devices. Using these tools, you can load code into target
21 device IRAM or XRAM and run it there, as well as dump and load
22 flash. The operation of these tools is based on gaining
23 control of the target device either through the Calypso on-chip
24 boot ROM (on freedom-enabled devices), or through the
25 flash-resident boot code on the crippled Compal phones.
26
27 lcdemu fc-lcdemu is built here.
28
29 miscutil fc-rgbconv, fc-serterm and imei-luhn are built here.
30
31 rvinterf In common with TI's original fw, FreeCalypso GSM fw implements
32 the so-called RiViera serial MUX, which is a binary packet
33 protocol for multiplexing many kinds of debug and development
34 traffic over just one available physical serial port. This
35 rvinterf directory contains our suite of tools for connecting
36 to this RV serial interface, supporting both our own gsm-fw as
37 well as some existing proprietary firmwares to the extent to
38 which they are compatible.
131 39
132 target-utils This tree contains code that runs on Calypso targets, but is 40 target-utils This tree contains code that runs on Calypso targets, but is
133 not regular firmware (gsm-fw) or a part thereof. The two key 41 not regular firmware (gsm-fw) or a part thereof. The two key
134 components built in this tree are loadagent (needed for all 42 components built in this tree are loadagent (needed for all
135 targets) and compalstage (for Compal phones only), which need 43 targets) and compalstage (for Compal phones only), which need
136 to be installed on the user's host system in order for 44 to be installed on the user's host system in order for
137 loadtools (see README.hosttools) to do their job. 45 loadtools (see above) to do their job.
138
139 ffstools Tools that run on a Unix or GNU/Linux host; see README.hosttools
140 loadtools for the details.
141 miscutil
142 rvinterf
143 46
144 toolchain Scripts and patches for building the gcc+binutils toolchain 47 toolchain Scripts and patches for building the gcc+binutils toolchain
145 targeting ARM7, the CPU core of the Calypso GSM/GPRS baseband 48 targeting ARM7, the CPU core of the Calypso GSM/GPRS baseband
146 processor. You'll need to build and install this toolchain 49 processor. You'll need to build and install this toolchain
147 first before you can build gsm-fw or target-utils. 50 first before you can build gsm-fw or target-utils.