Hallo Leute, ich will alle Möglichkeiten in Betracht ziehen um Laufzeiten (SW) auf einen Steuergerät einzuspaaren. 1) Funktion inline definieren 2) Optimierungsstufen ändern 3) Zugriff auf Controller-Register (Treiber-SW) mit Assembler-Code realisieren. 4) Wenn ein ext. Flash-Baustein verwendet wird dann sollten nur Funktinen ausgelagert werden, die nicht so oft in der SW benutzt werden. Da der Zugriff über Kommunikations-Bus (SPI oder paraller Bus) länger dauert als auf den int. Flash. Ich würde gerne alle Tricks der Laufzeiteispaarungen kennenlernen!!! Kennt Ihr auch andere Möglichkeieten? Bitte betrachtet nicht nur den uController sondern das ganze System (Embedded System) mit HW(siehe Beispiel 4)) Danke!
Code aus externem Flash ausführen? Naja, kopiert man sowas nicht während des bootens in ein externes RAM? OK, also: Häufig genutzte Funktionen im "schnellen" Codespeicher ausführen, falls Controller das zulässt. Häufig genutzte Variablen in Registern halten wenn möglich. Die Peripherie im Controller ausnutzen. Es gibt je nach Controller/Prozessor zusätzliche Hardware die einem arbeit und Rechenleistung abnehmen kann (z.B. CRC Generatoren oder DMA) Datentypen!!! Es muss nicht immer int32 oder float sein! Generell alle Arithmetischen Operationen genau prüfen. Oft kann z.B. eine Division vermieden werden. Ich denke das Thema füllt ganze Bücherregale...
Danke schon mal für die ersten Antwort! Kannst du mir bitte ein paar Links oder Bücher dazu empfehlen. Gruße P.W.
P.W. schrieb: > ich will alle Möglichkeiten in Betracht ziehen um Laufzeiten (SW) auf > einen Steuergerät einzuspaaren. Gegenfrage: Warum? Nicht umsonst gibt es dazu einige Erfahrungsregelen "premature optimization is the root of all evil" "Profile Before Optimizing" usw. Und "generelle" Optimierungsmöglichkeiten gibt für jede denkbare Architektur und jeden denkbaren Compiler nicht. Oliver
ich schrieb: > Ich denke das Thema füllt ganze Bücherregale... Da liegt das Problem, in jedem Buch steht nur ganz wenig von dem drin, was man gerade gebrauchen könnte. Das Thema ist so vielschichtig, das geht nicht nach 'Schema F'. @ P.W. zu deinen vier Punkten könnte vielleicht der eine oder andere noch dazukommen, aber die Lösung dazu wird sehr oft von der speziellen Situation abhängen.
P.W. schrieb: > Ich würde gerne alle Tricks der Laufzeiteispaarungen kennenlernen!!! Das mit Abstand größte Einsparpotential hat man bei der Programmablaufplanung. Man muß analysieren, welche Funktionen sind (zeitlich) teuer und wie oft müssen sie minimal aufgerufen werden. Eine gute Planung ist also das A und O. Das blanke Coden bringt dann nur noch geringe Einsparmöglichkeiten. Wer aber sofort mit "int main(){..}" anfängt, hat schon verloren. Kopflos drauflos zu programmieren bringt nur undurchsichtigen Spaghetticode zum Vorschein. Peter
@ Oliver: Ich höre oft bei der Steuergeräteprogrammierung, dass die Laufzeiten überschritten werden. Ich hatte das Problem auch schon mal erlebt. Es gibt natürlich ein paar Standard-Tipps dazu, aber an die wirklichen Know-How-Tipps kommt man als Anfänger nicht. Nun, wollte ich mich weiterbilden und erfahrene Programmierer oder Steuergeräteentwickler befragen. Um sozusagen ein Schema F für alle Unerfahrene aufzusetzen. Nun frage ich mich: Wie soll ich dann in Zukunft das Problem angehen? Gibt es passende Literatur dazu? Grüße P.W.
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.