view README @ 150:d43dadd91383

l1_small_asm.S for gcc: same change as in l1_small.c TMS470 version
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 06 Feb 2019 23:28:49 +0000
parents ee67197fd2e5
children 9b49f18d3221
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.

* 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 allocating my time toward that work because I see other directions
within the greater FreeCalypso family of projects as being more important.
Specifically, I see the following as much higher priorities compared to
gcc-built firmware:

* Getting our FCDEV3B V2 boards made to prove my proposed fix for the sleep
  mode bug, and if they work as expected, we'll need to make more FreeCalypso
  modem hw in various form factors and put that hw into the hands of end users.
  Software or firmware without hardware to run it on is useless no matter how
  good or how free/libre it is, hence it makes no sense to me to worry whether
  our fw is built with gcc or with TI's TMS470 compiler until the hardware
  that's needed to run it is made in greater volume and placed into the hands
  of people who would appreciate it.

* Getting the digital voice channel over MCSI working, which is a prerequisite
  before we can repackage our FreeCalypso modem into a module form factor which
  could then be marketed to communities like Neo900 and Librem 5 as a drop-in
  replacement for the 100% closed and proprietary modem modules they use
  currently.

* Building our long-planned FreeCalypso Libre Dumbphone hardware, so we can
  have a complete phone without needing someone else like Neo900 or Librem 5 or
  ZeroPhone to provide an application processor front-end to our modem.

Anyone else who feels that whipping the gcc-built fw version into shape should
be a higher priority has two options: either do the work themselves (the code
is free for everyone), or pay Falconia Partners LLC to elevate the priority of
this gcc-built fw work.