FreeCalypso > hg > freecalypso-citrine
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. |
