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.