PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit avr-ld



ulli27
04.04.2007, 23:01
Hallo,

habe die avr-toolchain unter ubuntu installiert, sowie die kontrollerlab-ide. Nun versuche ich verzweifelt ein kleines Demoprogramm zu builden, komme jedoch über das Kompilieren nicht hinaus.

Kontrollerlab gibt beim Build folgendes aus:

avr-gcc -mmcu=atmega8 -Wall -g -O1 -c hello.c -o hello.o
avr-ld hello.o -mmcu=atmega8 -g -o project.out -Wl,-Map,project.map
avr-ld: unrecognised emulation mode: mcu=atmega8
Error(s) occured: The exit status was 1.

Wenn ich avr-ld aus der Konsole starte mit:
avr-ld hello.o -m avr4 -v -g -o project.out

bekomme ich folgendes:
GNU ld version 2.16.1
hello.o in function 'main':
/.../hello.c:4: undefined reference to '__stack'
/.../hello.c:4: undefined reference to '__stack'

Der Vollständigkeit halber noch der Quellcode:

#include <avr/io.h>

int main(void){
DDRB = 0XFF;
PORTB = 0x03;

while(1){
}

return 0;
}

Kann mir jemand helfen? Liegt es vielleicht an der Installation der Toolchain (habe die Komponenten mit apt-get install installiert...)

Vielen Dank und viele Grüße,
\Ulli.

SprinterSB
05.04.2007, 08:13
Hast du schon mal versucht, avr-gcc als Linker zu verwenden?



avr-gcc hello.o -mmcu=atmega8 -o project.out -Wl,-Map,project.map


gcc ist ja "nur" ein Treiber, der die benötigten Tools (compiler=cc1/cc1plus, assembler=as, linker=ld) aufruft, und zwar mit den passenden Optionen.

ulli27
05.04.2007, 08:30
Werde ich heute abend gleich mal versuchen...

Mit dem Builden "zu Fuß" bin ich absolut nicht vertraut. Wollt eigentlich mit der IDE vom Kontrollerlab arbeiten und habe mir das Vorgehen nur aus dessen Output und den Project-Settings zusammengereimt. Offenbar stimmt aber irgendwas mit meinen Kontrollerlab-Settings oder meinen Pfaden nicht.

Viele Grüße,
\Ulli.

ulli27
05.04.2007, 21:08
Hallo Georg-Johann,
danke für Deinen Hinweis. Wenn ich in den Kontrollerlab-Einstellungen avr-gcc sowohl für den Compiler als auch für den Linker einstelle, funktioniert's. Nur beim object copy command steht dann was anderes: "avr-ojcopy".

Schöne Grüße und schöne Ostern,
\Ulli.

SprinterSB
05.04.2007, 22:11
Das ist ein Fehler. Es muss heissen "avr-objcopy".