-
Notifications
You must be signed in to change notification settings - Fork 88
/
README
232 lines (162 loc) · 7.78 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
PUBLIC ANNOUNCEMENT!
====================
THIS PROJECT IS NOT UNDER ACTIVE DEVELOPMENT ANY MORE.
THERE IS A BETTER REPLACEMENT FOR THIS!
Since not so long ago there is a very good toolchain available that replaces summon-arm-toolchain. Is better tested and there are more people working on it.
Consider visiting:
https://launchpad.net/gcc-arm-embedded
REMEMBER!
=========
THE RESULTING TOOLCHAIN IS FOR BARE BONE ARM PROCESSOR SOFTWARE. NOT FOR USE
WITH GLIBC OR THE LINUX KERNEL. DO NOT EVEN BOTHER TO ASK FOR THAT!
Contact
=======
You can find developers and users of this script on freenode IRC network in
#summon-arm-toolchain channel. Feel free to join us and ask questions.
Remember if you have a question it may take some time untill someone answers so
ask your question and wait for a while untill someone sees your message. 10min
is not long enough. :)
If you don't have an irc client installed you can use the web interface here:
http://webchat.freenode.net/?channels=summon-arm-toolchain&uio=d4
To compile the ARM toolchain for barebone ARM devices:
======================================================
* git clone https://github.com/esden/summon-arm-toolchain.git
or
* wget https://github.com/esden/summon-arm-toolchain/zipball/master; unzip master
* cd *summon-arm-toolchain*
* ./summon-arm-toolchain
* Profit
Command line options
====================
You can suffix the script call with the following variable parameters:
TARGET=
-------
By default the target is arm-none-eabi, you may want to use a different target, for example arm-elf. Use that option on your own risk it may brake things.
PREFIX=
-------
By default the installation prefix is "$(HOME)/sat" you can change it to "/usr" then the binaries will be installed into "/usr/bin" and the toolchain specific
files in "/usr/arm-none-eabi" assuming you did not change the TARGET variable.
DARWIN_OPT_PATH=
----------------
When compiling on Mac OS X the build script has to know where MacPorts or Fink
is installed. The default value is "/opt/local".
SUDO=
-----
By default this variable is empty. If you need root rights for the install
step you may set this variable to "sudo".
$ ./summon-arm-toolchain SUDO=sudo
This will prefix all make install steps with the sudo command asking for
your root password.
QUIET=
------
By default set to 0. To decrease console output (may increase compile speed
in some cases) you can set this variable to 1.
USE_LINARO=
-----------
By default set to 1. To disable the usage of the Linaro GCC and use of the
vanilla GCC instead set to 0.
OOCD_EN=
--------
By default set to 1. To disable compilation of OpenOCD JTAG programming
software set to 0.
LIBSTM32_EN=
------------
By default set to 0. To enable compilation of the non-free libstm32 library
set to 1.
LIBOPENCM3_EN=
----------------
By default set to 1. To disable compilation of the open source libopencm3
library set to 0.
DEFAULT_TO_CORTEX_M3=
---------------------
By default set to 0. To enable compilation of binutils and GCC to generate code
for the Cortex-M3 ARM architecture by default set to 1. Tests have shown that
using these options is not very reliable and is discouraged. It is more
reliable to add the necessary options to your build environment instead.
CPUS=
-----
Overrides the autodetection of CPU cores on the host machine. This option
is translated into the -j$CPUS+1 option to the make command when running
the script.
Example:
--------
$ ./summon-arm-toolchain LIBSTM32_EN=1 CPUS=5
This will run the script with libstm32 enabled and with 5 CPUs on your host
machine resulting in calling all make commands with -j6.
Currently tested and known to work target platforms:
====================================================
* STM32F10x (Olimex STM32-H103 eval board, Open-BLDC v0.1, v0.2, v0.3, v1.0)
Currently tested and known to work host platforms:
==================================================
* Linux 32bit and 64bit (Debian unstable)
* Mac OS X Snow Leopard with MacPorts
Notes for Mac OS X users:
=========================
For Mac OS X there are a few dependencies which must be installed. The wget
and libftdi packages are required and gmp, mpfr, mpc and libiconv are needed
by GCC-4.5.1. These can be installed using MacPorts, DarwinPorts or fink.
$ port install gmp mpfr libmpc wget libftdi git-core py27-yaml python_select
For XML support in gdb you may want to install expat too. And add the
--with-expat parameter to the GDB target.
Notes for Linux users:
======================
You need to install several packages. On Debian just run:
$ apt-get install flex bison libgmp3-dev libmpfr-dev libncurses5-dev \
libmpc-dev autoconf texinfo build-essential libftdi-dev zlib1g-dev \
git zlib1g-dev python-yaml
You may want to try running the following command instead too:
$ apt-get build-dep gcc-4.5 git zlib1g-dev python-yaml
For XML support in gdb you may want to install libexpat1 and libexpat1-dev too.
Usage notes:
============
We support multilib now in SAT thanks to Eric Parsonage's and Bernard
Davison's amazing work. You want to use the following GCC flag combinations to
generate full fledged floating point supporting code for some selected
architectures (default is to use software floating point).
* ARM7TDMI-S targets: -mthumb -mcpu=arm7tdmi-s
* Cortex-M0 targets: -mthumb -mcpu=cortex-m0
* Cortex-M3 targets: -mthumb -mcpu=cortex-m3
* Cortex-M4 targets: -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16
If you need support for some other ARM MCU and know the parameters for it,
just drop us a line and we will add that combination to the multilibs.
You can list available combinations by running:
$ arm-none-eabi-gcc -print-multi-lib
Known Bugs:
===========
- linaro gcc compilation exits without an apparent error
Sometimes the compilation of GCC exits without any error, RERUNNING the sat
script manages to compile a working gcc though.
Stable tarball downloads and GIT cloning
========================================
The script has a section containing version numbers of the respective packages.
Some packages have beside the stable release version number also a variable
with the suffix _GIT. If that variable is set to either a branch name or a
revision SHA the script will try to clone the repository and checkout the
respective branch or SHA instead of downloading the stable version.
If you provide a GIT branch name the script will contact the GIT server and
query the associated SHA. If this SHA is already present in the sources
directory it will not attempt to reclone the repository.
How to submit improvements and patches
======================================
As more and more people start to submit patches and improvements to
Summon-Arm-Toolchain (SAR) this section seems to become necessary.
First of all any way of submission is appreciated, if you just want to dump
your version of the script to us feel free to do so. Still if you want your
improvements and fixes to go upstream quicker there is a good way to do that.
1) Create an account on GitHub (or some other git hosting service, if you
really have to).
2) Fork the main SAR repository.
3) Clone the forked repository to your disk.
4) Change the script, try to make small changes adding one feature or bugfix at
a time (that makes review much easier for us).
5) Push your changes to GitHub, or the other service you chose.
6) Test your changes, by compiling the toolchain (you probably want to do that
with different options).
7) Make sure that everything still works.
8) Test a little bit more.
9) Click on "pull request" on GitHub or drop us a line so that we can pull your
changes.
I know that sounds like a lot of work, but if you don't we have to do it and
that means that your awesome improvement or bugfix will take longer to be
integrated into the official script. And as you, we want everyone to profit
from such changes sooner then later. :)