FreeCalypso update: progress with DSP patches and voice calls

Mychaela Falconia falcon at ivan.Harhan.ORG
Sat Oct 24 09:24:34 CEST 2015

Last night I wrote:

> FreeCalypso gsm-fw environment: I got this reconstructed l1_dyn_dwl
> code integrated into our gsm-fw, and I got it to build with
> L1_DYN_DSP_DWNLD enabled.  Behavior: the expected trace output
> related to dynamic DSP download does NOT appear; attempting to dial
> a MO voice call caused the DSP to go berzerk with errors.

I just fixed a couple of bugs that caused the bad breakage I saw
yesterday, and now our gcc-built gsm-fw with L1_DYN_DSP_DWNLD enabled
behaves like it did before adding this dynamic DSP download feature:
voice calls connect without the DSP blowing up or keeling over, but
the sound in the earpiece is still noise instead of the expected
downlink audio.

Like I expected, it appears that the magic for making AMR work
correctly with our PD751992A Calypso silicon with DSP ROM 3606 is not
in the dynamic DSP patch (the latter may be needed too for some corner
cases, but seems to be less critical), but there is probably some
magic present in the TCS211 binary blob versions of the L1 core modules
that does some additional initialization or other manipulation of the
DSP to resolve this quirk, magic that is not present in the version we
got with the LoCosto source, probably because it isn't needed on
LoCosto hardware and DSP ROM.

Thus my work on the tcs211-l1-reconst subproject appears to be on the
right track.  The next step on that track will be to import the L1
core (as opposed to audio, GPRS, test modes etc) C modules from
LoCosto into tcs211-l1-reconst and get them to compile in the TCS211
environment with unchanged TCS211 L1 headers, at least as far as
structure definitions and function prototypes go.  Then link the
resulting pseudo-TCS211 with this xeno-transplanted L1 and try running
it.  I expect it to exhibit the same breakage at that point as our
current gcc-built version does now.  But once we do it in the TCS211
environment, we'll be able to switch between the original blobs and
our reconstruction at the granularity of individual modules.  We
should then be able to bisect the problem down to the specific module
where the culprit must be hiding, and then study the disassembly of
that module and its differences against our reconstruction in more
depth to find the necessary missing magic.

Enthused as a girl on a mission,

More information about the Community mailing list