comparison doc/Modem-configs @ 507:0582d1267e16

doc/Modem-configs: hybrid-gpf documented
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 25 Jun 2018 05:34:57 +0000
parents c433cca731a3
children 39a226a06196
comparison
equal deleted inserted replaced
506:be7731ddf4e8 507:0582d1267e16
2 ==================== 2 ====================
3 3
4 If you would like to build our Magnetite firmware for the Standard Modem 4 If you would like to build our Magnetite firmware for the Standard Modem
5 functionality (voice, SMS, CSD, fax and GPRS services enabled, control via AT 5 functionality (voice, SMS, CSD, fax and GPRS services enabled, control via AT
6 commands, no UI, two UARTs are expected to be available for the AT command 6 commands, no UI, two UARTs are expected to be available for the AT command
7 interface and for the RVTMUX binary packet interface), you have 3 specific 7 interface and for the RVTMUX binary packet interface), you have 4 specific
8 configurations to choose from, differing in the level of deblobbing: 8 configurations to choose from, differing in the level of deblobbing:
9 9
10 classic This configuration replicates classic TCS211, just like 10 classic This configuration replicates classic TCS211, just like
11 leo2moko from 2013. Almost all of the original binary blob 11 leo2moko from 2013. Almost all of the original binary blob
12 libraries are used; the only components that are recompiled 12 libraries are used; the only components that are recompiled
19 reconstructed source, and the same is done for the system 19 reconstructed source, and the same is done for the system
20 initialization code in main.lib. The entire chipsetsw division 20 initialization code in main.lib. The entire chipsetsw division
21 of the firmware (now in src/cs) is thus recompiled from source, 21 of the firmware (now in src/cs) is thus recompiled from source,
22 either original or reconstructed, and the only components that 22 either original or reconstructed, and the only components that
23 are used as blobs are the G23M PS, GPF and Nucleus. This 23 are used as blobs are the G23M PS, GPF and Nucleus. This
24 config can be built for all targets. 24 config can be built for all targets except c11x.
25 25
26 hybrid This configuration is a TCS2/TCS3 hybrid. Instead of using the 26 hybrid This configuration is a TCS2/TCS3 hybrid. Instead of using the
27 TCS211 version of the G23M protocol stack which we got only as 27 TCS211 version of the G23M protocol stack which we got only as
28 binary blobs, this config uses the G23M PS version from the 28 binary blobs, this config uses the G23M PS version from the
29 TCS3.2/LoCosto source, backported to work with L1 and the fw 29 TCS3.2/LoCosto source, backported to work with L1 and the fw
30 foundation layers from TCS211. ACI also had to be replaced with 30 foundation layers from TCS211. ACI also had to be replaced with
31 the TCS3 version, and a special hybrid version of the cdginc 31 the TCS3 version, and a special hybrid version of the cdginc
32 headers had to be constructed. L1 and the init code are also 32 headers had to be constructed. L1 and the init code are also
33 deblobbed as in l1reconst. Like l1reconst, this config can be 33 deblobbed as in l1reconst. Like l1reconst, this config can be
34 built for all targets, and it is currently the most deblobbed 34 built for all targets except c11x.
35 (closest to full source) Magnetite config: the only remaining
36 blobs are GPF and Nucleus.
37 35
38 All 3 of the above configurations have CSD, fax and GPRS enabled; this 36 hybrid-gpf This configuration is just like the regular hybrid config, but
37 GPF libraries are recompiled from source along with the rest of
38 the fw. For some parts of GPF (OSL and OSX components) no
39 original source could be found, thus the source we are using
40 has been reconstructed from disassembly.
41
42 All 4 of the above configurations have CSD, fax and GPRS enabled; this
39 functionality can only be exercised on those hardware targets on which both 43 functionality can only be exercised on those hardware targets on which both
40 Calypso UARTs are brought out, with the MODEM UART presenting a standard ASCII 44 Calypso UARTs are brought out, with the MODEM UART presenting a standard ASCII
41 AT command interface including data functions, while the IrDA UART carries the 45 AT command interface including data functions, while the IrDA UART carries the
42 RVTMUX interface for debug trace and other development functions. If you are 46 RVTMUX interface for debug trace and other development functions. If you are
43 interacting with your Calypso target modem or pseudo-modem solely through 47 interacting with your Calypso target modem or pseudo-modem solely through
69 using exactly the same modem hardware and firmware that worked flawlessly for 73 using exactly the same modem hardware and firmware that worked flawlessly for
70 CSD several years earlier, which makes it extremely difficult to test CSD calls 74 CSD several years earlier, which makes it extremely difficult to test CSD calls
71 with new firmware - but I finally succeeded in making a CSD call from an FCDEV3B 75 with new firmware - but I finally succeeded in making a CSD call from an FCDEV3B
72 running FC Magnetite hybrid on 2018-06-21, proving that the new hybrid fw is 76 running FC Magnetite hybrid on 2018-06-21, proving that the new hybrid fw is
73 good for CSD functionality in addition to the better-tested voice, SMS and GPRS. 77 good for CSD functionality in addition to the better-tested voice, SMS and GPRS.
78
79 When exercising our hybrid firmware in a production or semi-production setting,
80 you should use the regular hybrid config for now, not hybrid-gpf. GPF contains
81 a sublayer called OSL (OS Adaptation Layer), a glue layer between GPF and
82 Nucleus, and we got absolutely no source for it, only binary objects. The new
83 hybrid-gpf config uses a reconstructed source for OSL (reconstructed from
84 disassembly), same as our earlier Citrine firmware, and it is intended to serve
85 as the basis for the planned new FreeCalypso Selenite fw project. There is a
86 lot of code in OSL, the reconstruction from disassembly has been a significant
87 work, and there are a few issues with the reconstructed source:
88
89 * The reconstruction was really a process of writing new C code that matches
90 the logic found in the disassembly of the original, and in some places this
91 new C code was written with gcc in mind. Recompilation of this code with
92 TI's proprietary TMS470 compiler may not be fully trustworthy.
93
94 * An error handling function called os_SystemError() is currently stubbed out:
95 reconstructing its original logic from disassembly is quite difficult, so it
96 being deferred for now.
97
98 * Given the complexity, some of the logic may have been reconstructed
99 incorrectly, thus extensive testing will be needed.