FreeCalypso > hg > fc-tourmaline
annotate doc/Compiling @ 173:0a0d54877239
mmiSmsRead.c: formatting fixes and dead code elimination
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 18 Jan 2021 03:46:02 +0000 |
parents | a62e5bf88434 |
children |
rev | line source |
---|---|
50
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 Preparing the development and build environment |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 =============================================== |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 In order to compile our FreeCalypso Tourmaline firmware, you will need a |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 Unix/Linux system. Even though we are using a compiler which we got in the |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 form of Windows .exe binaries and thus have to use Wine (see below), everything |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 that we have built on top of it is Unix-based. The Mother currently uses |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 Slackware Linux release 14.2 (32-bit) and previously used Slackware 13.37, |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 also 32-bit. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 You will need to install the following 3 pieces of software on whatever |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 machine you will use to run the FC Tourmaline build process: |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 1. Wine: self-explanatory. The Mother uses the following Slackware package: |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 https://www.freecalypso.org/members/falcon/slackware/wine-1.5.23-i486-1sg.txz |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 I originally used it with Slackware 13.37 and I am still able to use it |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 with 14.2 without any issues. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 2. FreeCalypso Wine environment: |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 ftp://ftp.freecalypso.org/pub/GSM/TI_src/wine/installed-env.tar.xz |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 Extract the content of the above tarball into your ~/.wine/drive_c |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 directory - that's all there is to it! |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 3. nowhine wrapper around Wine: |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 ftp://ftp.freecalypso.org/pub/GSM/TI_src/wine/nowhine.c |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 The purpose of this wrapper is to suppress the following obnoxious whine |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 which wine emits on my system: |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 preloader: Warning: failed to reserve range 00010000-00110000 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 Wine will also emits a bunch of other whines if you have to run it |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 in an environment without an X11 display (e.g., on a machine that you |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 ssh into), and our nowhine wrapper suppresses those as well. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 If wine does not emit those preloader whines on your system and you |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 never find yourself in a situation of having to run without an X11 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 display and thus you find our nowhine wrapper to be unnecessary, |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 you can skip the wrapper and create a nowhine symlink pointing directly |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 to wine. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 Compiling the local helper utilities |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 ==================================== |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 (cd helpers; make) |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 Do the above. Most of the build helper scripts used in the FC Tourmaline build |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 system are written in Bourne shell, but a few were easier to implement in C. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 You need to compile these C helper utilities before you can run an actual FC |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 Tourmaline firmware build, but these utilities are totally ad hoc and specific |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 to the needs of our fw build system, hence they are not meant to be installed |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 globally on your system - instead they stay within the fc-tourmaline tree. You |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 just need to run make in the helpers directory once before any actual firmware |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 builds. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 Actually building the firmware |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 ============================== |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 In order to build our FreeCalypso Tourmaline firmware for a particular target |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 in a particular configuration, run a command like this from the top level of |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 the fc-tourmaline tree: |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 ./configure.sh luna2 bigcolor-gprs |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 The first required argument to the configure.sh script selects the hardware |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 target, the second required argument selects the functional configuration, and |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 any further arguments beyond these two (optional) allow changing various |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 configurable settings that go beyond basic functional selection and aren't |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 strictly fixed by the hardware target. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 As of this writing, the following hardware targets are supported: |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 c11x Motorola C11x/12x |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 c139 Motorola C139/140 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 c155 Motorola C155/156 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 fcdev3b FreeCalypso FCDEV3B |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 gtamodem The Calypso GSM/GPRS modem in Openmoko GTA01/02 smartphones |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 gtm900mgc Huawei GTM900, hardware variant MGC1GSMT or MGC2GSMT |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 j100 Sony Ericsson J100 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 luna1 FreeCalypso Luna, based on iWOW DSK v4.0 or v5.0 motherboard |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 luna2 FreeCalypso Luna, based on FC Caramel2 motherboard |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 pirelli Pirelli DP-L10 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 tangomdm FreeCalypso Tango standard modem config |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 The second required argument selects the basic functional configuration; these |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 functional config stanzas appear in the configs directory. The following |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 functional configurations are currently available: |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 bigcolor-gprs & bigcolor-vo |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 These are UI-enabled configurations with the big (176x220 pixel) color |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 version of the UI. These functional configs can be built only for |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 luna1 and luna2 targets. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 smallbw |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 Small B&W UI configuration - 96x64 pixel black&white UI version. This |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 functional config can be built for c139, luna1 and luna2 targets. When |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 running on Luna, the logical 96x64 pixel B&W LCD is centered in the |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 middle of the 176x220 pixel physical LCD, surrounded by a pale magenta |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 border. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 bwtest |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 This one is a special intermediate configuration is that the UI layers |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 are built in the smallbw config, but the underlying R2D framebuffer |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 driver is 176x220 pixel B&W, rather than 96x64 pixel B&W. This config |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 can only be built for Luna targets; it originates from TI's own |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 configuration of running their !LSCREEN (smallbw) UI on D-Sample boards |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 with R2D driver in the BW_D_Sample config. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 stdmodem |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 Standard modem config, all data services enabled, no UI functionality |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 included. Supported targets are fcdev3b, gtamodem, gtm900mgc and |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 tangomdm. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 vpm |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 See the Voice-pseudo-modem article. This functional config is |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 applicable to c11x, c139, c155, j100 and pirelli targets. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 Each configuration is built in its own directory; the name of this build |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 directory takes the form of build-$TARGET-$CONFIG$SUFFIX, i.e., for the example |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 configure.sh line above, the resulting build directory will be named |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 build-luna2-bigcolor-gprs. The $SUFFIX part is empty by default, but can be set |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 on the command line in order to distinguish non-standard builds that had some |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 tunable settings changed to values other than the default. For example, if you |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 are building modem firmware for an FCDEV3B V1 board where you need to disable |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 sleep, you should run the configure script as follows: |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 ./configure.sh fcdev3b stdmodem DISABLE_SLEEP=1 SUFFIX=-nosleep |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 The build directory would then become build-fcdev3b-stdmodem-nosleep, and the |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 specified suffix will also be included in the firmware version ID string that |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 gets compiled into the image. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 To actually compile the firmware, cd into the created build directory and run |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 make there. Unfortunately the use of TI's proprietary compiler via Wine makes |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 the build quite slow, but there is a trick to speed it up: if you run some |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 other Wine program that stays open and does not exit on its own (e.g., wine cmd) |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 in another window and leave it open while you run your FC Tourmaline fw build, |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 the build will proceed much faster - the presence of another Wine process using |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 the wineserver environment will keep Wine from shutting this environment down |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 and restarting it for every individual cl470 run, i.e., for each individual C |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 source file. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 When the build is done, the flashable firmware image will be in fwimage.bin. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 This image is to be flashed with fc-loadtool at a target-dependent base address. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 The build system also produces a short text file named flash-script which is a |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 flashing command script for fc-loadtool that erases the correct range of flash |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 sectors and then programs fwimage.bin at the right address. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 When building firmware for the FCDEV3B or for the Pirelli, one can build either |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 a flashable image or a RAM-loadable one - or both. Because this part of the |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 build system is common with other targets for which only flash images can be |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 produced, the Makefile always builds the flashable image by default - |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 fwimage.bin is always meant for flash and never for RAM. To build a RAM- |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 loadable image when the target allows it, run 'make ram' - the image will be in |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 ramimage.srec, which you can then load and run on the target with FreeCalypso |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 host tool fc-xram. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 Cached libraries |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 ================ |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 In the build architecture of all TCS211-based firmwares including Tourmaline, |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 each fw component is first compiled into a linkable library (*.lib file with |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 TI's TMS470 toolchain), and then these libraries are linked together into the |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 final code image. Early in FreeCalypso project history many of these component |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 libraries were blobs, meaning that we had to use prebuilt libraries for which |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 we had no corresponding source. Our fw has now been almost fully deblobbed, |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 meaning that we have transitioned from blobs to recompilation from source for |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 almost all of our fw components. But this deblobbing has had an unfortunate |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 downside: because our Wine-based compiler is very slow, every time we deblobbed |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 a component library, build times would get longer and longer. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 FC Tourmaline introduces a partial solution to this problem in the form of |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 cached libs. Some component libraries are completely independent of |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 configuration particulars, i.e., they remain exactly the same no matter which |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 Calypso target you are building firmware for, and are likewise unaffected by |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 our various supported functional configs. Prebuilt versions of these config- |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 independent libs have been checked into the cache directory of our source tree, |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 and Tourmaline fw builds use these cached libs by default. These cached libs |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 are NOT blobs in that we do have the corresponding source for them, and the |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 versions that are checked in have been built by us, not by any evil source- |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 withholding third parties. You can disable the use of cached libs and force |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 full recompilation from source by adding a USE_CACHE=0 argument to your |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 configure.sh line. |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 Running on the hardware |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 ======================= |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 In order to run the firmware you have built on your Calypso phone or modem |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 (flash or run in RAM as appropriate), you will need to use FreeCalypso host |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 tools. The current version at any given moment can be found at this URL: |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 ftp://ftp.freecalypso.org/pub/GSM/FreeCalypso/fc-host-tools-latest.tar.bz2 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 |
a62e5bf88434
first round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 Please see target-specific notes for more details. |