view README @ 21:0f832c4c3db8 default tip

README for the tcs211-fcmodem tree
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 23 Sep 2016 19:58:17 +0000
parents 3e89489a43b3
children
line wrap: on
line source

The intended purpose of this source tree is to serve as the official version of
the stable TCS211 firmware for FreeCalypso modem products, i.e., for hardware
devices designed and built under the auspices of the FreeCalypso Project - if
we ever succeed in actually producing any such hardware.

This tree introduces a few simple hacks which allow us to build slightly
different firmware images as required for different targets (all supported
targets must be simple modems close to the original Leonardo, no Compal/Pirelli
targets!) from the same source - a capability not envisioned at all in TI's
semi-source delivery scheme.  At the present moment only two targets are
supported: gtamodem and fcdev3b.

VERY IMPORTANT NOTE: As of this writing, the FCDEV3B has not been physically
built yet (at least not openly - it is possible that some anonymous company may
have built some in secrecy without our involvement, but naturally we have no
way of knowing whether or not any such thing happened), thus the preliminary
support for the fcdev3b target in this source tree is of the "pre-hardware"
kind.  I expect that some additional work will be needed before this code will
actually be correct for the FCDEV3B, but I don't plan on doing this work until
we get the boards physically built and I have some real hardware to play with.

The takeaway from this situation is as follows: if anyone attempts to build
their own FCDEV3B hardware in secrecy, bypassing the FreeCalypso core team,
don't expect our software to work on such unethically-built hardware: more
likely than not, it WON'T work.  So instead of trying to bypass us, please work
*with us*.

=====================
Building the firmware
=====================

Like all TCS211 variants, this firmware builds with TI's proprietary compiler
which exists only in the form of Windows binaries sans source.  However, we
run TI's Windows-targeted build environment only under Wine under Slackware
Linux and never under real Windows; furthermore, we have made a few add-ons of
our own to TI's build system, and these _required_ add-ons are implemented as
native Unix/Linux Bourne shell scripts, not Windows - hence if you are a Windows
user, you are on your own.

Therefore, the following instructions assume that your native OS is GNU/Linux
(preferably Slackware) and that you are using the Wine environment we have
packaged:

ftp://ftp.freecalypso.org/pub/GSM/TI_src/wine/

As explained in the README file in the above FTP directory, you will need to
extract the installed-env.tar.xz tarball into your ~/.wine/drive_c directory.
You will also need to compile and install the nowhine.c wrapper, or edit
g23m/winebuild.sh to invoke wine directly instead of nowhine.

You will also need this utility:

ftp://ftp.freecalypso.org/pub/GSM/GTA02/gsm-fw/mokosrec2bin.c

Once you have all necessary tools installed on your build machine, the actual
build needs to be performed as follows:

cd g23m
./select_target.sh gtamodem
./winebuild.sh
./copyout.sh

The argument to the select_target.sh script selects the hardware target for
which the firmware should be built: right now only the gtamodem configuration
works; once we get the FCDEV3B physically built and make the necessary code
changes for it, you'll be able to run './select_target.sh fcdev3b' instead and
build firmware for the FCDEV3B.

The winebuild.sh script performs the actual build once the target selection has
been set; the build output will be in the __out__/gsm_<blah>/bin directory.
The copyout.sh script is a workaround for the insanely long file and directory
names: it copies and renames the final output files from TI's nasty build
system, giving them shorter names that one can actually remember and type.  It
also converts the firmware image file from TI's m0 format (byte-swapped SREC)
to straight binary for more convenient flashing with fc-loadtool; this latter
conversion is what the mokosrec2bin utility is for.