comparison doc/Compiling @ 26:51e1a3b213a3

started re-adding documentation
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 11 Jun 2016 07:01:34 +0000
parents
children
comparison
equal deleted inserted replaced
25:85b080d6fb39 26:51e1a3b213a3
1 Building and installing the ARM7 toolchain
2 ==========================================
3
4 Before you can compile Citrine, you first need to build and install the
5 necessary toolchain targeting ARM7, the CPU core in the Calypso. The current
6 "official" GNU ARM toolchain for FreeCalypso consists of binutils-2.21.1,
7 gcc-4.5.4 and newlib-2.0.0 with a specific set of patches and build
8 configuration options. All of the necessary bits can be downloaded here:
9
10 ftp://ftp.freecalypso.org/pub/GSM/FreeCalypso/toolchain/
11
12 Please note: the toolchain that is prescribed for FreeCalypso as above is
13 *believed* to be equivalent to the one used by OsmocomBB, but there are no
14 guarantees. Use any other toolchain at your own risk.
15
16 Compiling FreeCalypso Citrine firmware
17 ======================================
18
19 Citrine firmware can be built in many different configurations, hence there is
20 no singular build for it. The configuration choices consist of:
21
22 * Which target device the firmware should be built for: the target device
23 selection is made at compile time; do not attempt to take a firmware image
24 built for one target device and flash or fc-xram it into another!
25
26 * What functionality is to be included. As the FreeCalypso firmware subproject
27 moves forward, we gradually add chunks of functionality, slowly approaching
28 what each target device is ultimately capable of. However, each time we add
29 a new piece of functionality, the ability to build a firmware image that works
30 like before, without the newly added functionality, still remains. Each
31 feature to be included needs to be explicitly selected.
32
33 * Miscellaneous configuration: which Calypso UART should be used for what,
34 should the firmware use a real FFS (flash file system) in flash or a fake one
35 in RAM, etc.
36
37 The GSM firmware build configuration is set by way of an editable text file
38 named build.conf; the configuration and build procedure is as follows:
39
40 1. Look at the available repertoire of standard configurations in the configs
41 directory and choose which one you would like to use, either as-is or as a
42 basis for your own;
43
44 2. Copy the configuration you selected to build.conf in the top level directory
45 of the source tree;
46
47 3. Optionally edit it to taste - the configuration language is Bourne shell;
48
49 4. Run 'make' in the top level directory.
50
51 Depending on the configuration, either a flashable or a RAM-loadable image will
52 be built by default. A flashable image will appear in finlink/flashImage.bin;
53 these images are meant to be programmed with fc-loadtool's flash program-bin
54 command; the starting flash address at which the image needs to be programmed
55 depends on the target device - see target-specific notes. A RAM-loadable image
56 will appear in finlink/ramImage.srec; these images are meant to be loaded and
57 run with the fc-xram utility.
58
59 It is possible to build either a flashable or a RAM-loadable image, or both,
60 without changing build.conf: run 'make flashImage' or 'make ramImage' as
61 desired. (The compilation of each module from source into a .o and all
62 intermediate linking steps are agnostic to whether a flashImage or a ramImage
63 is being built, only the very final link step differs.) Any otherwise working
64 configuration can be built into a flashImage, even if it makes no logical sense
65 to do so, but the ability to build a ramImage for a given configuration depends
66 on the code image size (which in turn depends on the selected feature set) and
67 the amount of RAM available on the target in question: most Calypso GSM devices
68 have small RAM, enough to satisfy a GSM firmware's data space requirements, but
69 not enough to hold the entire firmware code in RAM as well. Please see target-
70 specific notes for more details.