2010-06-04 4 views
1

Instructions dans le blinky.zip, section gcc, Teensy ++ v.2. Makefile et blinky.c sont dans le zip. J'ai modifié le blinky.c en définissant F_CPU au début parce que n'utilisant pas Makefile, s'il vous plaît, voir ci-dessous. Alors pourquoi ai-je les erreurs et comment puis-je compiler les fichiers C pour la puce at90usb1286?Erreurs de compilation AVR_GCC delay.h

$ avr-gcc -mmcu=atmega88 blinky.c 

In file included from blinky.c:28: 
/usr/local/lib/gcc/avr/4.2.2/../../../../avr/include/util/delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed" 
/tmp//ccB66ecl.o: In function `main': 
blinky.c:(.text+0x3e): undefined reference to `usb_init' 
/tmp//ccB66ecl.o: In function `morse_character': 
blinky.c:(.text+0x24c): undefined reference to `print_P' 
blinky.c:(.text+0x36e): undefined reference to `print_P' 
blinky.c:(.text+0x378): undefined reference to `usb_debug_putchar' 
blinky.c:(.text+0x37e): undefined reference to `print_P' 
blinky.c:(.text+0x386): undefined reference to `print_P' 
blinky.c:(.text+0x390): undefined reference to `usb_debug_putchar' 
blinky.c:(.text+0x394): undefined reference to `usb_debug_putchar' 
blinky.c:(.text+0x416): undefined reference to `print_P' 
blinky.c:(.text+0x4fa): undefined reference to `print_P' 
blinky.c:(.text+0x6f8): undefined reference to `print_P' 
/tmp//ccB66ecl.o: In function `morse_P': 
blinky.c:(.text+0x834): undefined reference to `print_P' 

Répondre

0

Ce sont des erreurs de liaison. Vous pouvez faire une seule compilation (notez que j'ai ajouté le drapeau -c):

avr-gcc -c -mmcu=atmega88 blinky.c 

Vous devrez alors créer un lien qui avec vos autres objets pour créer un fichier binaire.

Alternativement, vous pouvez fournir tous les fichiers source en une seule ligne de commande et le compilateur compiler et de les relier:

avr-gcc -mmcu=atmega88 blinky.c print.c usb_debug_only.c 
+0

Que voulez-vous dire par « Vous auriez alors à créer un lien qui avec vos autres objets pour créer un binaire. "? AFAIU le programme doit être en HEX pour le télécharger sur la puce Atmel. – otto

+0

@ user355926 - vous avez raison, le programme doit être au format 'ihex' avant d'être téléchargé. Mais vous devez toujours lier le programme avant de pouvoir créer le fichier 'ihex'. –

+0

@R: Comment liez-vous? J'ai été incapable de trouver quelque chose à propos de 'ihex' dans' $ man hexdump'. Comment obtenez-vous le fichier hexadécimal? – otto

Questions connexes