www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verhalten bei unterschiedlichen Optimierungsstufen


Autor: Alex Dewor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen.
Ich soll im Rahmen einer Projektarbeit eine Software in Betrieb nehmen, 
welche Daten mit einem SPI-Slave austauscht (und noch viele andere 
Sachen auch). Die SW ist also nicht von mir geschrieben und meiner 
Meinung nach sehr komplex.
Der Controller ist ein LPC und als Compiler nutze ich den von Keil 
(MDK-ARM). Das komische ist, dass die SW nur ordnungsgemäß läuft, wenn 
ich diese mit -O3 übersetze. Bei der Optimierungsstufe -O0 treten 
"komische Effekte" auf.
Ich weiß meine Beschreibung ist relativ dünn, aber ich wüßte gerne ob 
ihr vielleicht ein paar Tipps habt, wie ich den Fehler eingrenzen kann. 
Ich weiß im Moment gar nicht, welches Ende ich angreifen muss... :-(
Grundsätzlich müsste die SW doch auch mit -O0 laufen... Was ändert sich 
durch unterschiedliche Optimierungsstufen? (Zeitverhalten?, Codegröße?)
Ich habe auch erst seit kurzem mit Programmierung zu tun und dann gleich 
so was.

Vielen Dank.

Autor: Axel Düsendieb (axel_jeromin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex Dewor schrieb:
> Was ändert sich
> durch unterschiedliche Optimierungsstufen? (Zeitverhalten?, Codegröße?)

Der Compiler "denkt" je nach gewählter Optimierungsstufen mehr oder 
weniger über Dein Programm nach und lässt vermeintlich überflüssige (für 
ihn offensichlich überflüssige) Programmteile wie z.B. Warteschleifen 
weg.

Axel

Autor: Troll (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex Dewor schrieb:
> Was ändert sich
> durch unterschiedliche Optimierungsstufen? (Zeitverhalten?, Codegröße?)

2x Ja.
Zum Beispiel bei den AVR ist es so, dass die Wartefunktionen nur korrekt 
arbeiten, wenn -Os eingestellt ist. -O0 bedeutet keine Optimierung. Der 
Compiler kann deinen Code nicht verbessern.

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.