I have been using PIC Microcontrollers
for my robotics tinkering for a few years. I have also been primarily a Linux user for the last year or two, and have been able to rely on Linux for my work (Web Developer), my school (Computer Science), and all my personal work (robotics, programming, and other nerdy stuff of that nature). I resisted the Atmel
AVR Microcontrollers for some time, despite their growing popularity within the hobby robotics community, due to the countless hours I had invested in PICs. However, after learning that the AVRs were designed with C and the GNU tools in mind--a toolset that I use regularly for schoolwork and personal programming projects--I had to give it a further look.
I read through the datasheet of the ATMega8 and the ATiny15L devices, and found that my knowledge with PICs would not be in vain and realized I would be able to learn AVRs quickly and be able to use my good ol' gcc and gdb to do so. Although I have worked with PICs in Linux, I found some things to be much more tedious than worthwhile (such as using PWM in gpsim as opposed to MPLab in Windows)-- not to mention that I never did get my programmer working in Linux. As nerdy as it is, I absolutely despise having to reboot into Windows to do anything
. So, the AVRs seemed like a good choice.
This is the first of (hopefully) several articles on the topic of programming AVR microcontrollers in Linux using C. This particular article is more like "installation notes" than an article. It shows the commands to install the tools to write, compile and debug AVR programs. The next article will discuss using these tools. I am not including the tools to actually program the chip at this time, however, I will in a future article (I'll be using avrdude
with the AvrUsb500
Setup the Environment
Make a directory for the programs and add the 'bin' path for the AVR tools to your PATH environment variable:
You may additionally want to add that path to your /etc/profile file:
Download the most recent release of the Binary Utilities from http://ftp.gnu.org/gnu/binutils/
Extract binutils archive:
tar -xzf binutils-2.16.tar.gz
Configure and install binutils:
../configure --target=avr --prefix=/usr/local/avr --program-prefix="avr-"
GNU C Compiler
Download most recent release of the GNU C Compiler (gcc) from ftp://ftp.gnu.org/gnu/gcc/
Extract gcc-core archive:
tar -xvf gcc-core-4.0.2.tar.bz2
Configure and install gcc:
../configure --target=avr --prefix=/usr/local/avr --enable-language=c --program-prefix="avr-"
In this step, configure was run from a directory ('obj') that does not reside in the same directory as the source files. This is required. If you do not do this, you will get the following error:
configure: error: Building in the source directory is not supported in this release. See http://gcc.gnu.org/install/configure.html for more details.
If you get the following error, then you did not correctly get /usr/local/avr into you PATH variable (step 1):
make: avr-ar: Command not found
AVR C Library
Download most recent release of the AVR C Library from http://download.savannah.gnu.org/releases/avr-libc/
Extract the avr-libc archive:
tar -xvf avr-libc-1.4.3.tar.bz2
Configure and install avr-libc:
./configure --build=`./config.guess` --host=avr --prefix=/usr/local/avr
Download the most recent release of the GNU Debugger from http://www.gnu.org/software/gdb/download/
Extract the gdb archive:
tar -xzf gdb-6.4
Configure and install gdb:
./configure --prefix=/usr/local/avr --program-prefix="avr-"