Hallo zusammen,
hätte noch eine Frage zum Optimizer unter Atmel Studio 7 GCC 5.4.0
Ich möchte nur einige ISR Funktionen wie SPI bzgl. der
Durchlaufgeschwindigkeit optimieren, den Rest des Codes für das
Debugging aber nicht.
Es gibt wohl:
#pragma GCC push_options
#pragma GCC optimize (3)
ISR (SPI_STC_vect)
…
#pragma GCC reset_options //stellt die standard. Einstellungen wieder
her
#pragma GCC pop_options
ODER
__attribute__((optimize("O3"))) ISR (SPI_STC_vect) ..
1 Frage: Beide sollte doch das gleiche Ergebnis liefern oder?
2 Frage: Push und pop bei #pragma kann man, wenn der Optimizer global
aus ist, sich doch schenken oder?
3 Frage: Muss man hier sonst noch etwas berücksichtigen, was ich nicht
auf dem Schirm habe?
Vielen Dank.
Andreas
Prinzipiell hast du recht. Wenn es aber so auf das Timing ankommt, daß es nur mit -O3 in der ISR funktioniert, ist die ISR zum einen zu lang, zum anderen solltest du dich dann an das debuggen von optimierten Code gewöhnen. So schlimm ist das letztendlich gar nicht. Oliver
> __attribute__((optimize("O3"))) ISR (SPI_STC_vect) ..
Das funktioniert im GCC nicht zuverlässig - hit&miss. Der Code dafür ist
weder maintained noch war er jemals bugfrei.
Ich empfehle, Code, der gesondert optimiert werden soll in eine
Extra-Datei auszulagern und für die Datei die Compiler-Parameter
entsprechend deinen wünschen anzupassen.
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.