PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linux + AVR



dark_flash01
11.03.2006, 10:55
Guten Morgen,
bin gerade dabei ein wenig zu Lernen mit Linux zu arbeiten.
Den Eagle hab ich jetzt schon drauf.
Das nächste Ziel ist, meinen Mega32 programmieren zu können unter Linux.
Brauch ich wohl einen Gcc Compiler, die Libraries und ein Übertragungsprogramm dazu.
Wie heissen die Programme unter Linux?
Ich benutze Kubuntu.

Mfg Basti

izaseba
11.03.2006, 11:27
suchmal nach avr-gcc und avrdude

Gruß Sebastian

dark_flash01
11.03.2006, 11:37
gcc-avr hab ich jetzt gefunden. Wie benutze ich den?
AVRdude kennt er nicht. Habe dafür grade avrp und avrprog gezogen, weiss aber nicht wie ich das bediene... Kann mir jemand helfen?

Danke für den GCC.
Basti

izaseba
11.03.2006, 11:54
Wie benutze ich den?
1. Anlaufstelle http://www.nongnu.org/avr-libc/user-manual/index.html
2. Anlaufstelle https://www.roboternetz.de/wissen/index.php/Avr-gcc

Die Reihenfolge ist natürlich beliebig.



AVRdude kennt er nicht.
Das Programm heißt avrdude und nicht AVRdude, kennen müßte es jede gute Distri :-k
Am sonsten hier (http://download.savannah.gnu.org/releases/avrdude/) runterladen, entpacken, kompilieren, freuen.

avrp und avrprog kenn ich nicht, es gibt aber 2 Anhaltspunkte für Dich:
1. man avrp bzw avrprog
2. avrp --help bzw. avrprog --help

Gruß Sebastian

johannuhrmann
11.03.2006, 12:04
gcc-avr hab ich jetzt gefunden. Wie benutze ich den?

Hi,

damit es benutzbar wird, brauchst Du noch die avr-libc. Sie enthält die Grundfunktionen,
die Du zum Programmieren brauchst.

Unter http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial gibt es ein gutes Tutorial.

Für meine eigene Installation habe ich http://www.tldp.org/linuxfocus/Deutsch/November2004/article352.shtml als
Vorgabe genommen.

hier übrigens mein erstes Testprogramm:


/*
einfaches Testprogramm, das eine LED an PB0
blinken laesst.

J. Uhrmann, 02.02.2006
*/

#include <avr/io.h>

#define F_CPU 1000000 /* Takt: 1MHz */
#include <util/delay.h>

void main(void)
{
/* Initialisierung */

/* Port PB0 als Ausgang definieren */
DDRB |= _BV(PB0);

/* in einer Endlosschleife blinken lassen */
while (1)
{
/* Ausgang auf LOW */
PORTB &= ~_BV(PB0);

_delay_ms(500);

/* Ausgang auf HIGH */
PORTB |= _BV(PB0);

_delay_ms(500);
}
}


und hier das Makefile, das die hex-Datei erstellt und mit make load auch gleich mit uisp auf den Controller lädt.


# Erstellungsregeln fuer das Beispielprogramm

.PHONY: load clean

# Zielgerät ist ein ATMega16
MCU=atmega16

# Programmiert wird er mit einem Parallelportkabel (bsd-Style, siehe Homepage von uisp)
PROGTYPE=bsd

CC=avr-gcc
OBJCOPY=avr-objcopy
CFLAGS=-g -mmcu=$(MCU) -Wall -Wstrict-prototypes -Os -mcall-prologues

blink.hex: blink.out

load: blink.hex
uisp -dprog=$(PROGTYPE) --upload if=$^


%.hex: %.out
$(OBJCOPY) -R .eeprom -O ihex $^ $@

%.out: %.o
$(CC) $(CFLAGS) -o $@ -Wl,-Map,$@.map $^

%.o: %.c
$(CC) $(CFLAGS) -Os -c $^

clean:
-rm *.o *.hex *.map


Grüße,

Hans