mikrocontroller.net

Forum: Compiler & IDEs C Programm wird nicht kompilliert


Autor: mbuettner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
#include <avr/io.h>

int main(void)
{

    int n;
    DDRB = 0x08;
    while(1)
    {
        PORTB = 8;
            for (n = 0; n < 30000; n++);
        PORTB = 0;
            for (n = 0; n < 30000; n++);
    }

    return 1;
}
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.

Autor: coder (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Genmutant (Gast)
Datum:

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

Autor: mbuettner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mbuettner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Genmutant (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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."

Autor: Klaus Wachtler (mfgkw)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: mbuettner (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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:
AVR Memory Usage
----------------
Device: attiny25

Program:      60 bytes (2.9% Full)
(.text + .data + .bootloader)

Data:          0 bytes (0.0% Full)
(.data + .bss + .noinit)



Peter

Autor: mbuettner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Framework Class: Error while connecting to ROT: -2147221164"
"Error in Creating avrFramework"

Autor: mbuettner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Albrecht H. (alieninside)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Albrecht H. (alieninside)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Genmutant (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst die main.elf.hex auf den µC laden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.