WinAVR compiliert nicht mehr richtig

#4381703
Lesenswert?

Hallo ihr Lieben,

ich habe gerade ein kleines Problem mit WinAVR. Von jetzt auf gleich 
macht ein Programm auf dem Atmega8535 nicht mehr das gleiche.

Bevor der Fehler aufgetreten ist, ließ sich alles einwandfrei compileren 
und auf den Atmega8535 spielen. Doch dann beim nächsten Mal macht der 
Atmega nicht mehr das, was er vorher gemacht, ohne, dass etwas an dem 
Programm geändert wurde. Dennoch lässt es sich ohne Fehler compilieren.

Wenn ich eine ältere Hex-file nehme, die vom Quelltext genauso ist, 
funktioniert es. Compiliere ich das Programm neu, funktioniert es nicht 
mehr. Ich habe nichts an den Einstellungen geändert, nichts im Quelltext 
verändert. Ich habe WinAVR schon neu installiert. Ich habe AVRStudio 4 
schon neu installiert. Immernoch der gleiche Fehler.

Habt ihr noch einen Rat?

Vielen Dank :)
Gast #4381723
Lesenswert?

Arsch N. schrieb:
> Habt ihr noch einen Rat?

Ja.

Ganz wirklich offen zeigen was du hast.
Sonst bekommst du Hinweise dass in Zeile 42 deiner Source
ein Fehler ist.

Zweiter Rat:

Einmal alle *.o Files in deinem Projektverzeichnis löschen
und das Projekt komplett neu "builden". Dann könnten
zumindest Warnings auftauchen die einen misstrauisch machen
sollten.
#4381726
Lesenswert?

Frickelfritze schrieb:
> Arsch N. schrieb:
>> Habt ihr noch einen Rat?
>
> Ja.
>
> Ganz wirklich offen zeigen was du hast.
> Sonst bekommst du Hinweise dass in Zeile 42 deiner Source
> ein Fehler ist.
>
> Zweiter Rat:
>
> Einmal alle *.o Files in deinem Projektverzeichnis löschen
> und das Projekt komplett neu "builden". Dann könnten
> zumindest Warnings auftauchen die einen misstrauisch machen
> sollten.

*.o Files löschen habe ich auch schon probiert. Was benötigst du denn? 
Was soll ich hochladen?
#4381734
Lesenswert?

Frickelfritze schrieb:
> Arsch N. schrieb:
>> *.o Files löschen habe ich auch schon probiert.
>
> Und? Bekommst du dann Warnings beim übersetzen?
>
> Wenn du so weiter machst und dir jeden Popel einzeln aus der
> Nase ziehen lässt wird das nichts.

Ich bekomm keine Warnings. Alles wie vorher. Ich habe vorher mit -O2 
compiliert. Das lief auch immer, bis auf den einen Moment, wo es nicht 
mehr ging. Stell ich die Optimierung nun auf -O0 dann klappt es wieder.

Was möchtest soll ich denn hochladen? Benötigst du C-Files? Das 
Makefile?
Gast #4381748
Lesenswert?

Arsch N. schrieb:
> Stell ich die Optimierung nun auf -O0 dann klappt es wieder.

Dann wirst du vom Compiler eine oder mehrere Variablen wegoptimiert
bekommen was dazu führt dass eine Variable im Interrupt-Kontext
andere Werte annimmt als im Nicht-Interrupt-Kontext.

Stichwort: volatile
Gast #4381821
Lesenswert?

Arsch N. schrieb:
> Das Problem besteht nach wie vor. An einem anderen Rechner funktioniert
> es. Dort kann das Programm einwandfrei übertragen und ausgeführt werden.

dann vergleiche doch mal das hex file.

Dann vergleiche die gcc Version.

> Was soll ich hochladen?
alles was du hast.
#4381829
Lesenswert?

Ich versteh es nicht. Ich habe nichts verändert. Von jetzt auf gleich 
geht einfach nichts mehr.

Keine Kommentare über die Programmierung. Ich habe das nicht entwickelt. 
Ich soll es nur weitere betreuen. "Wieos fragst du dann nicht denjenigen 
der es entwickelt hat, wo der Fehler liegt?" Der ist nicht mehr da.
Angehängte Dateien:
Moderator Persönliche Seite #4381931
Lesenswert?

Hameg schrieb:
> Dies wird doch schon seit Ewigkeiten vom avr-gcc bemängelt.

Naja, aber mit seinem jungsteinzeitlichen WinAVR von 2010 gerade noch
nicht.

Seltsam ist es schon, warum angeblich ohne jegliche Veränderungen sich
das Verhalten des Compilers ändern sollte.

Einzige Erklärung dafür wäre, dass der Compiler oder Assembler auf
der Platte „einen Schuss bekommen“ hat.  Dagegen würde natürlich eine
erneute Installation dieser alten Toolchain helfen, jedoch hilft es
nicht, wenn wir hier den Code irgendwo offline compilieren – dass
das funktioniert, hat er ja selbst schon bestätigt („auf einem
anderen Computer geht alles“).
Moderator Persönliche Seite #4382296
Lesenswert?

Arsch N. schrieb:
> Ich bekomm keine Warnings. Alles wie vorher. Ich habe vorher mit -O2
> compiliert. Das lief auch immer, bis auf den einen Moment, wo es nicht
> mehr ging. Stell ich die Optimierung nun auf -O0 dann klappt es wieder.

Nimm mal -Os. Kann auch sein, dass bei -O2 zuviel RAM genutzt wird und 
nichts mehr für den Stack übrigbleibt.

Sinnvoll wären auch mal die avr-gcc-Kommandos, die generiert werden, zu 
zeigen und auf beiden Windows-Rechnern zu vergleichen.

P.S.
Ja, man kann die ausgeführten Kommandos per Copy&Paste als reinen Text 
kopieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren