PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Benötige hilfe compiler spinnt



Sim Robot
18.01.2008, 16:22
Ich habe wie in der anleitung beschrieben das Programm test.c geöfnet.Doch da kommt immer eine felermeldung die ich nicht verstehe.

Die sieht so aus:

> "D:\ASURO_src\FirstTry\Test-all.bat"

D:\ASURO_src\FirstTry>make all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
[ -s asuro.d ] || rm -f asuro.d
/usr/bin/sh: asuro.d: Permission denied
<built-in>:0: fatal error: when writing output to : Invalid argument
compilation terminated.
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
/usr/bin/sh: test.d: Permission denied
<built-in>:0: fatal error: when writing output to : Invalid argument
compilation terminated.
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 4.2.2 (WinAVR 20071221)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
In file included from asuro.h:34,
from test.c:1:
c:/winavr-20071221/bin/../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
Assembler messages:
Fatal error: can't create test.o: Permission denied
make: *** [test.o] Error 1

> Process Exit Code: 2
> Time Taken: 00:00

kann mir da jemand sagen woran das liegt???

Steinigtmich
18.01.2008, 16:37
Sieht so aus als ob D:\ASURO_src\FirstTry\ schreibgeschützt ist.
Desweiteren, Du solltest in asuro.h mal include <avr/signal.h> auskommentieren bzw durch include <avr/interrupt.h> ersetzen.
Die signal.h stammt noch aus älteren avrlibc-Versionen.

Sim Robot
18.01.2008, 19:38
Stimmt ich habe make und clean mit der CD verknüpft(die ist selbstverständlich kopiergeschutzt). Alsu habe ich eine Kopie auf dem datenträger C:\ gemacht und es hat funktionirt. aber jetzt funktionirt das flshen nicht mehr. Weiß jemand warum :?: bei contact Asuro gibt er ein Timeout aus. das habe ich 10min. voher behoben und jetzt funktionirt es schon wieder nicht.
Ich bin mit meiner weißheit am ende :cry: :cry: :cry:

uwegw
18.01.2008, 20:36
Was ergibt der Terminal-Test des Transceivers?

Sim Robot
19.01.2008, 09:07
Moin,
Ich habe es gerade noch einmal getestet und habe die buchstaben nachgezählt und bin auf ca. 500 richtige buchstaben gekommen. Das reich aus.
Übrigens den Flash feler habe ich behoben indem ich die Timeout Zeit verstelt habe(Die ist immernoch verstelt aber es funktionirt nicht auch mit der "original Zeit").

Sim Robot
20.01.2008, 15:36
Das Problem Hat sich von aleine gelöst.
Doch immer wenn ich ein Programm compeliren möchte und es unter test.c gibt er immer den Feler code:2 aus begründet es mit(ich benutze die bibliothek <avr/interrupt.h> ):


test.c: In function 'main':
test.c:4: warning: implicit declaration of function 'Init'
test.c:5: warning: implicit declaration of function 'StatusLED'
test.c:5: error: 'RED' undeclared (first use in this function)
test.c:5: error: (Each undeclared identifier is reported only once
test.c:5: error: for each function it appears in.)
test.c:9:2: warning: no newline at end of file
Und so sieht mein Programm aus


#include <avr/interrupt.h>

int main(void){
Init ();
StatusLED(RED);
//BakLED(on,on);
while(1);
return 0;
}

liggi
20.01.2008, 15:56
du must in asuro.h den interrupt.h includen und in dein programm asuro.h

mfg liggi

uwegw
20.01.2008, 16:03
Ohne
#include "asuro.h"
wird es nicht gehen... dann weiß der Compiler zb nicht, dass es überhaupt ne StatusLED gibt, die eingeschaltet werden könnte.

Der Fehler in Zeile 5 lautet frei übersetzt: "Hilfe, hier wird eine Funktion namens StatusLED aufgerufen. Die kenn ich aber noch gar nicht! Ich hab keine Ahnung, was ich machen soll, wenn im Quelltext ein Aufruf von StatusLED kommt! PANIK! FEHLER! ICH KOMPLIER HIER NIX MEHR!" ;)

In der asuro.h und asuro.c ist aber erklärt, was StatusLED machen soll. Und wenn man nun den Verweis auf die asuro.h einfügt, findet der Compiler dort alle Informationen, die er braucht. Und dann müsste es einwandfrei laufen.

Sim Robot
20.01.2008, 17:33
Aber wenn ich die Bibliothek #include "asuro.h" benutze sagt der Compiler mir:
In file included from asuro.h:34,
from asuro.c:29:
c:/winavr-20071221/bin/../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
Auserdem Wurde es mir doch oben genauso gesagt

Sieht so aus als ob D:\ASURO_src\FirstTry\ schreibgeschützt ist.
Desweiteren, Du solltest in asuro.h mal include <avr/signal.h> auskommentieren bzw durch include <avr/interrupt.h> ersetzen.
Die signal.h stammt noch aus älteren avrlibc-Versionen.
Was muss ich denn jetzt tun :?: :?: :?:

liggi
20.01.2008, 18:29
in asuro.h die include <avr/interrupt.h> durch <avr/signal.h> ersetzen, auch in asuro.c.

mfg liggi

Hansi41
20.01.2008, 18:29
hallo,
es heißt ebenfalls auch nicht:
while(1);
sondern:
while(1)
return 0;

Das ist deswegen so glaube ich, da dieses while(1) nur eine bedingung darstellt.

Hoffe das stimmt^^
Hans

Sim Robot
20.01.2008, 18:37
in asuro.h die include <avr/interrupt.h> durch <avr/signal.h> ersetzen, auch in asuro.c.

Und wie mache ich das:?: :?:

Steinigtmich
20.01.2008, 18:46
Nein, genau umgekehrt!
Die signal raus, die interrupt rein.

Öffne einfach die asuro.h
Dort findest Du

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>


welches Du ersetzt in


#include <avr/io.h>
#include <avr/interrupt.h>
//#include <avr/signal.h>



Alternativ komlettes Löschen von #include <avr/signal.h>

Sim Robot
20.01.2008, 18:52
Jetzt zeigt mir der Compiler
vr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
test.c:1:20: warning: extra tokens at end of #include directive
test.c:9:2: warning: no newline at end of file
avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c -o asuro.o
avr-gcc -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.o test.o asuro.o --output test.elf -Wl,-Map=test.map,--cref -lm
avr-objcopy -O ihex -R .eeprom test.elf test.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O ihex test.elf test.eep
c:\WinAVR-20071221\bin\avr-objcopy.exe: --change-section-lma .eeprom=0x00000000 never used
avr-objdump -h -S test.elf > test.lss
An. Ist das schlimm?

uwegw
20.01.2008, 20:18
Scheint, als hättest du irgendwo ein Zeichen zu viel oder zu wenig rausgelöscht. Außerdem sollst du am Ende der Datei eine zusätzliche Leerzeile einfügen.

Beides sind nur Warnungen, aber keine Fehler. Daher müsste das Programm so trotzdem laufen. Generell sollte man aber auch immer auf die Warnungen achten. Sie geben manchmal Hinweise auf Logik- oder Schreibfehler, die zwar korrektes C ergeben, aber keinen Sinn haben.

sloti
20.01.2008, 20:21
Also die Warnung " no newline at end of file" ist egal die kannste vernachlässigen, aber die andere Warnung hab ich bisher noch nicht gesehen, d.h. ich weiß nicht was es bedeutet.

mfg
Erik

uwegw
20.01.2008, 21:00
Die Meldung kann ich zb mit
#include <stdint.h>>
reproduzieren. Sie scheint darauf hinzudeuten, dass da eine unvollständige Präprozessoranweisung steht. Und da der Präprozessor anders auswertet als der Compiler, scheint er solche Fehler zu ignorieren...

Phil23
28.01.2008, 00:37
ich hab das selbe Problem wie Sim Robot.
Der Selbst-Test hat funktioniert aber alles was ich versuche zu flashen geht nicht. Die Status LED zeigt immer nur grün. Im Thread https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=37379&highlight=asuro+programm
sagst du, du hättest das Problem gelöst über hier diesen Thread.
Kannst du das vielleicht erläutern.
Danke

Sim Robot
28.01.2008, 17:05
Was gibt es denn groß zu erläutern? Alles was mann wissen muss steht doch oben. Und was nicht oben Steht weiß ich auch nicht.