FreeCalypso > hg > freecalypso-tools
changeset 3:6a029ad28212
doc/Compiling: updated for the split between freecalypso-tools and Citrine
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 11 Jun 2016 01:52:51 +0000 |
parents | 803e4f4a3db6 |
children | 971906d7763d |
files | doc/Compiling |
diffstat | 1 files changed, 6 insertions(+), 80 deletions(-) [+] |
line wrap: on
line diff
--- a/doc/Compiling Sat Jun 11 01:23:37 2016 +0000 +++ b/doc/Compiling Sat Jun 11 01:52:51 2016 +0000 @@ -1,29 +1,8 @@ -There are 3 parts to the complete FreeCalypso software suite which are built -independently of each other: - -* The tools that run on a GNU/Linux PC or other host system are the most - straightforward: there is a top level Makefile (named Makefile.hosttools if - you looking at a development source snapshot, will be renamed to just - Makefile in packaged releases of the host tools) that coordinates building - and installing all of them. - -* The gsm-fw tree, which will eventually become our main GSM firmware, needs to - be built with a GNU cross-compiler toolchain for ARM7. This firmware can be - built for several different target devices and with different feature - configurations, hence there is no singular build for it - it's more like the - Linux kernel in terms of its build configuration management. - -* We also have a few utilities which need to be compiled to run on Calypso - targets, but which are not part of gsm-fw; they are gathered in the - target-utils tree. They are built with the same GNU toolchain for ARM7 as - gsm-fw, but don't have any fancy configuration system. - Building and installing FreeCalypso host tools ============================================== -If you are working with a packaged FC host tools release, just run 'make', then -'make install' as root. If you are working with a development source snapshot, -do 'make -f Makefile.hosttools' instead. +In order to compile and install our host tools, just run 'make', then +'make install' as root. The "standard" install directories are /usr/local/bin for binaries and /usr/local/share/freecalypso for helper files. If you need to change these @@ -54,7 +33,9 @@ The current "official" GNU ARM toolchain for FreeCalypso consists of binutils-2.21.1, gcc-4.5.4 and newlib-2.0.0 with a specific set of patches and -build configuration options. Build it as follows: +build configuration options. This toolchain is used to compile target-utils in +this package as well as our separately-maintained Citrine firmware. Build it +as follows: 1. Download these 3 source tarballs for the standard GNU+newlib components: @@ -66,7 +47,7 @@ comments in the script first for the usage instructions. The toolchain thus built will need to be in your PATH before you can compile -gsm-fw or target-utils. +target-utils or Citrine. Please note: the toolchain that is prescribed for FreeCalypso as above is *believed* to be equivalent to the one used by OsmocomBB, but there are no @@ -83,58 +64,3 @@ Run 'make all' in target-utils to build some other components that aren't really needed. - -Compiling FreeCalypso GSM firmware -================================== - -The firmware in our gsm-fw tree can be built in many different configurations, -hence there is no singular build for it. The configuration choices consist of: - -* Which target device the firmware should be built for: the target device - selection is made at compile time; do not attempt to take a firmware image - built for one target device and flash or fc-xram it into another! - -* What functionality is to be included. As the FreeCalypso firmware subproject - moves forward, we gradually add chunks of functionality, slowly approaching - what each target device is ultimately capable of. However, each time we add - a new piece of functionality, the ability to build a firmware image that works - like before, without the newly added functionality, still remains. Each - feature to be included needs to be explicitly selected. - -* Miscellaneous configuration: which Calypso UART should be used for what, - should the firmware use a real FFS (flash file system) in flash or a fake one - in RAM, etc. - -The GSM firmware build configuration is set by way of an editable text file -named build.conf; the configuration and build procedure is as follows: - -1. Look at the available repertoire of standard configurations under - gsm-fw/configs and choose which one you would like to use, either as-is or - as a basis for your own; - -2. Copy the configuration you selected to build.conf in the gsm-fw directory; - -3. Optionally edit it to taste - the configuration language is Bourne shell; - -4. Run 'make' in the gsm-fw directory. - -Depending on the configuration, either a flashable or a RAM-loadable image will -be built by default. A flashable image will appear in finlink/flashImage.bin; -these images are meant to be programmed with fc-loadtool's flash program-bin -command; the starting flash address at which the image needs to be programmed -depends on the target device - see target-specific notes. A RAM-loadable image -will appear in finlink/ramImage.srec; these images are meant to be loaded and -run with the fc-xram utility. - -It is possible to build either a flashable or a RAM-loadable image, or both, -without changing build.conf: run 'make flashImage' or 'make ramImage' as -desired. (The compilation of each module from source into a .o and all -intermediate linking steps are agnostic to whether a flashImage or a ramImage -is being built, only the very final link step differs.) Any otherwise working -configuration can be built into a flashImage, even if it makes no logical sense -to do so, but the ability to build a ramImage for a given configuration depends -on the code image size (which in turn depends on the selected feature set) and -the amount of RAM available on the target in question: most Calypso GSM devices -have small RAM, enough to satisfy a GSM firmware's data space requirements, but -not enough to hold the entire firmware code in RAM as well. Please see target- -specific notes for more details.