FreeCalypso > hg > freecalypso-sw
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. |
