Avr-gcc
From Attie's Wiki
(Difference between revisions)
Line 76: | Line 76: | ||
{| | {| | ||
|- | |- | ||
− | |bgcolor="rgb(157,98,66)" width="10px" | | + | | align="right" | brown - 1 ||bgcolor="rgb(157,98,66)" width="10px" | || width="10px" | ||bgcolor="rgb(166,166,166)" width="10px" || 2 - gray | |
|- | |- | ||
− | |bgcolor="rgb(255,250,47)" | | + | | align="right" | yellow - 3 ||bgcolor="rgb(255,250,47)" | || ||bgcolor="rgb(254,156,24)" || 4 - orange | |
|- | |- | ||
− | |bgcolor="rgb(255,13,13)" | | + | | align="right" | red - 5 ||bgcolor="rgb(255,13,13)" | || ||bgcolor="rgb(0,0,0)" || 6 - black | |
|} | |} | ||
Revision as of 01:31, 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
brown - 1 | bgcolor="rgb(166,166,166)" width="10px" | |||
yellow - 3 | bgcolor="rgb(254,156,24)" | |||
red - 5 | bgcolor="rgb(0,0,0)" |
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