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 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362
|
/* Copyright (c) 2002,2005, Theodore Roth
Copyright (c) 2006, Joerg Wunsch
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. */
/* $Id: tools-install.dox,v 1.13.2.2 2006/10/06 22:51:52 joerg_wunsch Exp $ */
/** \page install_tools Installing the GNU Tool Chain
\addindex installation
\note This discussion was taken directly from Rich Neswold's document. (See
\ref acks).
\note This discussion is Unix specific. [FIXME: troth/2002-08-13: we need a
volunteer to add windows specific notes to these instructions.]
This chapter shows how to build and install a complete development environment
for the AVR processors using the GNU toolset.
The default behaviour for most of these tools is to install every thing under
the \c /usr/local directory. In order to keep the AVR tools separate from the
base system, it is usually better to install everything into
<tt>/usr/local/avr</tt>. If the \c /usr/local/avr directory does not exist,
you should create it before trying to install anything. You will need
<tt>root</tt> access to install there. If you don't have root access to the
system, you can alternatively install in your home directory, for example, in
<tt>$HOME/local/avr</tt>. Where you install is a completely arbitrary
decision, but should be consistent for all the tools.
You specify the installation directory by using the <tt>--prefix=dir</tt>
option with the \c configure script. It is important to install all the AVR
tools in the same directory or some of the tools will not work correctly. To
ensure consistency and simplify the discussion, we will use \c $PREFIX to
refer to whatever directory you wish to install in. You can set this as an
environment variable if you wish as such (using a Bourne-like shell):
\addindex $PREFIX
\addindex --prefix
\verbatim
$ PREFIX=$HOME/local/avr
$ export PREFIX
\endverbatim
\addindex $PATH
\anchor path \note Be sure that you have your \c PATH environment variable set
to search the directory you install everything in \e before you start
installing anything. For example, if you use <tt>--prefix=$PREFIX</tt>, you
must have \c $PREFIX/bin in your exported <tt>PATH</tt>. As such:
\verbatim
$ PATH=$PATH:$PREFIX/bin
$ export PATH
\endverbatim
\warning If you have \c CC set to anything other than \c avr-gcc in your
environment, this will cause the configure script to fail. It is best to not
have \c CC set at all.
\note It is usually the best to use the latest released version of
each of the tools.
\section required_tools Required Tools
\addindex tools, required
- <b>GNU Binutils</b><br>
http://sources.redhat.com/binutils/ <br>
\ref install_avr_binutils "Installation"
- <b>GCC</b><br>
http://gcc.gnu.org/ <br>
\ref install_avr_gcc "Installation"
- <b>AVR Libc</b><br>
http://savannah.gnu.org/projects/avr-libc/ <br>
\ref install_avr_libc "Installation"<br>
\section optional_tools Optional Tools
\addindex tools, optional
You can develop programs for AVR devices without the following tools. They may
or may not be of use for you.
- <b>uisp</b><br>
http://savannah.gnu.org/projects/uisp/<br>
\ref install_uisp "Installation"
- <b>avrdude</b><br>
http://savannah.nongnu.org/projects/avrdude/ <br>
\ref install_avrprog "Installation" <br>
\ref using_avrprog "Usage Notes"
- <b>GDB</b><br>
http://sources.redhat.com/gdb/ <br>
\ref install_gdb "Installation"<br>
- <b>Simulavr</b><br>
http://savannah.gnu.org/projects/simulavr/ <br>
\ref install_simulavr "Installation"
- <b>AVaRice</b><br>
http://avarice.sourceforge.net/ <br>
\ref install_avarice "Installation"<br>
\section install_avr_binutils GNU Binutils for the AVR target
\addindex installation, binutils
The <tt><b>binutils</b></tt> package provides all the low-level utilities
needed in building and manipulating object files. Once installed, your
environment will have an AVR assembler (<tt>avr-as</tt>), linker
(<tt>avr-ld</tt>), and librarian (<tt>avr-ar</tt> and <tt>avr-ranlib</tt>).
In addition, you get tools which extract data from object files
(<tt>avr-objcopy</tt>), dissassemble object file information
(<tt>avr-objdump</tt>), and strip information from object files
(<tt>avr-strip</tt>). Before we can build the C compiler, these tools need to
be in place.
Download and unpack the source files:
\verbatim
$ bunzip2 -c binutils-<version>.tar.bz2 | tar xf -
$ cd binutils-<version>
\endverbatim
\note Replace \c <version> with the version of the package you downloaded.
\note If you obtained a gzip compressed file (.gz), use <tt>gunzip</tt>
instead of <tt>bunzip2</tt>.
It is usually a good idea to configure and build <tt><b>binutils</b></tt> in a
subdirectory so as not to pollute the source with the compiled files. This is
recommended by the <tt><b>binutils</b></tt> developers.
\verbatim
$ mkdir obj-avr
$ cd obj-avr
\endverbatim
The next step is to configure and build the tools. This is done by supplying
arguments to the <tt>configure</tt> script that enable the AVR-specific
options.
\verbatim
$ ../configure --prefix=$PREFIX --target=avr --disable-nls
\endverbatim
If you don't specify the <tt>--prefix</tt> option, the tools will get
installed in the \c /usr/local hierarchy (i.e. the binaries will get installed
in <tt>/usr/local/bin</tt>, the info pages get installed in
<tt>/usr/local/info</tt>, etc.) Since these tools are changing frequently, It
is preferrable to put them in a location that is easily removed.
When <tt>configure</tt> is run, it generates a lot of messages while it
determines what is available on your operating system. When it finishes, it
will have created several <tt>Makefile</tt>s that are custom tailored to your
platform. At this point, you can build the project.
\verbatim
$ make
\endverbatim
\note BSD users should note that the project's <tt>Makefile</tt> uses GNU
<tt>make</tt> syntax. This means FreeBSD users may need to build the tools by
using <tt>gmake</tt>.
If the tools compiled cleanly, you're ready to install them. If you specified
a destination that isn't owned by your account, you'll need <tt>root</tt>
access to install them. To install:
\verbatim
$ make install
\endverbatim
You should now have the programs from binutils installed into
<tt>$PREFIX/bin</tt>. Don't forget to \ref path "set your PATH" environment
variable before going to build avr-gcc.
\note The official version of binutils might lack support for recent AVR
devices. A patch that adds more AVR types can be found at
http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-binutils/files/patch-newdevices
\section install_avr_gcc GCC for the AVR target
\addindex installation, gcc
\warning You <em><b>must</b></em> install
\ref install_avr_binutils "avr-binutils" and make sure your
\ref path "path is set" properly before installing avr-gcc.
The steps to build \c avr-gcc are essentially same as for
\ref install_avr_binutils "binutils":
\verbatim
$ bunzip2 -c gcc-<version>.tar.bz2 | tar xf -
$ cd gcc-<version>
$ mkdir obj-avr
$ cd obj-avr
$ ../configure --prefix=$PREFIX --target=avr --enable-languages=c,c++ \
--disable-nls --disable-libssp --with-dwarf2
$ make
$ make install
\endverbatim
To save your self some download time, you can alternatively download only the
<tt>gcc-core-\<version\>.tar.bz2</tt> and <tt>gcc-c++-\<version\>.tar.bz2</tt>
parts of the gcc. Also, if you don't need C++ support, you only need the core
part and should only enable the C language support.
\note Early versions of these tools did not support C++.
\note The stdc++ libs are not included with C++ for AVR due to the size
limitations of the devices.
\note The official version of GCC might lack support for recent AVR
devices. A patch that adds more AVR types can be found at
http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/avr-gcc/files/patch-newdevices
\section install_avr_libc AVR Libc
\addindex installation, avr-libc
\warning You <em><b>must</b></em> install
\ref install_avr_binutils "avr-binutils",
\ref install_avr_gcc "avr-gcc" and make sure your
\ref path "path is set" properly before installing avr-libc.
\note If you have obtained the latest avr-libc from cvs, you will have to run
the \c bootstrap script before using either of the build methods described below.
To build and install avr-libc:
\verbatim
$ gunzip -c avr-libc-<version>.tar.gz | tar xf -
$ cd avr-libc-<version>
$ ./configure --prefix=$PREFIX --build=`./config.guess` --host=avr
$ make
$ make install
\endverbatim
\section install_avrprog Avrdude
\addindex installation, avrprog
\addindex installation, avrdude
\note It has been ported to windows (via MinGW or cygwin), Linux and Solaris. Other Unix systems
should be trivial to port to.
<tt><b>avrdude</b></tt> is part of the FreeBSD ports system. To install it,
simply do the following:
\verbatim
# cd /usr/ports/devel/avrdude
# make install
\endverbatim
\note Installation into the default location usually requires root
permissions. However, running the program only requires access
permissions to the appropriate \c ppi(4) device.
Building and installing on other systems should use the \c configure system,
as such:
\verbatim
$ gunzip -c avrdude-<version>.tar.gz | tar xf -
$ cd avrdude-<version>
$ mkdir obj-avr
$ cd obj-avr
$ ../configure --prefix=$PREFIX
$ make
$ make install
\endverbatim
\section install_gdb GDB for the AVR target
\addindex Installation, gdb
Gdb also uses the \c configure system, so to build and install:
\verbatim
$ bunzip2 -c gdb-<version>.tar.bz2 | tar xf -
$ cd gdb-<version>
$ mkdir obj-avr
$ cd obj-avr
$ ../configure --prefix=$PREFIX --target=avr
$ make
$ make install
\endverbatim
\note If you are planning on using <tt>avr-gdb</tt>, you will probably want to
install either \ref install_simulavr "simulavr" or
\ref install_avarice "avarice" since avr-gdb needs one of these to run as a
a remote target backend.
\section install_simulavr Simulavr
\addindex installation, simulavr
Simulavr also uses the \c configure system, so to build and install:
\verbatim
$ gunzip -c simulavr-<version>.tar.gz | tar xf -
$ cd simulavr-<version>
$ mkdir obj-avr
$ cd obj-avr
$ ../configure --prefix=$PREFIX
$ make
$ make install
\endverbatim
\note You might want to have already installed
\ref install_avr_binutils "avr-binutils",
\ref install_avr_gcc "avr-gcc" and
\ref install_avr_libc "avr-libc"
if you want to have the test programs built in the simulavr source.
\section install_avarice AVaRice
\addindex installation, avarice
\note These install notes are not applicable to avarice-1.5 or older. You
probably don't want to use anything that old anyways since there have been
many improvements and bug fixes since the 1.5 release.
AVaRice also uses the \c configure system, so to build and install:
\verbatim
$ gunzip -c avarice-<version>.tar.gz | tar xf -
$ cd avarice-<version>
$ mkdir obj-avr
$ cd obj-avr
$ ../configure --prefix=$PREFIX
$ make
$ make install
\endverbatim
\note AVaRice uses the bfd library for accessing various binary file formats.
You may need to tell the configure script where to find the lib and headers
for the link to work. This is usually done by invoking the configure script
like this (Replace <tt>\<hdr_path\></tt> with the path to the \c bfd.h file on
your system. Replace <tt>\<lib_path\></tt> with the path to \c libbfd.a on your
system.):
\verbatim
$ CPPFLAGS=-I<hdr_path> LDFLAGS=-L<lib_path> ../configure --prefix=$PREFIX
\endverbatim
*/
|