Software Getting Started » History » Version 8
Anonymous, 02/19/2016 10:49 PM
Add missing 'shtool' package and correct typo (via fluke9 in #osmocom)
1 | 1 | == OsmocomBB Getting Started Guide == |
|
---|---|---|---|
2 | |||
3 | This page will describe how to compile the firmware, the host utilities and how to use them. |
||
4 | |||
5 | === Compiling osmocomBB === |
||
6 | osmocomBB consists out of software that is intended to be run on the phone (target) and the host system. |
||
7 | |||
8 | 6 | steve-m | ==== Dependencies for the host ==== |
9 | 1 | osmocomBB requires GNU autoconf, automake, libtool, pkg-config, make and GCC to compile. You will |
|
10 | also need to use git to access and update the sources. There should be no other depedencies. The name |
||
11 | of these packages depend on the distribution used. To |
||
12 | |||
13 | For Debian the package names are: |
||
14 | {{{ |
||
15 | 8 | sudo aptitude install libtool shtool autoconf git-core pkg-config make gcc |
|
16 | 1 | }}} |
|
17 | |||
18 | ==== Depenendencies for the target ==== |
||
19 | To compile software for the target we need a GNU Toolchain for ARM. There are various pre-compiled toolchains |
||
20 | available but not all of them will produce working firmware. We will try to support all these configurations but it |
||
21 | might take a while to identify the source of a problem. |
||
22 | |||
23 | 3 | The toolchains that are known working are the [http://www.gnuarm.com GNUArm.com] ones. They provide a |
|
24 | ARM GCC 3.4 .3 for X86 [http://gnuarm.com/bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.tar.bz2 here] and |
||
25 | a ARM GCC 4.0.2 for x86_64 [http://gnuarm.com/bu-2.16.1_gcc-4.0.2-c-c++_nl-1.14.0_gi-6.4_x86-64.tar.bz2 here]. The |
||
26 | 1 | toolchain is relocatable and be extracted in your home directory. |
|
27 | 6 | steve-m | |
28 | 7 | Apparently the arm-elf-gcc 4.3.2 from ports for mac os x can compile the sourcecode as well after symlinking /opt/local/bin/arm-elf-ranlib to /opt/local/bin/arm-elf-linux-ranlib and /opt/local/bin/arm-elf-strip to /opt/local/bin/arm-elf-linux-strip. If you omit the links, there will be unresolvable references to symbols in the libraries. |
|
29 | |||
30 | 6 | steve-m | If you want to build your own toolchain, known to be working with OsmocomBB, see here: [wiki:GnuArmToolchain]. |
31 | 3 | ||
32 | An example for x86 |
||
33 | {{{ |
||
34 | $ wget http://gnuarm.com/bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.tar.bz2 |
||
35 | $ mkdir install |
||
36 | $ cd install |
||
37 | $ tar xjf ../bu-2.15_gcc-3.4.3-c-c++-java_nl-1.12.0_gi-6.1.tar.bz2 |
||
38 | $ ls gnuarm-3.4.3/bin/arm-elf-gcc |
||
39 | }}} |
||
40 | |||
41 | 2 | ==== Getting and updating the source ==== |
|
42 | 1 | {{{ |
|
43 | git clone git://git.osmocom.org/osmocom-bb.git |
||
44 | 2 | }}} |
|
45 | |||
46 | {{{ |
||
47 | 8 | $ cd osmocom-bb |
|
48 | 2 | $ git pull --rebase |
|
49 | }}} |
||
50 | |||
51 | ==== Building the source ==== |
||
52 | Compiling both the target and the host code will happen with the following command. It assumes that the '''arm-elf-gcc''' |
||
53 | is inside the current path. |
||
54 | |||
55 | {{{ |
||
56 | $ cd src |
||
57 | $ make |
||
58 | }}} |
||
59 | 1 | ||
60 | 4 | If your GCC binary that produces ARM code is not called '''arm-elf-gcc''' you will need to invoke the following statement |
|
61 | and provide the basename of the toolchain with the ending '''-'''. |
||
62 | 2 | ||
63 | {{{ |
||
64 | $ cd src |
||
65 | $ make -e CROSS_TOOL_PREFIX=arm-OTHER_NAME- |
||
66 | 1 | }}} |
|
67 | 4 | ||
68 | If no error has occured you will have the firmware binaries in ''src/target/firmware/board/compal_e88/*.bin'' that can be |
||
69 | used with the Motorola C123. You also have the binaries to run on your host in ''src/host/osmocon/osmocon'', in |
||
70 | ''src/host/layer23/src/misc'' and ''layer23/src/mobile''. |
||
71 | 5 | ||
72 | |||
73 | === Running osmocomBB === |
||
74 | The original bootloader of Compal and others are built in a way to load code via the serial interface. The [wiki:osmocon] |
||
75 | utility implements this protocol and can upload the firmware. Please the [wiki:osmocon] for the details of how to use |
||
76 | it properly. |
||
77 | |||
78 | After the firmware has been loaded the [wiki:osmocon] application will print the output of the serial console |
||
79 | and it provides a unix domain socket that another layer of software can connect to. In the case of osmocomBB |
||
80 | this higher layer software is called [wiki:layer23] and is actually a group of binaries providing different functionality. Please |
||
81 | see [wiki:layer23] for the details. |