Setup of AVR cross-compiler in Ubuntu /Linux mint /Fedora

Keywords: AVR, atmega32, avr-gcc, avrdude , installation of avr-gcc

Installation of avr-gcc in Linux is the first post in the Embedded section of Techawarey. Soon you will find a complete tutorial series on development with AVR micro-controller (specifically Atmega32) that will cover introduction of AVR, interfaces in AVR , programming example etc.

Atmega32 AVR micro controller is one of the common and favorite micro-controller among hobbits and new learners.

The architecture of the AVR or other target micro-controller is different from the MCU of your PC/Laptop. Therefor when you write a code and compile it on your PC, it can not work on your target micro-controller. You will require a special compiler (cross-compiler) to compile your code according to your micro-controller. For Windows and Linux there are some ready to use cross-compiler available already, but here I’ll explain how to make a cross compiler from scrach. It’s not easy but also not too much difficult if you like to face challenges.. 😉

Ok.. Enough talk… let’s start..

Please note that all the steps given below are tested on Ubuntu 10.04- Ubuntu-12.10 and Fedora. These should work with Linux mint and other Debian based Linux distribution as well.

To build cross-compiler for AVR, you will require following packages. Version of packages mentioned here are tested and working together. Go to respective sides and download all the packages.

Step : 1 Download following packages:

1. binutils-2.19

2. gcc-4.3.2

3. avr-libc-1.6.4

 4. avrdude-5.5

Step : 2 Create two directories in your home directory:

(a) avrcross

(b) avr

Step : 3 Copy above downloaded packages in ‘avrcross’ directory.

Note that we’ll compile the packages in avrcross directory and install them in ‘avr’ directory. So this will be ‘prefix’ for command arguments. Also after installing them in this location you have to add PATH of ‘/home/<user_name>avr/bin’ in search path of your Linux distribution.

Step -4 Besides a C-compiler with gmake and basic unix commands you need also: texinfo, bison, flex, gawk, readline and ncurses. If your system does not have installed them already , then install them first using ‘apt-get install ‘ command:

ex: sudo apt-get install texinfo

sudo apt-get install flex etc

Step : 5 You should switch now to bash unless you use bash already as your default shell. Type:

bash

Step : 6 Open a terminal and and enter to ‘avrcross’ directory by ‘cd avrcross’. And then issue following commands :

1

Installation of binutils-2.19

Step : 6 (a) tar jxvf binutils-2.19.tar.bz2

2a

Output will be look like below screen-shots.

2b

2c

Step : 6 (b) cd binutils-2.19

2d

Step : 6 (c) mkdir obj-avr

2e

Step : 6 (d) cd obj-avr

2f

Step : 6 (e) CC=gcc

2h

Step : 6 (f) export CC

Step : 6 (g) ../configure –target=avr –prefix=/home/mysys/avr –disable-nls –enable-install-libbfd

2i

If no error then you should see output like this:

2k

Step : 6 (h) make

2l

If no error you should see output like given screen shots:

2m

2n

Step : 6 (i) make install

You will see the below output if there is no error.

2o

Step : 6 (j) cd ../..

2p

Installation of gcc-4.2.3

Step : 7 (a) tar jxvf gcc-core-4.2.3.tar.bz2

3a0

Step : 7 (b) cd gcc-4.3.2

3b

Step : 7 (c) mkdir obj-avr

Step : 7 (d) cd obj-avr

3c

Step : 7 (e) ../configure –target=avr –prefix=/home/mysys/avr –disable-nls –enable-languages=c –disable-libssp

3d1

If no error then you will see output like this:

3d2

Step : 7 (f) make

If no error then you will see below output:

3e

Step : 7 (g) make install

If no error then you will see below output:

3f

Note: The above step requires a recent version of MPFR (http://www.mpfr.org/) and gmp (ftp://ftp.gnu.org/gnu/gmp): GMP 4.1+ and MPFR 2.3.0+. Use the packages from your distribution if possible. Under Ubuntu those packages are called libgmp3-dev and libmpfr-dev. Gentoo calls them dev-libs/gmp and dev-libs/mpfr. So if you see error like this then you have to install these packages as well. Follow the below steps if you get the error like below screen shots:

3d_err1

Step : 7 (h) sudo apt-get install libgmp3-dev

3d_err1_sol1

Step : 7 (i) sudo apt-get install libmpfr-dev

3d_err1_sol2

Step : 7 (j) make clean

Step : 7 (k) make

Step : 7 (l) make install

Step : 7 (h) cd ../..

Installation of avr-libc-1.6.4

Step : 8 (a) tar jxvf avr-libc-1.6.4.tar.bz2

4a1

Step : 8 (b) cd avr-libc-1.6.4

Step : 8 (c) PREFIX=/home/mysys/avr

Step : 8 (d) export PREFIX

Step : 8 (e) CC=avr-gcc

Step : 8 (f) export CC

4b

Step : 8 (g) PATH=/home/mysys/avr/bin:${PATH}

Step : 8 (h) export PATH

4c

Step : 8 (i) ./configure –build=./config.guess –host=avr –prefix=/home/mysys/avr

4d1

Step : 8 (j) make

If no error then you will see output like this:

4e

Step : 8 (k) make install

4f

Step : 8 (l) cd ..

Installation of avrdude-5.5

Step : 9 (a) tar zxvf avrdude-5.5.tar.gz

5a1

Step : 9 (b) cd avrdude-5.5/

Step : 9 (c) CC=gcc

Step : 9 (d) export CC

Step : 9 (e) ./configure –prefix=/home/mysys/avr

5b

Step : 9 (f) make

5c

Step : 9 (g) make install

If no error then you will get output like below screen shot:

5d

Now the installation is complete. The package ‘avrdude‘ is the utility to program the AVR micro-controller. You are ready to compile the codes for AVR micro-controller and program the chip using ‘avrdude‘.

Note: if you don’t want to follow above steps and make it done in quickest way then execute following command in terminal:

# sudo apt-get install make avr-libc avrdude binutils-avr gcc-avr gdb-avr

You can build your own programmer that work with avrdude or you can buy it from here at a cheap cost. In up-coming posts you will see how to write the codes and compile them.

Above setup will work with Atmel atmega32, atmega168, amtmega328 and many more.

If you like the post useful then please like and share it. Also don’t forget to like the facebook page of Techawarey. 🙂 🙂

Related posts

2 Thoughts to “Setup of AVR cross-compiler in Ubuntu /Linux mint /Fedora”

  1. […] Setup of AVR cross-compiler in Ubuntu /Linux mint /Fedora […]

  2. Anonymous

    Wow mast hai bhai…………….maine bhi kiya….

Leave a Reply to AnonymousCancel reply