annotate doc/Compiling @ 516:1ed9de6c90bd

src/g23m-gsm/sms/sms_for.c: bogus malloc removed The new error handling code that was not present in TCS211 blob version contains a malloc call that is bogus for 3 reasons: 1) The memory allocation in question is not needed in the first place; 2) libc malloc is used instead of one of the firmware's proper ways; 3) The memory allocation is made inside a function and then never freed, i.e., a memory leak. This bug was caught in gcc-built FreeCalypso fw projects (Citrine and Selenite) because our gcc environment does not allow any use of libc malloc (any reference to malloc produces a link failure), but this code from TCS3.2 is wrong even for Magnetite: if this code path is executed repeatedly over a long time, the many small allocations made by this malloc call without a subsequent free will eventually exhaust the malloc heap provided by the TMS470 environment, malloc will start returning NULL, and the bogus code will treat it as an error. Because the memory allocation in question is not needed at all, the fix entails simply removing it.
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 22 Jul 2018 06:04:49 +0000
parents 69da44f2909e
children 9363ea39c74c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
94
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 Preparing the development and build environment
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 ===============================================
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 In order to compile our FreeCalypso Magnetite firmware, you will need a
596d86109e44 initial 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
596d86109e44 initial 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
373
9399a83cb394 first round of documentation updates for 2018
Mychaela Falconia <falcon@freecalypso.org>
parents: 311
diff changeset
7 that we have built on top of it is Unix-based. The Mother uses Slackware Linux
94
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 version 13.37, 32-bit.
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 You will need to install the following four pieces of software on whatever
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 machine you will use to run the FC Magnetite build process:
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 1. Wine: self-explanatory.
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 2. FreeCalypso Wine environment:
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 ftp://ftp.freecalypso.org/pub/GSM/TI_src/wine/installed-env.tar.xz
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 Extract the content of the above tarball into your ~/.wine/drive_c
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 directory - that's all there is to it!
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 3. nowhine wrapper around Wine:
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 ftp://ftp.freecalypso.org/pub/GSM/TI_src/wine/nowhine.c
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 Note that Wine may produce different whines on your system than it
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 does on mine, in which case if you wish to be relieved of those
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 whines, you'll need to edit my nowhine.c hack for your situation.
310
8488a9ae583c doc/Compiling: added note that if wine doesn't whine, make nowhine a symlink
Mychaela Falconia <falcon@freecalypso.org>
parents: 251
diff changeset
29 And if wine does not whine at all on your system, you can skip the
8488a9ae583c doc/Compiling: added note that if wine doesn't whine, make nowhine a symlink
Mychaela Falconia <falcon@freecalypso.org>
parents: 251
diff changeset
30 wrapper and create a nowhine symlink pointing directly to wine.
94
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 4. mokosrec2bin flash image file format conversion utility:
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 ftp://ftp.freecalypso.org/pub/GSM/GTA02/gsm-fw/mokosrec2bin.c
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 Note that the four host software pieces above are exactly the same as what has
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 been needed to build our previous TCS211-based fw works such as leo2moko-debug
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 and tcs211-c139 - thus if you have built those previously, you should already
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 have all of the necessary host tools.
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 Compiling the local helper utilities
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 ====================================
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 (cd helpers; make)
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 Do the above. Most of the build helper scripts used in the FC Magnetite build
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 system are written in Bourne shell, but a few were easier to implement in C.
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 You need to compile these C helper utilities before you can run an actual FC
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 Magnetite firmware build, but these utilities are totally ad hoc and specific
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 to the needs of our fw build system, hence they are not meant to be installed
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 globally on your system - instead they stay within the fc-magnetite tree. You
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 just need to run make in the helpers directory once before any actual firmware
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 builds.
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 Actually building the firmware
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 ==============================
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 In order to build our FreeCalypso Magnetite firmware for a particular target in
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 a particular configuration, run a command like this from the top level of the
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 fc-magnetite tree:
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 ./configure.sh gtamodem l1reconst
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 The first argument to the configure.sh script selects the target, and the second
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 argument selects the configuration. As of this writing, the following targets
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 are supported:
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67
381
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
68 c11x Motorola C11x/12x
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
69 c139 Motorola C139/140
461
69da44f2909e doc/Compiling: mention that the dsample target is currently D-Sample C05
Mychaela Falconia <falcon@freecalypso.org>
parents: 458
diff changeset
70 dsample TI's D-Sample C05 board (no working radio currently)
251
6c594ce434f8 doc/Compiling: update for the FCDEV3B and for fc-host-tools-r5
Mychaela Falconia <falcon@freecalypso.org>
parents: 220
diff changeset
71 fcdev3b FreeCalypso FCDEV3B
94
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 gtamodem The Calypso GSM/GPRS modem in Openmoko GTA01/02 smartphones
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 pirelli Pirelli DP-L10
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 For the available configurations (the second required argument to the configure
373
9399a83cb394 first round of documentation updates for 2018
Mychaela Falconia <falcon@freecalypso.org>
parents: 311
diff changeset
76 script), look in the configs directory and read the various write-ups under doc.
94
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 Each configuration is built in its own directory; by default the build directory
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 is named build-$TARGET-$CONFIG, i.e., for the example configure.sh line above,
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 the resulting build directory will be build-gtamodem-l1reconst. You can change
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 the name of this directory by appending a BUILD_DIR=dir argument to the
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 ./configure.sh line after the two required arguments.
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 To actually compile the firmware, cd into the created build directory and run
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 make there. Unfortunately the use of TI's proprietary compiler via Wine makes
381
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
86 the build quite slow, but there is a trick to speed it up: if you run some
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
87 other Wine program that stays open and does not exit on its own (e.g., wine cmd)
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
88 in another window and leave it open while you run your FC Magnetite fw build,
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
89 the build will proceed much faster - the presence of another Wine process using
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
90 the wineserver environment will keep Wine from shutting this environment down
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
91 and restarting it for every individual cl470 run, i.e., for each individual C
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
92 source file.
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
93
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
94 When the build is done, the flashable firmware image will be in fwimage.bin.
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
95 This image is to be flashed with fc-loadtool at address 0x10000 on Mot C11x and
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
96 C139 targets, and at address 0 on the more sensible targets that have the
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
97 Calypso boot ROM enabled. The build system also produces a short text file
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
98 named flash-script which is a flashing command script for fc-loadtool that
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
99 erases the correct range of flash sectors and then programs fwimage.bin at the
c6823ed06f9c doc/Compiling: update for C11x and for the speed-up trick
Mychaela Falconia <falcon@freecalypso.org>
parents: 373
diff changeset
100 right address.
94
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101
251
6c594ce434f8 doc/Compiling: update for the FCDEV3B and for fc-host-tools-r5
Mychaela Falconia <falcon@freecalypso.org>
parents: 220
diff changeset
102 When building firmware for the FCDEV3B or for the Pirelli, one can build either
6c594ce434f8 doc/Compiling: update for the FCDEV3B and for fc-host-tools-r5
Mychaela Falconia <falcon@freecalypso.org>
parents: 220
diff changeset
103 a flashable image or a RAM-loadable one - or both. Because this part of the
94
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 build system is common with other targets for which only flash images can be
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 produced, the Makefile always builds the flashable image by default -
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 fwimage.bin is always meant for flash and never for RAM. To build a RAM-
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 loadable image when the target allows it, run 'make ram' - the image will be in
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 ramimage.srec, which you can then load and run on the target with FreeCalypso
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 host tool fc-xram.
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 Running on the hardware
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 =======================
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 In order to run the firmware you have built on your Calypso phone or modem
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 (flash or run in RAM as appropriate), you will need to use FreeCalypso host
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 tools. As of this writing, the latest packaged release is this one:
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117
458
48ae9825662c doc/Compiling: update for fc-host-tools-r8 and dsample target
Mychaela Falconia <falcon@freecalypso.org>
parents: 381
diff changeset
118 ftp://ftp.freecalypso.org/pub/GSM/FreeCalypso/fc-host-tools-r8.tar.bz2
94
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119
596d86109e44 initial round of documentation
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120 Please see target-specific notes for more details.