PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR-GCC unter Linux



DanDanger
29.09.03, 04:58
Hallo,
ich möchte meine ATMEL-Microcontroller gerne auch unter Linux Programmieren.
Da ich ein C-Fan bin, würde ich gerne den AVR-GCC Benutzen, da ich das Teil schon aus Windows-Zeiten kenne (z.B. von http://www.avrfreaks.net , http://www.mikrocontroller.net )

Genau dazu hab' ich da mal ne' kleine Frage zum AVR-GCC unter Linux :

Das AVR-GCC Release von : http://savannah.nongnu.org/download/avr-libc/released/ sieht mir stark nach dem "Original" GCC aus.


Meine Frage : Kann man mit dem "normalen" gcc (der ja jeder Distri Beiliegt) auch AVR-Programme Kompilieren ??
Kennt jemand eine gute(!) Installationsanleitung für den AVR-GCC unter Linux ???

Neugierige Grüsse
DanDanger

Avic
29.09.03, 19:26
Hallo,

Du musst Dir schon noch einen für AVR's kompilieren / installieren . Du hast dann quasi einen für avr und einen für den restlichen Kram. Ich glaub nicht das der Deiner Distri beiliegt.
Eine Anleitung zum installieren findest Du hier:
http://www.linuxfocus.org/Deutsch/March2002/article231.shtml

Grüsse

oClock
18.10.03, 17:38
Hi,

hier findest du eine gute Anleitung:

http://savannah.nongnu.org/download/avr-libc/doc/avr-libc-user-manual/install_tools.html

(Hab ich auch vor ein paar Monaten installiert und geht so wie dort beschrieben problemlos)

Gruß,
oC

G400
08.12.03, 18:48
Ich schieb das mal hoch :rolleyes:

Hat jemand noch nen Link oder Tipps für die Installation von AVR GCC unter Suse 9.0.

Bei http://savannah.nongnu.org/ gibts nix mehr und die Anleitung bei
http://www.linuxfocus.org/Deutsch/March2002/article231.shtml
funktionier leider nicht so ganz
:eek:

DanDanger
09.12.03, 14:37
Hi,

hmm, sieht wirklich so aus, als ob's http://savannah.nongnu.org/ nicht mehr gibt.

Ist aber nicht soo das Problem, da das Compilieren eigentlich ganz einfach geht :

1)
Lade Dir den Original gcc (z.B. von http://gcc.gnu.org/ ) herunter.
Aktuell ist z.Z. Ver. 3.3.2

2)
Log Dich (z.B. per "su") als "root" ein, und lege in /usr/local/bin ein neues avr-gcc Verzeichniss an ("mkdir /usr/local/bin/avr-gcc")

3)
Entpacke den Original gcc (aus Schritt 1) in irgendein Verzeichniss
und starte das Configure-Script mit
"configure --target=avr --prefix=/usr/local/bin/avr-gcc --disable-nls --enable-language=c"

4) nach einem make und (als root) make install musst du nur noch
/usr/local/bin/avr-gcc/bin in deine SHELL-Veriablen übernehmen.

Das ganze funzu eigentlich genauso, wie auf
http://www.linuxfocus.org/Deutsch/March2002/article231.shtml
beschrieben.

Wenn irgendwas nicht so funzt, wie es sollte, dann beschreib mal genauer,
was nicht funzt (Probleme beim Compilieren, beim configure-Script. ect.)

Gruss
DanDanger

G400
09.12.03, 21:24
Der Compiler geht jetzt soweit... nur hab ich noch 2 Probleme:

Wie krieg ichs hin, dass er mir das Programm für den ATmega 8 kompliert
und wie krieg ich das Programm in den AVR außer mit UISP.

geronet
09.12.03, 22:06
Ponyprog nütze ich sehr gern, ist ein guter Programmer.

Kompilieren kannst du es mit einem simplen Makefile, musst es nur anpassen:



MCU=atmega16
CC=avr-gcc
OBJCOPY=avr-objcopy
# optimize for size:
CFLAGS=-g -mmcu=$(MCU) -Wall -Wstrict-prototypes -Os -mcall-prologues
#-------------------
all: binuhr.hex
#-------------------
binuhr.hex : binuhr.out
$(OBJCOPY) -R .eeprom -O ihex binuhr.out binuhr.hex
binuhr.out : binuhr.o
$(CC) $(CFLAGS) -o binuhr.out -Wl,-Map,binuhr.map binuhr.o
binuhr.o : binuhr.c
$(CC) $(CFLAGS) -Os -c binuhr.c


# you need to erase first before loading the program.
# load (program) the software into the eeprom:
#load: avrledtest.hex
# uisp -dlpt=/dev/parport0 --erase -dprog=dapa
# uisp -dlpt=/dev/parport0 --upload if=avrledtest.hex -dprog=dapa -v=3 --hash=32
# here is a pre-compiled version in case you have trouble with
# your development environment
#load_pre: avrledtest_pre.hex
# uisp -dlpt=/dev/parport0 --erase -dprog=dapa
# uisp -dlpt=/dev/parport0 --upload if=avrledtest_pre.hex -dprog=dapa -dno-poll -v=3 --hash=32
#-------------------
clean:
rm -f *.o *.map *.out
#-------------------

G400
09.12.03, 22:15
Genau das liegt das Problem:
Wenn ich in dem Makefile MCU=atmega8 eingeb, krieg ich folgende Meldung:
Meine Makefile ist ziemlich identisch mit deiner.


avr-gcc -g -mmcu=atmega8 -Wall -Wstrict-prototypes -Os -mcall-prologues -Os -c avrledtest.c
Unknown MCU `atmega8' specified
Known MCU names:
avr2
at90s2313
at90s2323
attiny22
at90s2333
at90s2343
at90s4414
at90s4433
at90s4434
at90s8515
at90c8534
at90s8535
avr3
atmega103
atmega603
avr4
atmega83
atmega85
avr5
atmega161
atmega163
atmega32
at94k
avr1
at90s1200
attiny10
attiny11
attiny12
attiny15
attiny28
cc1: MCU `atmega8' not supported
In file included from /usr/local/atmel/avr/include/io.h:20,
from avrledtest.c:11:
/usr/local/atmel/avr/include/io-avr.h:75:4: warning: #warning "device type not defined"
avrledtest.c:31: warning: return type of `main' is not `int'
avrledtest.c: In function `main':
avrledtest.c:33: `DDRD' undeclared (first use in this function)
avrledtest.c:33: (Each undeclared identifier is reported only once
avrledtest.c:33: for each function it appears in.)
avrledtest.c:33: `PD5' undeclared (first use in this function)
avrledtest.c:36: `PORTD' undeclared (first use in this function)
make: *** [avrledtest.o] Fehler 1

geronet
09.12.03, 22:44
avr-gcc --target-help gibt dir Auskunft.

AlienSearcher
18.06.04, 14:15
Aich empfehlenswert sind die AVR-GCC RPM's von http://cdk4avr.sourceforge.net/ ;) Die laufen bei mir einwandfrei und waren auch schön schnell installiert :cool: