Forum: Mikrocontroller und Digitale Elektronik Möglichkeiten um Laufzeit einzuspaaren


von P.W. (Gast)


Lesenswert?

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!

von ich (Gast)


Lesenswert?

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...

von P.W. (Gast)


Lesenswert?

Danke schon mal für die ersten Antwort!

Kannst du mir bitte ein paar Links oder Bücher dazu empfehlen.

Gruße P.W.

von Oliver (Gast)


Lesenswert?

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

von Ralf G. (ralg)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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

von P.W. (Gast)


Lesenswert?

@ 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
Noch kein Account? Hier anmelden.