view doc/Compiling @ 365:f8ad9dcadde0

RV timing: better RVF_MS_TO_TICKS() formula
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 31 Dec 2017 06:32:33 +0000
parents 86a89a21078f
children 9399a83cb394
line wrap: on
line source

Preparing the development and build environment
===============================================

In order to compile our FreeCalypso Magnetite firmware, you will need a
Unix/Linux system.  Even though we are using a compiler which we got in the
form of Windows .exe binaries and thus have to use Wine (see below), everything
that we have built on top of it is Unix-based.  This author uses Slackware Linux
version 13.37, 32-bit.

You will need to install the following four pieces of software on whatever
machine you will use to run the FC Magnetite build process:

1. Wine: self-explanatory.

2. FreeCalypso Wine environment:

   ftp://ftp.freecalypso.org/pub/GSM/TI_src/wine/installed-env.tar.xz

   Extract the content of the above tarball into your ~/.wine/drive_c
   directory - that's all there is to it!

3. nowhine wrapper around Wine:

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

   Note that Wine may produce different whines on your system than it
   does on mine, in which case if you wish to be relieved of those
   whines, you'll need to edit my nowhine.c hack for your situation.
   And if wine does not whine at all on your system, you can skip the
   wrapper and create a nowhine symlink pointing directly to wine.

4. mokosrec2bin flash image file format conversion utility:

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

Note that the four host software pieces above are exactly the same as what has
been needed to build our previous TCS211-based fw works such as leo2moko-debug
and tcs211-c139 - thus if you have built those previously, you should already
have all of the necessary host tools.

Compiling the local helper utilities
====================================

(cd helpers; make)

Do the above.  Most of the build helper scripts used in the FC Magnetite build
system are written in Bourne shell, but a few were easier to implement in C.
You need to compile these C helper utilities before you can run an actual FC
Magnetite firmware build, but these utilities are totally ad hoc and specific
to the needs of our fw build system, hence they are not meant to be installed
globally on your system - instead they stay within the fc-magnetite tree.  You
just need to run make in the helpers directory once before any actual firmware
builds.

Actually building the firmware
==============================

In order to build our FreeCalypso Magnetite firmware for a particular target in
a particular configuration, run a command like this from the top level of the
fc-magnetite tree:

./configure.sh gtamodem l1reconst

The first argument to the configure.sh script selects the target, and the second
argument selects the configuration.  As of this writing, the following targets
are supported:

c139		Motorola C139
fcdev3b		FreeCalypso FCDEV3B
gtamodem	The Calypso GSM/GPRS modem in Openmoko GTA01/02 smartphones
pirelli		Pirelli DP-L10

For the available configurations (the second required argument to the configure
script), look in the configs directory and read the Handset-configs and
Modem-configs write-ups.

Each configuration is built in its own directory; by default the build directory
is named build-$TARGET-$CONFIG, i.e., for the example configure.sh line above,
the resulting build directory will be build-gtamodem-l1reconst.  You can change
the name of this directory by appending a BUILD_DIR=dir argument to the
./configure.sh line after the two required arguments.

To actually compile the firmware, cd into the created build directory and run
make there.  Unfortunately the use of TI's proprietary compiler via Wine makes
the build very slow - it takes about 42 minutes on my machine for the l1reconst
configuration, or almost 90 minutes for hybrid.  When it's all done, the
flashable firmware image will be in fwimage.bin.  This image is to be flashed
with fc-loadtool at address 0x10000 on the C139 and at address 0 on all other
targets.

When building firmware for the FCDEV3B or for the Pirelli, one can build either
a flashable image or a RAM-loadable one - or both.  Because this part of the
build system is common with other targets for which only flash images can be
produced, the Makefile always builds the flashable image by default -
fwimage.bin is always meant for flash and never for RAM.  To build a RAM-
loadable image when the target allows it, run 'make ram' - the image will be in
ramimage.srec, which you can then load and run on the target with FreeCalypso
host tool fc-xram.

Running on the hardware
=======================

In order to run the firmware you have built on your Calypso phone or modem
(flash or run in RAM as appropriate), you will need to use FreeCalypso host
tools.  As of this writing, the latest packaged release is this one:

ftp://ftp.freecalypso.org/pub/GSM/FreeCalypso/fc-host-tools-r7.tar.bz2

Please see target-specific notes for more details.