Avr-gcc

From Attie's Wiki
(Difference between revisions)
Jump to: navigation, search
Line 76: Line 76:
 
{| border="1"
 
{| border="1"
 
|-
 
|-
|  1 - brown  ||  ||align="right | gray - 2
+
|  1 - brown  ||  ||align="right |gray - 2
 
|-
 
|-
|  3 - yellow  ||  ||align="right | orange - 4
+
|  3 - yellow  ||  ||align="right |orange - 4
 
|-
 
|-
|  5 - red  ||  ||align="right | black - 6
+
|  5 - red  ||  ||align="right |black - 6
 
|}
 
|}
  

Revision as of 01:22, 25 March 2010

How to setup avr-gcc and get compiling for an Arduino!

$ yum install avr-gcc avr-libc avr-binutils avrdude

Contents

avrdude

For ATMega168:

$ avrdude -c buspirate -P /dev/ttyUSB1 -x speed=3 -p m168

For ATMega328p:

$ avrdude -c buspirate -P /dev/ttyUSB1 -x speed=3 -p m328p

Terminal mode: -t. Use command part to see detailed part information.
To upload file: -U memtype:op:filename[:format]

makefile

simple

Just produces the .elf and .hex file. Also optimizes for space (HUGE difference)

all:
        avr-gcc avr.c -mmcu=atmega168 -o example.elf -Wall -Os
        avr-objcopy -j .text -O ihex example.elf example.hex
        avrdude -c buspirate -P /dev/ttyUSB1 -x speed=3 -p m168 -U flash:w:example.hex

complex

produces .o, .asm, .map and .lst files too

all:
        avr-gcc -g -mmcu=atmega168 -c avr.c -Wa,-alh,-L -o avr.o > avr.asm
        avr-gcc -g -mmcu=atmega168 -Wl,-Map,example.map -o example.elf example.o
        avr-objdump -h -S example.elf > example.lst
        avr-objcopy -j .text -j .data -O ihex example.elf example.hex
        avrdude -c buspirate -P /dev/ttyUSB1 -x speed=3 -p m168 -U flash:w:example.hex

sample source

blink

/* 8 Mhz cpu */
#define F_CPU 8000000UL
 
/* led pin */
#define LED 0b00100000
 
#include <util/delay.h>
#include <avr/io.h>
 
int main(void) {
  /* set port b direction register to output for led pin */
  DDRB = LED;
 
  while(1) {
 
    /* turn led off */
    PORTB &= ~LED;
    _delay_ms(450);
 
    /* turn led on */
    PORTB |= LED;
    _delay_ms(50);
  }
}

icsp pins

connecting to bus pirate

1 - brown gray - 2
3 - yellow orange - 4
5 - red black - 6

other commands

avr-size example.elf
avr-gcc --help=optimizers

resources

https://www.mainframe.cx/~ckuethe/avr-c-tutorial/
http://arduino.cc/en/Hacking/PinMapping168
http://hintshop.ludvig.co.nz/show/buspirate-avr-programming/
http://itp.nyu.edu/physcomp/uploads/6pinAVRproghead.jpg
http://dangerousprototypes.com/bus-pirate-manual/
http://www.ladyada.net/library/arduino/bootloader.html

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox