You are on page 1of 20

WinAVR and C Debugging

Tutorial
By Adam Bailin
ECE 353 Fall 06

ECE 353
Introduction
WinAVR is a set of developing tools for
Atmel AVR RISC microprocessors

Programs written in C, compiled with GCC


and avr-libc

Open source, obtained at:


winavr.sourceforge.net
ECE 353 2
Installing
Fairly easy to install (for use at home)
http://winavr.sourceforge.net/
Comes with all the tools you need:
Programmers Notepad, MFile

ECE 353 3
Programmers Notepad
Programmers Notepad is the main tool
you will be using to write your C code
Just like any other compiler
syntax highlighting
Support for different programming languages
Ability to compile your code (using gcc
compiler)

ECE 353 4
Adding external tools
In Programmers Notepad, select Tools->Options,
and select Tools on the left side of screen

ECE 353 5
Adding external tools (continued)
Select a Scheme (C/C++)
Click on Add
Name is an identifier for this
tool
Command is the command
used
Folder should be %d (Path of
file)
This tool will call make
extcoff, and is now available
under Tools menu
We will need this later for
debugging in AVR Studio
ECE 353 6
Example C Program
// blinky.c
#include <avr/io.h> // Standard AVR header
#include <avr/delay.h> // Delay loop functions

int main(void)
{
DDRA = 0xFF; // PORTA is output
while (1) {
for (int i=1; i<=128; i*=2) {
PORTA = i;
_delay_loop_2(30000);
}
for (int i=128; i>1; i/=2) {
PORTA = i;
_delay_loop_2(30000);
}
} // end while
}

ECE 353 7
Building your source
Write your C source, save as blinky.c
Open up MFile
Makefile -> Main File Name = blinky (no .c)
Makefile -> MCU Type = atmega32
Other values should be fine at default
File -> Save As to blinky.c directory
In Programmers Notepad: Select Tools
->Make All
ECE 353 8
MFile
Simple program to make Makefiles for
compiling your C code
A Makefile is a configuration file that tells
the compiler how to compile your code
What chip youre using (atmega32)
Target filename (blinky.c)

ECE 353 9
GNU Make
WinAVR uses Makefiles when building
projects, with GNU Make

GNU Make builds dependencies and then


source files

Will only rebuild files from updated or new


source (saves time)

Very powerful tool: see


C:\WinAVR\doc\gnu\make.html for more info

ECE 353 10
Makefiles (continued)
Makefiles are tab-sensitive: tab != space

Lines starting with tab are executed as


commands

Misuse of tabs will lead to improper


separator error

ECE 353 11
Example Makefile
## all and clean targets must be defined!
# make or make all will build dependencies in the order they are given

all: begin project2 end

begin:
@echo Starting build
project2:
avr-gcc project2.c
end:
@echo Build complete

clean:
rm project2.o
ECE 353 12
Programming your ATmega32
To program your chip with the C code you
wrote:
Go to AVR Studio
Connect to your chip using JTAG ICE
Go to Fuses tab, make sure Ext Clock is set
In Program tab, flash your chip with the .hex
file you compiled in Programmers Notepad
Thats it!

ECE 353 13
C Debugging in AVR Studio
AVR Studio provides a way to debug both the C
source code and the assembly code.
To do that you just need to change the type of
the COF file generated by the compiler.

Open the Programmers Notepad (WinAVR)


Use the editor to edit the flags in makefile:
DEBUG = stabs // will allow for C debugging
OPT = 0 // will turn off compilers
optimization
Save the makefile
ECE 353 14
ECE 353 15
Building C code for Debugging
In the Programmers Notepad (WinAVR):

Go to Tools Options Tools


Pull down the Schemes window and click on
C/C++ option
A make extcoff option will appear; click OK
Click on Tools again
Click on make extcoff to generate the COF file
(this will generate the correct debug file for AVR
Studio that includes the C code information)
ECE 353 16
ECE 353 17
Debugging in AVR Studio
Connect Olimex to PC and JTAG
Open the AVR Studio
Open the COF file
(it will guide you to select the debug platform
(JTAG) and the device (Atmega 32))
The C code will appear in the main window
Optional (useful!) view the assembly code:
go to View Dissassembler
You can put assembly code next to C code
(tile vertically) and step through both codes!
ECE 353 18
ECE 353 19
Additional Information
Additional Information can be found at the
WinAVR website:

winavr.sourceforge.net

ECE 353 20

You might also like