PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : StudioAVR mit AVRGCC einbinden



chouifi
23.10.2006, 15:39
Hallo Zusammen,
seit 2 Tagen versuche ich WinAVR(WinAVR-20060421) mit StudioAVR(aStudio4b460)einzubinden..... leider hat bei mir nicht geklappt zwar sie sind eingebunden aber bei building bekomme ich folgende Fehler :

Build started 23.10.2006 at 16:23:18
*avr-gcc -mmcu=atmega8515 -lc -lm -lprintf_flt -lprintf_min -lscanf_flt -lscanf_min -o test.elf
*C:/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/avr4/crtm8515.o: In function `__vectors':
../../../../../avr-libc-1.4.4/crt1/gcrt1.S:51: undefined reference to `main'
make: *** [test.elf] Error 1
Build failed with 1 errors and 0 warnings...

danke für die Hilfe

chouifi
23.10.2006, 15:42
die Frage
was mache ich hier falsch......!

ogni42
23.10.2006, 15:45
Du hast keine main() Funktion in Deinem Code (sagt zumindest die Fehlermeldung)

Vielleicht kannst Du mal Code und Makefile posten.

chouifi
23.10.2006, 15:59
hier ist mein CODE




/************************************************** ***********************
*
* .C
/************************************************** ***********************
*
* .C
*
************************************************** ***********************/

/************************************************** ***********************
* History
*
* Date Name Description
*-------------------------------------------------------------------------
* 05656 CHIS created
*
************************************************** ***********************/
#include <avr\io.h> // Wir brauchen Zugriff auf die I/O's des Controllers
#include <avr\signal.h>
#include <avr\interrupt.h>
#include <avr\eeprom.h> // Und auf das Flash
#include <inttypes.h>

volatile int timer_flag, s;
int i, t1s;

#define FCLOCK 8000000

// Timer 0
// presc. = 1024
// incr. = 7.813kHz bzw. 0.12ms
#define TCNT0_Reload (256-(FCLOCK/256)/100)

/************************************************** ***********************
*
* für Quartz 8.000MHz
*
************************************************** ***********************/
SIGNAL(SIG_OVERFLOW0) {
outb(TCNT0, TCNT0_Reload); // timer neu laden

timer_flag = 1;
}



int main(void) {



/******* FÜR UART********/

outb(DDRC, 0xff);
outb(DDRD, 0xff);
/*
* MainLoop
* Timer 1 initialisieren
*/
//outb(TCNT0, TCNT0_Reload);
outb(TCCR0, 0x03); //1024= 7.813 KHz
outb(TIMSK, inb(TIMSK) | BV(TOIE0)); /* enable T0 IRQ */

// BV (1<<TOIE0)

// gloabel IRQ-Bit setzen
sei();

/************************************************** ***********************
* MAIN_Loop
*/
for(;;) { // ... ever

while(!timer_flag) { /* warten auf 1s */
}
timer_flag = 0;

t1s++;
if(t1s >8000) {
t1s = 1;

if(bit_is_clear(PORTC, PINC0)){
sbi(PORTC, 0);
s=s+1;
if(s==1){
s=0;
sbi(PORTD, 5);

}
cbi(PORTC, 1);
sbi(PORTC, 2);
cbi(PORTC, 3);

cbi(PORTC, 4);
sbi(PORTC, 5);
cbi(PORTC, 6);
sbi(PORTC, 7);

} else {
cbi(PORTC, 0);

sbi(PORTC, 3);
cbi(PORTC, 2);
cbi(PORTD, 5);
sbi(PORTC, 1);
sbi(PORTC, 4);
cbi(PORTC, 5);
sbi(PORTC, 6);
cbi(PORTC, 7);

}
}
} // for(;;)
return 0;
}


/* eof */

SprinterSB
23.10.2006, 16:00
Und wo ist deine main() definiert? Wohl kaum in den Bibliotheken libc.a libm.a libprintf_flt.a libprintf_min.a libscanf_flt.a oder libscanf_min.a

Du linkst *nur* diese Bibliotheken zu einem ausführbaren elf??? :-k

SprinterSB
23.10.2006, 16:02
Es heisst immer
#include <avr/io.h>
Niemals \ verwenden!
Wo linkst du das Objekt, das aus deieser C-Quelle entsteht, dazu? Ist es zum Projekt hinzugefügt, etc?

chouifi
23.10.2006, 16:09
vilen danke für deine schnelle Antwort
ich habe \ korrigiert.
aber trotzdem bleibt gleiche Fehler...soll ich etwas im MAKEFILE änderen
Wo linkst du das Objekt, das aus deieser C-Quelle entsteht, dazu? Ist es zum Projekt hinzugefügt, etc?

wo soll ich das Objekt linken...? und wie ?

danke

ogni42
23.10.2006, 16:24
Ist die C Datei denn in Deinem Projekt drin? Wie heisst die?

SprinterSB
23.10.2006, 16:25
Ich vermute mal, du verwendest ein automatisch von AVR-Studio erzeugtes Makefile und hast deine Dateien im Studio importiert. Der Makefile-Generator von Studio sollte eigentlich von deinen Quellen Notiz nehmen und sie im Makefile entragen.

chouifi
23.10.2006, 16:30
Ist die C Datei denn in Deinem Projekt drin? Wie heisst die?

es heisst test.c

chouifi
23.10.2006, 16:32
Ich vermute mal, du verwendest ein automatisch von AVR-Studio erzeugtes Makefile und hast deine Dateien im Studio importiert. Der Makefile-Generator von Studio sollte eigentlich von deinen Quellen Notiz nehmen und sie im Makefile entragen.

eigentlisch ich benuze erzeugte Mikefile von Avrstudio?
soll ich selber make file erzeugen?
danke

chouifi
23.10.2006, 16:42
Ich vermute mal, du verwendest ein automatisch von AVR-Studio erzeugtes Makefile und hast deine Dateien im Studio importiert. Der Makefile-Generator von Studio sollte eigentlich von deinen Quellen Notiz nehmen und sie im Makefile entragen.

eigentlisch ich benuze erzeugte Mikefile von Avrstudio?
soll ich selber make file erzeugen?
danke

chouifi
25.10.2006, 13:35
es hat endlisch geklappt, es war ein Fehler im Quelltext.
ich kann jetzt programmieren............danke
für alle, die hilfsbereit waren.
mfg