Ist es Euch auch schon so passiert? Ich musste heute den ganzen Tag damit zubringen, ein älteres Programm mit neuem Compiler zum Laufen zu kriegen. Hatte vom 2006er WINAVR auf die akltuelle Version upgedatet. Klar, dass Strings nun char* sein müssen und unsigned char* nicht mehr akzeptiert wird, habe ich schnell rausgefunden. Soweit, sogut. Muss ja alles ANSI-mässig sein. Trotzdem lief alles nur noch fehlerhaft. Es mussten dann nämlich auch einige Variablen volatile deklariert werden, die vorher nicht volatile waren. yebemptipicko! Das muss man erst mal finden. Hannes
Hallo, Hannes schrieb: > Ist es Euch auch schon so passiert? > > Ich musste heute den ganzen Tag damit zubringen, ein älteres Programm > mit neuem Compiler zum Laufen zu kriegen. > > Hatte vom 2006er WINAVR auf die akltuelle Version upgedatet. > >... > Trotzdem lief alles nur noch fehlerhaft. > > Es mussten dann nämlich auch einige Variablen volatile deklariert > werden, die vorher nicht volatile waren. >... > Das muss man erst mal finden. Sagen wir es doch einfach so: die Fehler speziell mit dem fehlenden volatile waren eben drin im Programm. Schon immer. Nur hat der alte Optimizer da eben zufällig passend übersetzt. Variablen, die in ISR verändert und außerhalb der ISR genutzt werden, müssen volatile sein, um dem Compiler zu sagen, daß die eben außerhalb seiner Programmsicht geändert werden und er sich gefälligst immer den aktuellen Stand zu besorgen hat. Natürlich passiert sowas mit alten Sourcen schonmal. Hat man eben einen Grund, endlich die alten Fehler zu begradigen. ;-)) Gruß aus Berlin Michael
Die meisten volatile-Probleme beruhen auf das unerwartete Inlining von Code. Dadurch wird eine Funktion, die vorher abgeschlossen war, nun in die Optimierung des Aufrufers einbezogen und wenn der ne Schleife macht, dann wars das. Das Compiler-Inlining vergrößert in der Regel den Code merklich, daher sollte man es abschalten: -fno-inline-small-functions Dann sollte auch alte Programme wieder gehen. Leider sind nicht alle negativen Optimierungen abschaltbar. Peter
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.