view README @ 187:d05fb947b50d

src/cs: sync with Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 15 Feb 2020 20:23:30 +0000
parents d9926aabf13f
children
line wrap: on
line source

FreeCalypso Selenite is an experimental side branch off the mainline FC
Magnetite firmware.  The principal changes from Magnetite are:

* Only modem functionality is supported.  FC Magnetite includes TI's C-Sample
  and D-Sample demo/prototype UI code and work in progress toward our own
  FreeCalypso Libre Dumbphone; this code is not included and this functionality
  is explicitly unsupported in Selenite.

* Only the hybrid modem configuration is supported, using the new G23M PS and
  ACI code from TCS3.2/LoCosto, not any of the legacy configurations that used
  the blob-laden version from TCS211-20070608.

* Only the "new" Calypso+RF chipset is supported, i.e., Calypso C035, DSP ROM
  version 36, Rita RF - no support for historical Calypso silicon versions or
  older RF chips.

* The old version of Nucleus used in TI's TCS211 program (binary sans source)
  has been replaced with FreeNucleus by XVilka.  OSL (GPF to Nucleus glue layer)
  is the source-reconstructed version.

* The tree layout and the build system are structured in such a way that it is
  possible to build either with TI's original TMS470 compiler or with gcc.

The purpose of this Selenite fw experiment is to see what will happen if we
take our full-featured hybrid modem fw as featured in Magnetite and compile it
with gcc instead of TI's original TMS470 compiler, which also implies swapping
in the new version of Nucleus and an entirely different implementation of all
assembly components and linker script magic.  The current status is as follows:

* When built with the original TMS470 compiler, the present Selenite fw appears
  to perform no worse than Magnetite hybrid.

* It is now possible to compile the full-featured fw with gcc without disabling
  GPRS (no more crash on boot), but actually using GPRS doesn't work: pppd
  establishes the point-to-point connection to the network's GGSN and gets an
  IP address, but then trying to ping through this established connection causes
  the fw to crash.

* Voice, SMS and CSD appear to work in the gcc-built version, but this firmware
  is not as stable as Magnetite hybrid: I saw some occasional glitches which I
  did not investigate further.

Compared to FC Citrine (our previous attempt at gcc-built fw), the present
FC Selenite firmware built with gcc already offers the following:

* CSD support;

* Audio services: playing beeps and melodies through the DSP;

* Newer code: FC Selenite branched off Magnetite in 2018-07 and is being
  periodically synced with new Magnetite developments, whereas FC Citrine
  has been unmaintained since 2016-10.

Because FC Selenite gcc already does everything that FC Citrine could do and
more, and is no less free, FC Citrine is now officially fully retired.

As the next step, someone needs to do the work of tracking down and debugging
all of the issues seen in the gcc-built version, and make it work as well as
the original TMS470-built configuration.  However, I (Mother Mychaela) am not
currently willing to work in that direction until and unless we recover some
original authentic versions of os_???.c and osx.c modules - the reconstructions
from 2014 which are used in the present FC Selenite experimental source tree
(same as Citrine) aren't good enough.