Forum: Compiler & IDEs C Programm wird nicht kompilliert


von mbuettner (Gast)


Lesenswert?

Hallo,

wenn ich versuche, mein C Programm zu kompillieren, kommt die Meldung 
"Das Programm avr1.exe hat Fehler verursacht und wird geschlossen. 
Starten Sie das Programm neu."
Der Quellcode:
1
#include <avr/io.h>
2
3
int main(void)
4
{
5
6
    int n;
7
    DDRB = 0x08;
8
    while(1)
9
    {
10
        PORTB = 8;
11
            for (n = 0; n < 30000; n++);
12
        PORTB = 0;
13
            for (n = 0; n < 30000; n++);
14
    }
15
16
    return 1;
17
}
Dann kommt noch die Meldung:
Process terminated with status 1 (0 minutes, 1 seconds)
0 errors, 0 warnings
Und im Projektverzeichniss finde ich dann kein Hex File. Ich benutze 
Code::Blocks und habe auch schon den Pfad zu WinAVR udn den Compiler 
eingestellt.

von coder (Gast)


Lesenswert?

Ja... denk mal drüber nach, warum man (auch wenn es nie erreicht werden 
sollte bei der Entlosschleife) ein return macht....

und dann schau mal, was dein return macht ;)

Also ganz simple, das letzte ruturn sollte ein return 0 sein, damit klar 
ist, das keine Fehler aufgetreten sind, daran stört sich dein compiler 
offensichtlich...

von Genmutant (Gast)


Lesenswert?

Ich vermute eher, du startest nebenbei das Programm... Das wird dann 
natürlich auf deinem PC nicht funktionieren :D

von mbuettner (Gast)


Lesenswert?

Jetzt habe ich das geändert aber trotzdem kommt immer noch die Meldung 
"cc1.exe hat Fehler verursacht und wird beendet. Starten Sie das 
Programm neu." cc1.exe liegt in e:\WinAVR\libexec\gcc\avr\4.1.1

von mbuettner (Gast)


Lesenswert?

Genmutant schrieb:
> Ich vermute eher, du startest nebenbei das Programm... Das wird dann
>
> natürlich auf deinem PC nicht funktionieren :D

Hallo,

wie denn, wenn es weder ein Hex-File, noch eine exe noch sont irgendein 
File gibt? (Mal abgesehen von dem main.c)

von Genmutant (Gast)


Lesenswert?

Und wo kommt dann die Fehlermeldung deiner Meinung nach her, dass deine 
nichtexistente .exe (?) einen Fehler verursacht hat?

"Das Programm avr1.exe hat Fehler verursacht und wird geschlossen."

von Klaus W. (mfgkw)


Lesenswert?

Da ist der ganze AVR-Kram falsch oder nur zur Hälfte installiert.

von Karl H. (kbuchegg)


Lesenswert?

mbuettner schrieb:
> Jetzt habe ich das geändert aber trotzdem kommt immer noch die Meldung
> "cc1.exe hat Fehler verursacht und wird beendet.

Du solltest dich mit dir selbst einigen, ob du Fehlermeldungen exakt 
widergeben willst oder nicht.
Im Eröffnungsposting war das noch

"Das Programm avr1.exe hat Fehler verursacht

und das ist ein ganz anderes Programm.

Wer hat jetzt den Fehler verursacht:

  cc1.exe       das ist Teil des Compilers.
                d.h. du hast einen Bug im Compiler gefunden, der ihn
                zum Absturz bringt.
                (auch wenn ich das kaum glauben mag)

  avr1.exe      das ist seltsam, denn wo hättest du ein EXE her
                das auf deinem PC läuft?

von mbuettner (Gast)


Lesenswert?

@Genmutant:
Das erste war ein Fehler von mir. Aber warum verursacht cc1.exe einen 
Fehler?

von Karl H. (kbuchegg)


Lesenswert?

mbuettner schrieb:
> @Genmutant:
> Das erste war ein Fehler von mir. Aber warum verursacht cc1.exe einen
> Fehler?

Da ist in deiner Installation des C-Compilers etwas verbockt.

von Peter D. (peda)


Lesenswert?

mbuettner schrieb:
> "Das Programm avr1.exe hat Fehler verursacht und wird geschlossen.
> Starten Sie das Programm neu."

Dann mußt Du feststellen, zu welcher Toolchain diese Programm gehört.
Es gehört nicht zu WINAVR.

Ich würde zu WINAVR das AVRStudio empfehlen, das ist anfängertauglich 
und narrensicher.
Und wenn es damit funktioniert, kannst Du meinetwegen mit 
komplizierteren Toolchains rumbasteln.

Dein Programm wird korrekt compiliert:
1
AVR Memory Usage
2
----------------
3
Device: attiny25
4
5
Program:      60 bytes (2.9% Full)
6
(.text + .data + .bootloader)
7
8
Data:          0 bytes (0.0% Full)
9
(.data + .bss + .noinit)



Peter

von mbuettner (Gast)


Lesenswert?

"Framework Class: Error while connecting to ROT: -2147221164"
"Error in Creating avrFramework"

von mbuettner (Gast)


Lesenswert?

Hmm, jetzt habe ich zwei main.elf, eine main.elf.hex und eine 
main.elf.eep.hex. Welche soll ich in den Microcontroller laden?
Nachdenk

von Albrecht H. (alieninside)


Lesenswert?

Habe gerade mal aus reiner Neugier "Code::Blocks" (16 January 2010 
build) zusätzlich zu einer bestehenden WinAVR+AVRStudio-Installation 
installiert. Funktioniert problemlos, kompiliert ohne Schwierigkeiten 
und erzeugt ein .hex-File im vorher angegebenen Projektverzeichnis.

Eine Datei namens "avr1.exe" konnte ich allerdings nirgendwo entdecken, 
weder in WinAVR noch in Code::Blocks. Kann es sein, dass dein Projekt so 
heißt? Ich vermute mal, abgesehen von einer möglicherweise fehlerhaften 
Installation, du hast da irgendwas falsch eingestellt, deine IDE meint 
vielleicht da würde irgendwas zu "avr1"-(x86) kompiliert werden und 
versucht das dann zu linken und anschließend zu starten, das gibt dann 
im besten Fall eine fehlerhafte .exe oder eine 0-Byte-Datei, die beim 
Versuch sie zu starten diese Fehlermeldung verursacht.

wIE GESAGT prinzipiell funktioniert das alles, und ich habe weder bei 
meiner WinAVR-, noch bei meiner AVRStudio-, noch bei der 
Code::Blocks-Installation besondere Einstellungen vorgenommen, (hat dir 
Code::Blocks angezeigt, dass es AVR-GCC "detected" hat?).


P.S.:

Die "for (n = 0; n < 30000; n++);", werden in der Standardeinstellung im 
Realease-Build ersatzlos wegkompiliert.

von Albrecht H. (alieninside)


Lesenswert?

mbuettner schrieb:
> Hmm, jetzt habe ich zwei main.elf, eine main.elf.hex und eine
> main.elf.eep.hex. Welche soll ich in den Microcontroller laden?
> *Nachdenk*

Die main.elf.hex !

Die main.elf.eep.hex ist eine EPROM-Datei, da hast du bis jetzt aber 
noch nichts drin, kannst natürlich auch beide Dateien an den Controller 
schicken.

von Genmutant (Gast)


Lesenswert?

Du musst die main.elf.hex auf den µC laden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.