view README @ 329:6d27bbc94e3c

l1p_func.c: reconstruction complete, perfect match to original TCS211 object
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 04 Oct 2017 23:05:33 +0000
parents 95f308ba55c7
children ed3e588600c1
line wrap: on
line source

This Hg repository contains a version of TI's TCS211 firmware based on our sole
available TCS211 semi-src with the L1 component almost fully deblobbed.
Specifically, we have deblobbed all of L1 with the exception of GPRS-specific
l1p_*, macs and p_tpudr12 modules - all other L1 modules are recompiled from
reconstructed C sources, producing objects that work in the place of the
original blobs - sometimes matching bit for bit, in other cases differing in
the bits, but matching in logic.  See STATUS for a detailed analysis of the
reconstruction matches and differences.

Building the firmware in this tree requires a trick because of the not-yet-
deblobbed L1_GPRS modules - see README.old for the details.  This tree only
supports the original gtamodem target; see FreeCalypso Magnetite for other
target support.

Choice of version for reconstruction
====================================

For some of the L1 objects (those packaged in l1_ext.lib and l1_int.lib) we
have two versions: the original from 20070608 (the same date as the rest of our
TCS211 semi-src) and an updated version of the l1_{ext,int}.lib set from
20080421.  To the best of our knowledge, this 20080421 update was provided by
TI-Taiwan while engaged in a wild goose chase after the infamous bug #1024,
which later turned out to be a pure hardware problem, not involving the firmware
at all.

The differences between the two versions are limited to just 3 objects:
l1_cmplx.obj and l1p_cmpl.obj in l1_ext.lib, and l1_ctl.obj in l1_int.lib.

When we were reconstructing l1_cmplx.c and l1_ctl.c from the available LoCosto
source, the reconstruction of the original 20070608 version came more easily
than the 20080421 update, and our reconstruction of these two modules matches
the 20070608 objects bit for bit.  It thus appears that whatever changes TI's
customer support group made in that 20080421 version were not on TI's internal
mainline.

Because the 20080421 L1 libs update was made for no other purpose except an
attempt to debug or fix what was erroneously believed to be a firmware problem
but turned out to be hw instead, we have every reason to believe that it does
not improve anything and is ultimately unnecessary.  And because the original
20070608 version was easier to source-reconstruct than the other, we are
adopting the original 20070608 version and our reconstruction of its C source
form as the canonical version of TCS211 L1 for FreeCalypso.

Note that because we have not source-reconstructed the GPRS-specific l1p_*
modules yet, we haven't looked at the l1p_cmpl.obj differences yet.  However,
when building a complete fw image with GPRS included using our partially
reconstructed L1, one should use the 20070608 version of the l1p_cmpl.obj blob
for consistency, like we do in FreeCalypso Magnetite.