diff doc/Compiling @ 94:596d86109e44

initial round of documentation
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 03 Oct 2016 04:26:16 +0000
parents
children 60cc20bfe18f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/Compiling	Mon Oct 03 04:26:16 2016 +0000
@@ -0,0 +1,108 @@
+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.
+
+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 (hardware designed but not built yet)
+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.  As of this writing, the most
+interesting configuration is l1reconst - it was named so because it rebuilds L1
+from the reconstructed source.
+
+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.  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 Pirelli or for future FreeCalypso hardware that
+will use the same high capacity flash+pSRAM chip, 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-r4.tar.bz2
+
+Please see target-specific notes for more details.