FreeCalypso > hg > fc-magnetite
annotate doc/Modem-configs @ 574:41b6a18ffa0b
GPF rebuild from source: symlink magic to fix __FILE__
With this fix all of the core GPF libraries (frame_*, misc_* and tif_*)
compile into objects that perfectly match the original TCS211 binary
versions bit for bit.  Prior to this fix there was an issue with TI's use
of __FILE__ expanding into longer pathnames that were an artifact of our
FC Magnetite build system, and it appears that these longer __FILE__
strings in GPF may have been causing some breakage in some error handling
paths.
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Thu, 24 Jan 2019 23:26:51 +0000 | 
| parents | 39a226a06196 | 
| children | 
| rev | line source | 
|---|---|
| 219 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 Modem configurations | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 ==================== | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 | 
| 375 
e80e43185ca1
doc/Modem-configs update: we now have both Standard Modem and VPM
 Mychaela Falconia <falcon@freecalypso.org> parents: 
312diff
changeset | 4 If you would like to build our Magnetite firmware for the Standard Modem | 
| 
e80e43185ca1
doc/Modem-configs update: we now have both Standard Modem and VPM
 Mychaela Falconia <falcon@freecalypso.org> parents: 
312diff
changeset | 5 functionality (voice, SMS, CSD, fax and GPRS services enabled, control via AT | 
| 
e80e43185ca1
doc/Modem-configs update: we now have both Standard Modem and VPM
 Mychaela Falconia <falcon@freecalypso.org> parents: 
312diff
changeset | 6 commands, no UI, two UARTs are expected to be available for the AT command | 
| 507 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 7 interface and for the RVTMUX binary packet interface), you have 4 specific | 
| 375 
e80e43185ca1
doc/Modem-configs update: we now have both Standard Modem and VPM
 Mychaela Falconia <falcon@freecalypso.org> parents: 
312diff
changeset | 8 configurations to choose from, differing in the level of deblobbing: | 
| 219 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 classic This configuration replicates classic TCS211, just like | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 leo2moko from 2013. Almost all of the original binary blob | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 libraries are used; the only components that are recompiled | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 from source are those which we got in source form with our copy | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 of TCS211 from Sotovik. This config can only be built for the | 
| 459 
117bf0fb1e78
doc/Modem-configs: wording change for classic config targets
 Mychaela Falconia <falcon@freecalypso.org> parents: 
375diff
changeset | 15 fcdev3b and gtamodem targets, not any others. | 
| 219 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 | 
| 312 
e60d7a32ae2a
doc/Modem-configs: deblobbing status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
252diff
changeset | 17 l1reconst In this configuration the Layer1 component of the firmware | 
| 
e60d7a32ae2a
doc/Modem-configs: deblobbing status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
252diff
changeset | 18 (which came as a blob in our copy of TCS211) is recompiled from | 
| 
e60d7a32ae2a
doc/Modem-configs: deblobbing status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
252diff
changeset | 19 reconstructed source, and the same is done for the system | 
| 
e60d7a32ae2a
doc/Modem-configs: deblobbing status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
252diff
changeset | 20 initialization code in main.lib. The entire chipsetsw division | 
| 
e60d7a32ae2a
doc/Modem-configs: deblobbing status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
252diff
changeset | 21 of the firmware (now in src/cs) is thus recompiled from source, | 
| 556 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 22 either original or reconstructed, and those parts of GPF for | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 23 which we have found matching sources are recompiled from those | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 24 sources as well. The only components that are used as blobs | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 25 are the G23M PS, CCD and ccddata, OSL and OSX (glue parts of | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 26 GPF) and Nucleus. This config can be built for all targets | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 27 except c11x. | 
| 219 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 hybrid This configuration is a TCS2/TCS3 hybrid. Instead of using the | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 TCS211 version of the G23M protocol stack which we got only as | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 binary blobs, this config uses the G23M PS version from the | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 TCS3.2/LoCosto source, backported to work with L1 and the fw | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 foundation layers from TCS211. ACI also had to be replaced with | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 the TCS3 version, and a special hybrid version of the cdginc | 
| 556 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 35 headers had to be constructed, giving us blob-free CCD and | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 36 ccddata. L1, the init code and the easy parts of GPF are also | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 37 deblobbed as in l1reconst. Only Nucleus, OSL and OSX remain as | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 38 blobs. Like l1reconst, this config can be built for all targets | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 39 except c11x. | 
| 219 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 | 
| 556 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 41 hybrid-osl This configuration is just like the regular hybrid config, but | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 42 all of GPF is recompiled from source, including OSL and OSX glue | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 43 layers. The source for these components has been reconstructed | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 44 from disassembly - see below for the issues. | 
| 507 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 45 | 
| 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 46 All 4 of the above configurations have CSD, fax and GPRS enabled; this | 
| 252 
1811c418461b
doc/Modem-configs update: FCDEV3B is here, no specific plans for hybrid work
 Mychaela Falconia <falcon@freecalypso.org> parents: 
238diff
changeset | 47 functionality can only be exercised on those hardware targets on which both | 
| 
1811c418461b
doc/Modem-configs update: FCDEV3B is here, no specific plans for hybrid work
 Mychaela Falconia <falcon@freecalypso.org> parents: 
238diff
changeset | 48 Calypso UARTs are brought out, with the MODEM UART presenting a standard ASCII | 
| 
1811c418461b
doc/Modem-configs update: FCDEV3B is here, no specific plans for hybrid work
 Mychaela Falconia <falcon@freecalypso.org> parents: 
238diff
changeset | 49 AT command interface including data functions, while the IrDA UART carries the | 
| 
1811c418461b
doc/Modem-configs update: FCDEV3B is here, no specific plans for hybrid work
 Mychaela Falconia <falcon@freecalypso.org> parents: 
238diff
changeset | 50 RVTMUX interface for debug trace and other development functions. If you are | 
| 
1811c418461b
doc/Modem-configs update: FCDEV3B is here, no specific plans for hybrid work
 Mychaela Falconia <falcon@freecalypso.org> parents: 
238diff
changeset | 51 interacting with your Calypso target modem or pseudo-modem solely through | 
| 
1811c418461b
doc/Modem-configs update: FCDEV3B is here, no specific plans for hybrid work
 Mychaela Falconia <falcon@freecalypso.org> parents: 
238diff
changeset | 52 RVTMUX, without access to the ASCII AT command interface on the dedicated MODEM | 
| 
1811c418461b
doc/Modem-configs update: FCDEV3B is here, no specific plans for hybrid work
 Mychaela Falconia <falcon@freecalypso.org> parents: 
238diff
changeset | 53 UART, then the data functions of the firmware are inaccessible and act as dead | 
| 
1811c418461b
doc/Modem-configs update: FCDEV3B is here, no specific plans for hybrid work
 Mychaela Falconia <falcon@freecalypso.org> parents: 
238diff
changeset | 54 weight. | 
| 
1811c418461b
doc/Modem-configs update: FCDEV3B is here, no specific plans for hybrid work
 Mychaela Falconia <falcon@freecalypso.org> parents: 
238diff
changeset | 55 | 
| 375 
e80e43185ca1
doc/Modem-configs update: we now have both Standard Modem and VPM
 Mychaela Falconia <falcon@freecalypso.org> parents: 
312diff
changeset | 56 Having fully deblobbed all of L1, we now have the ability to build our hybrid | 
| 
e80e43185ca1
doc/Modem-configs update: we now have both Standard Modem and VPM
 Mychaela Falconia <falcon@freecalypso.org> parents: 
312diff
changeset | 57 firmware not only for the Standard Modem functionality with all data services | 
| 
e80e43185ca1
doc/Modem-configs update: we now have both Standard Modem and VPM
 Mychaela Falconia <falcon@freecalypso.org> parents: 
312diff
changeset | 58 enabled as above, but also in a stripped-down "voice pseudo-modem" | 
| 
e80e43185ca1
doc/Modem-configs update: we now have both Standard Modem and VPM
 Mychaela Falconia <falcon@freecalypso.org> parents: 
312diff
changeset | 59 configuration - see the Voice-pseudo-modem article. | 
| 219 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 The deblobbing of L1 has been done in a very meticulous manner, ensuring that | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 each individual reconstructed C module compiles into a strict functional | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 equivalent of the original binary blob, sometimes even matching bit for bit - | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 thus no regressions are expected with the classic->l1reconst transition, and no | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 extensive testing is deemed necessary beyond the basic tests that have already | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 been done. However, the transition from l1reconst to hybrid involves wholesale | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 replacement of two major firmware components (G23M PS and ACI) and some | 
| 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 important associated support pieces with entirely different versions from a | 
| 486 
c433cca731a3
doc/Modem-configs: hybrid fw status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
459diff
changeset | 69 different TI program, hence it can certainly benefit from more thorough testing. | 
| 219 
b05dba024f95
doc/Handset-configs and doc/Modem-configs written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 | 
| 486 
c433cca731a3
doc/Modem-configs: hybrid fw status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
459diff
changeset | 71 So far the most-deblobbed hybrid config looks very promising: voice, SMS and | 
| 
c433cca731a3
doc/Modem-configs: hybrid fw status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
459diff
changeset | 72 GPRS work perfectly in my (Mother Mychaela's) lab environment, and even CSD has | 
| 
c433cca731a3
doc/Modem-configs: hybrid fw status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
459diff
changeset | 73 finally been proven to work as well on 2018-06-21. CSD functionality has been | 
| 
c433cca731a3
doc/Modem-configs: hybrid fw status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
459diff
changeset | 74 extremely difficult to test because it has been very unreliable lately on the | 
| 
c433cca731a3
doc/Modem-configs: hybrid fw status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
459diff
changeset | 75 network side in my geographical location (T-Mobile USA), with CSD calls failing | 
| 
c433cca731a3
doc/Modem-configs: hybrid fw status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
459diff
changeset | 76 something like 99.9% of the time with a NO CARRIER response to the ATD command, | 
| 
c433cca731a3
doc/Modem-configs: hybrid fw status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
459diff
changeset | 77 using exactly the same modem hardware and firmware that worked flawlessly for | 
| 
c433cca731a3
doc/Modem-configs: hybrid fw status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
459diff
changeset | 78 CSD several years earlier, which makes it extremely difficult to test CSD calls | 
| 
c433cca731a3
doc/Modem-configs: hybrid fw status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
459diff
changeset | 79 with new firmware - but I finally succeeded in making a CSD call from an FCDEV3B | 
| 
c433cca731a3
doc/Modem-configs: hybrid fw status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
459diff
changeset | 80 running FC Magnetite hybrid on 2018-06-21, proving that the new hybrid fw is | 
| 
c433cca731a3
doc/Modem-configs: hybrid fw status update
 Mychaela Falconia <falcon@freecalypso.org> parents: 
459diff
changeset | 81 good for CSD functionality in addition to the better-tested voice, SMS and GPRS. | 
| 507 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 82 | 
| 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 83 When exercising our hybrid firmware in a production or semi-production setting, | 
| 556 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 84 you should use the regular hybrid config for now, not hybrid-osl. GPF contains | 
| 507 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 85 a sublayer called OSL (OS Adaptation Layer), a glue layer between GPF and | 
| 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 86 Nucleus, and we got absolutely no source for it, only binary objects. The new | 
| 556 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 87 hybrid-osl config uses a reconstructed source for OSL (reconstructed from | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 88 disassembly), same as our earlier Citrine firmware, and it was introduced into | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 89 Magnetite to serve as a stepping stone toward FC Selenite. There is a lot of | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 90 code in OSL, the reconstruction from disassembly has been a significant work, | 
| 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 91 and there are a few issues with the reconstructed source: | 
| 507 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 92 | 
| 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 93 * The reconstruction was really a process of writing new C code that matches | 
| 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 94 the logic found in the disassembly of the original, and in some places this | 
| 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 95 new C code was written with gcc in mind. Recompilation of this code with | 
| 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 96 TI's proprietary TMS470 compiler may not be fully trustworthy. | 
| 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 97 | 
| 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 98 * An error handling function called os_SystemError() is currently stubbed out: | 
| 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 99 reconstructing its original logic from disassembly is quite difficult, so it | 
| 556 
39a226a06196
documentation update for rebuilding the easy parts of GPF from source
 Mychaela Falconia <falcon@freecalypso.org> parents: 
507diff
changeset | 100 is deferred for now. | 
| 507 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 101 | 
| 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 102 * Given the complexity, some of the logic may have been reconstructed | 
| 
0582d1267e16
doc/Modem-configs: hybrid-gpf documented
 Mychaela Falconia <falcon@freecalypso.org> parents: 
486diff
changeset | 103 incorrectly, thus extensive testing will be needed. | 
