changeset 507:0582d1267e16

doc/Modem-configs: hybrid-gpf documented
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 25 Jun 2018 05:34:57 +0000
parents be7731ddf4e8
children 61f878c011b0
files doc/Modem-configs
diffstat 1 files changed, 32 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/doc/Modem-configs	Mon Jun 25 02:57:46 2018 +0000
+++ b/doc/Modem-configs	Mon Jun 25 05:34:57 2018 +0000
@@ -4,7 +4,7 @@
 If you would like to build our Magnetite firmware for the Standard Modem
 functionality (voice, SMS, CSD, fax and GPRS services enabled, control via AT
 commands, no UI, two UARTs are expected to be available for the AT command
-interface and for the RVTMUX binary packet interface), you have 3 specific
+interface and for the RVTMUX binary packet interface), you have 4 specific
 configurations to choose from, differing in the level of deblobbing:
 
 classic		This configuration replicates classic TCS211, just like
@@ -21,7 +21,7 @@
 		of the firmware (now in src/cs) is thus recompiled from source,
 		either original or reconstructed, and the only components that
 		are used as blobs are the G23M PS, GPF and Nucleus.  This
-		config can be built for all targets.
+		config can be built for all targets except c11x.
 
 hybrid		This configuration is a TCS2/TCS3 hybrid.  Instead of using the
 		TCS211 version of the G23M protocol stack which we got only as
@@ -31,11 +31,15 @@
 		the TCS3 version, and a special hybrid version of the cdginc
 		headers had to be constructed.  L1 and the init code are also
 		deblobbed as in l1reconst.  Like l1reconst, this config can be
-		built for all targets, and it is currently the most deblobbed
-		(closest to full source) Magnetite config: the only remaining
-		blobs are GPF and Nucleus.
+		built for all targets except c11x.
 
-All 3 of the above configurations have CSD, fax and GPRS enabled; this
+hybrid-gpf	This configuration is just like the regular hybrid config, but
+		GPF libraries are recompiled from source along with the rest of
+		the fw.  For some parts of GPF (OSL and OSX components) no
+		original source could be found, thus the source we are using
+		has been reconstructed from disassembly.
+
+All 4 of the above configurations have CSD, fax and GPRS enabled; this
 functionality can only be exercised on those hardware targets on which both
 Calypso UARTs are brought out, with the MODEM UART presenting a standard ASCII
 AT command interface including data functions, while the IrDA UART carries the
@@ -71,3 +75,25 @@
 with new firmware - but I finally succeeded in making a CSD call from an FCDEV3B
 running FC Magnetite hybrid on 2018-06-21, proving that the new hybrid fw is
 good for CSD functionality in addition to the better-tested voice, SMS and GPRS.
+
+When exercising our hybrid firmware in a production or semi-production setting,
+you should use the regular hybrid config for now, not hybrid-gpf.  GPF contains
+a sublayer called OSL (OS Adaptation Layer), a glue layer between GPF and
+Nucleus, and we got absolutely no source for it, only binary objects.  The new
+hybrid-gpf config uses a reconstructed source for OSL (reconstructed from
+disassembly), same as our earlier Citrine firmware, and it is intended to serve
+as the basis for the planned new FreeCalypso Selenite fw project.  There is a
+lot of code in OSL, the reconstruction from disassembly has been a significant
+work, and there are a few issues with the reconstructed source:
+
+* The reconstruction was really a process of writing new C code that matches
+  the logic found in the disassembly of the original, and in some places this
+  new C code was written with gcc in mind.  Recompilation of this code with
+  TI's proprietary TMS470 compiler may not be fully trustworthy.
+
+* An error handling function called os_SystemError() is currently stubbed out:
+  reconstructing its original logic from disassembly is quite difficult, so it
+  being deferred for now.
+
+* Given the complexity, some of the logic may have been reconstructed
+  incorrectly, thus extensive testing will be needed.