FreeCalypso > hg > freecalypso-tools
comparison doc/RVTMUX @ 429:05dc91d011a6
doc/RVTMUX: updated for the current state of FreeCalypso
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sat, 03 Nov 2018 05:51:17 +0000 |
| parents | ac49d8814893 |
| children | 06442f27b144 |
comparison
equal
deleted
inserted
replaced
| 428:2beb5bae0796 | 429:05dc91d011a6 |
|---|---|
| 114 RVTMUX serial channel, an external host can examine or modify any memory | 114 RVTMUX serial channel, an external host can examine or modify any memory |
| 115 location and any hardware register, cause the device to reset, etc. Prior to | 115 location and any hardware register, cause the device to reset, etc. Prior to |
| 116 ETM some of these functions (but not all) could be exercised through older TM3 | 116 ETM some of these functions (but not all) could be exercised through older TM3 |
| 117 commands, but in FreeCalypso we became familiar with the ETM versions of these | 117 commands, but in FreeCalypso we became familiar with the ETM versions of these |
| 118 commands long before the older ones because we got the ETM component in full | 118 commands long before the older ones because we got the ETM component in full |
| 119 source form, whereas our copy of TCS211 (TI's reference fw) has L1TM in a | 119 source form, whereas the sole surviving copy of TCS211 that serves as our golden |
| 120 binary library. | 120 reference came with L1TM in binary object form like the rest of L1, and we got |
| 121 | 121 to source-reconstructing it only much later. |
| 122 Our TCS211/leo2moko reference fw has both ETM and L1TM, thus it accepts both | 122 |
| 123 ETM and TM3 command packets. ETM commands (including TMFFS2, see below) work | 123 Our TCS211 reference fw has both ETM and L1TM, thus it accepts both ETM and TM3 |
| 124 on Pirelli's fw, but Mot/Compal's original fw for the C139 has only the | 124 command packets; the same holds for our current production firmwares that are |
| 125 based on this TCS211 reference. ETM commands (including TMFFS2, see below) also | |
| 126 work on Pirelli's fw, but Mot/Compal's original fw for the C139 has only the | |
| 125 original non-enhanced Test Mode, not ETM. | 127 original non-enhanced Test Mode, not ETM. |
| 126 | 128 |
| 127 FFS access via TM/ETM | 129 FFS access via TM/ETM |
| 128 ===================== | 130 ===================== |
| 129 | 131 |
| 148 packets), but it is pretty clear that TI never intended to have both enabled | 150 packets), but it is pretty clear that TI never intended to have both enabled |
| 149 at the same time. Our copy of TCS211 came with TMFFS1 enabled and we didn't | 151 at the same time. Our copy of TCS211 came with TMFFS1 enabled and we didn't |
| 150 change it when we made the moko12 (leo2moko-r1) fw release for the Openmoko | 152 change it when we made the moko12 (leo2moko-r1) fw release for the Openmoko |
| 151 community (the previous proprietary mokoN firmwares also implement TMFFS1), | 153 community (the previous proprietary mokoN firmwares also implement TMFFS1), |
| 152 but we have subsequently switched to TMFFS2 for our current TCS211-based work. | 154 but we have subsequently switched to TMFFS2 for our current TCS211-based work. |
| 155 Our current production firmwares implement TMFFS2. | |
| 153 | 156 |
| 154 Pirelli's fw implements TMFFS2: we don't have any source for this fw, but our | 157 Pirelli's fw implements TMFFS2: we don't have any source for this fw, but our |
| 155 FreeCalypso host utilities written to talk the TMFFS2 protocol based on our | 158 FreeCalypso host utilities written to talk the TMFFS2 protocol based on our |
| 156 available TCS211 source work beautifully when run against Pirelli's fw. | 159 available TCS211 source work beautifully when run against Pirelli's fw. |
| 157 | 160 |
| 158 Use in FreeCalypso | 161 Use in FreeCalypso |
| 159 ================== | 162 ================== |
| 160 | 163 |
| 161 The FreeCalypso project has adopted the same general firmware architecture as | 164 Our current production firmwares for FreeCalypso modems faithfully follow the |
| 162 that exhibited by TI's standard firmwares from the Moko/Pirelli time frame. We | 165 architecture of TI's TCS211 without any fundamental changes. Thus the |
| 163 use TI's RiViera framework lifted directly out of the TCS211 reference fw, and | 166 functionality which we present via RVTMUX is exactly the same as TI's original: |
| 164 that includes the RVT module and the RVTMUX interface it presents. Our GSM fw | 167 our firmwares emit the same 3 kinds of debug traces (RV, L1 and GPF) as various |
| 165 emits the same 3 kinds of debug traces (RV, L1 and GPF) as the pre-existing | 168 pre-existing ones, and for Test Mode functionality we have ETM, L1TM and TMFFS2. |
| 166 firmwares with which we are seeking functional parity, and for Test Mode | |
| 167 functionality we have the option of including ETM, TMFFS1 and/or TMFFS2 in our | |
| 168 firmware builds. (Both TMFFS versions require ETM in our implementation, and | |
| 169 it is possible to build a firmware image with both included.) | |
| 170 | 169 |
| 171 We have adopted ETM and TMFFS2 as the standard combination for FreeCalypso, | 170 We have adopted ETM and TMFFS2 as the standard combination for FreeCalypso, |
| 172 i.e., ETM_CORE for memory and ABB register reads and writes and TMFFS2 for | 171 i.e., ETM_CORE for memory and ABB register reads and writes and TMFFS2 for |
| 173 external FFS access. We needed to develop our own host tools for operating on | 172 external FFS access. We needed to develop our own host tools for operating on |
| 174 GSM device FFS via one of the two TMFFS protocols, and after studying the fw | 173 GSM device FFS via one of the two TMFFS protocols, and after studying the fw |
| 210 system of a GSM device. It operates synchronously, i.e., it | 209 system of a GSM device. It operates synchronously, i.e., it |
| 211 sends ETM/TMFFS2 commands and expects responses in strict | 210 sends ETM/TMFFS2 commands and expects responses in strict |
| 212 lock-step; a single user command may translate into a large | 211 lock-step; a single user command may translate into a large |
| 213 number of ETM/TMFFS2 command packet exchanges. | 212 number of ETM/TMFFS2 command packet exchanges. |
| 214 | 213 |
| 214 fc-shell This tool is asynchronous like fc-tmsh, but instead of talking | |
| 215 and listening on the TM/ETM RVTMUX channel, it talks and listens | |
| 216 on GPF's channel and on the new AT-over-RVTMUX channel which we | |
| 217 added in FreeCalypso. fc-shell can be used to issue system | |
| 218 primitive commands to GPF (and to see firmware responses to | |
| 219 them), and to talk AT commands via RVTMUX. | |
| 220 | |
| 215 AT commands over RVTMUX | 221 AT commands over RVTMUX |
| 216 ======================= | 222 ======================= |
| 217 | 223 |
| 218 There is one more use to which we put the RVTMUX debug serial interface that is | 224 There is one more use to which we put the RVTMUX debug serial interface that is |
| 219 an original FreeCalypso invention: communicating with the AT command interpreter | 225 an original FreeCalypso invention: communicating with the AT command interpreter |
| 221 standard AT command interface (the product is either a GSM/GPRS modem for which | 227 standard AT command interface (the product is either a GSM/GPRS modem for which |
| 222 this AT command interface is the sole mode of usage or a feature phone that | 228 this AT command interface is the sole mode of usage or a feature phone that |
| 223 offers a data port as one of its features), then it will be presented on a | 229 offers a data port as one of its features), then it will be presented on a |
| 224 dedicated UART separate from RVTMUX. | 230 dedicated UART separate from RVTMUX. |
| 225 | 231 |
| 226 However, many of our target devices have only one UART practically accessible, | 232 However, in the case of our FreeCalypso family of projects about 2 years had |
| 227 and even when we use Openmoko's modem as our development platform, the RVTMUX | 233 passed between our first functional GSM fw attempts in 2015 and us successfully |
| 228 interface is more convenient because it connects externally, whereas the MODEM | 234 building our own development board in 2017; during this time we had to work on |
| 229 UART is connected to the application processor of the smartphone. Therefore, | 235 various crippled pre-existing Calypso devices, and many of them had only one |
| 230 we developed a way to pass AT commands over RVTMUX. We created a new RVTMUX | 236 UART practically accessible. In response to this situation we developed a way |
| 231 channel for this interface and assigned it RVT packet type 0x1A. Packets sent | 237 to pass AT commands over RVTMUX. We created a new RVTMUX channel for this |
| 232 from an external host to the GSM device carry AT commands and SMS string input, | 238 interface and assigned it RVT packet type 0x1A. Packets sent from an external |
| 233 whereas packets flowing the other way carry ATI's responses to commands and | 239 host to the GSM device carry AT commands and SMS string input, whereas packets |
| 234 asynchronous notifications such as incoming calls. | 240 flowing the other way carry ATI's responses to commands and asynchronous |
| 235 | 241 notifications such as incoming calls. The host utility for talking AT commands |
| 236 The host utility for talking AT commands to a FreeCalypso GSM device via RVTMUX | 242 to a FreeCalypso GSM device via RVTMUX is fc-shell, described above. |
| 237 is fc-shell; it works via rvinterf just like fc-fsio and fc-tmsh. | 243 |
| 244 Now that we have built a proper FreeCalypso development board with two UARTs, | |
| 245 the use of this AT-over-RVTMUX hack is deprecated for general usage: this hack | |
| 246 does not support any data services (CSD or GPRS), and even for SMS it is | |
| 247 crippled because maximum-length messages cannot be sent in the more capable PDU | |
| 248 mode. However, it still comes in handy during certain casual testing sessions, | |
| 249 and it is required if one needs to run our FreeCalypso firmware on Mot C1xx or | |
| 250 Pirelli DP-L10 hardware. | |
| 238 | 251 |
| 239 Keepalive mechanism | 252 Keepalive mechanism |
| 240 =================== | 253 =================== |
| 241 | 254 |
| 242 Another FreeCalypso addition to TI's RVTMUX interface is our optional keepalive | 255 Another FreeCalypso addition to TI's RVTMUX interface is our keepalive mechanism |
| 243 mechanism. The FreeCalypso family includes many subprojects, and one of these | 256 for the voice pseudo-modem hack on Mot C1xx targets. The FreeCalypso family |
| 244 subprojects involves running modem-like firmware (control via AT commands only, | 257 includes many subprojects, and one of these subprojects involves running modem- |
| 245 no local UI) on Mot C1xx phones. Having a device that was originally made to | 258 like firmware (control via AT commands only, no local UI) on Mot C1xx phones. |
| 246 be a phone with LCD and buttons turn into a serially-controlled pseudo-modem | 259 Having a device that was originally made to be a phone with LCD and buttons |
| 247 (LCD stays dark, buttons do nothing) feels quite weird, and this situation is | 260 turn into a serially-controlled pseudo-modem (LCD stays dark, buttons do |
| 248 exacerbated on low-end Mot C1xx models that have small RAM and thus require our | 261 nothing) feels quite weird, and this situation is exacerbated by the flashing |
| 249 pseudo-modem fw to be flashed. | 262 requirement: the only way to run our pseudo-modem fw on Mot C1xx phones is to |
| 250 | 263 flash it, there is no way to run it out of RAM without disturbing the phone's |
| 251 Our optional keepalive mechanism is intended for the latter scenario. There | 264 original fw. |
| 252 will be an optional feature added to pseudo-modem fw builds for C1xx targets | 265 |
| 253 (not yet implemented as of this writing) to have the firmware send periodic | 266 When our Magnetite and Selenite firmwares are built for a C1xx target in the |
| 254 keepalive queries out the serial port, to see if there is a running rvinterf | 267 VPM configuration, they implement the following keepalive logic: if the phone |
| 255 process on the other end of the wire, and automatically power off if there is | 268 is powered on and running our fw, but the charging power source is not plugged |
| 256 no keepalive response. | 269 in, the fw sends periodic keepalive queries out the serial port to see if there |
| 270 is a running rvinterf process on the other end of the wire, and automatically | |
| 271 powers off if there is no keepalive response. | |
| 257 | 272 |
| 258 Code has been added to rvinterf to respond with a keepalive answer packet when | 273 Code has been added to rvinterf to respond with a keepalive answer packet when |
| 259 a keepalive query packet is received; the feature has been implemented on the | 274 a keepalive query packet is received; the feature has been implemented on the |
| 260 rvinterf side ahead of the target fw so that when and if we do get around to | 275 rvinterf side first, and then subsequently in our Magnetite fw for C1xx targets. |
| 261 implementing the target side, the necessary rvinterf support will be there | |
| 262 waiting for us. |
