annotate doc/Modem-configs @ 556:39a226a06196

documentation update for rebuilding the easy parts of GPF from source
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 19 Nov 2018 02:00:21 +0000
parents 0582d1267e16
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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: 312
diff 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: 312
diff 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: 312
diff 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: 486
diff 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: 312
diff 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: 375
diff 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: 252
diff 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: 252
diff 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: 252
diff 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: 252
diff changeset
20 initialization code in main.lib. The entire chipsetsw division
e60d7a32ae2a doc/Modem-configs: deblobbing status update
Mychaela Falconia <falcon@freecalypso.org>
parents: 252
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff changeset
44 from disassembly - see below for the issues.
507
0582d1267e16 doc/Modem-configs: hybrid-gpf documented
Mychaela Falconia <falcon@freecalypso.org>
parents: 486
diff changeset
45
0582d1267e16 doc/Modem-configs: hybrid-gpf documented
Mychaela Falconia <falcon@freecalypso.org>
parents: 486
diff 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: 238
diff 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: 238
diff 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: 238
diff 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: 238
diff 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: 238
diff 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: 238
diff 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: 238
diff 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: 238
diff changeset
54 weight.
1811c418461b doc/Modem-configs update: FCDEV3B is here, no specific plans for hybrid work
Mychaela Falconia <falcon@freecalypso.org>
parents: 238
diff changeset
55
375
e80e43185ca1 doc/Modem-configs update: we now have both Standard Modem and VPM
Mychaela Falconia <falcon@freecalypso.org>
parents: 312
diff 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: 312
diff 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: 312
diff 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: 312
diff 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: 459
diff 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: 459
diff 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: 459
diff 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: 459
diff 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: 459
diff 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: 459
diff 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: 459
diff 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: 459
diff 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: 459
diff 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: 459
diff 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: 459
diff 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: 459
diff 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: 486
diff changeset
82
0582d1267e16 doc/Modem-configs: hybrid-gpf documented
Mychaela Falconia <falcon@freecalypso.org>
parents: 486
diff 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: 507
diff 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: 486
diff 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: 486
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 507
diff 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: 486
diff changeset
92
0582d1267e16 doc/Modem-configs: hybrid-gpf documented
Mychaela Falconia <falcon@freecalypso.org>
parents: 486
diff 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: 486
diff 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: 486
diff 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: 486
diff 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: 486
diff changeset
97
0582d1267e16 doc/Modem-configs: hybrid-gpf documented
Mychaela Falconia <falcon@freecalypso.org>
parents: 486
diff 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: 486
diff 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: 507
diff changeset
100 is deferred for now.
507
0582d1267e16 doc/Modem-configs: hybrid-gpf documented
Mychaela Falconia <falcon@freecalypso.org>
parents: 486
diff changeset
101
0582d1267e16 doc/Modem-configs: hybrid-gpf documented
Mychaela Falconia <falcon@freecalypso.org>
parents: 486
diff 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: 486
diff changeset
103 incorrectly, thus extensive testing will be needed.