Laufzeit der C-Funktionen bestimmen/berechnen

Gast #2325658
Lesenswert?

Hallo zusammen,

ich bin neu auf dem Gebiet Mikrocontrollerprogrammierung.
Ich suche nach allen möglichen Methoden um Laufzeit von C-Funktionen zu 
bestimmen/berechnen.

Die einzige Methode, die ich kenne ist:

- Status der Debug-Pins (digital-I/O) in SW (Funktionsanfang toggeln und 
Funktionsende nochmals toggeln) zu setzen und per Oszi die Zeit 
bestimmen.

Gibt es andere Methoden zur Bestimmung/Berechnung der Laufzeit?
Ich bin Euch für jede Info zu diesem Thema dankbar.

Grüße
Gast #2325668
Lesenswert?

Eine Möglichkeit wäre, den vom Compiler erzeugeten Assembler-Code zu 
analysieren und daraus die Laufzeit bestimmen. In den Datenblätter von 
den Controllern sind meisten die Anzahl der Takte für die einzelnen 
Assemblerbefehle angegeben.
Allerdings übersetzt jeder Compiler den C-Code in ein etwas anderen 
Assembler-Code, kommt auch drauf an auf was Optimiert wird.
Aber für ein bestimmten Fall kann man das so bestimmen.


Grüße
Chris
Gast #2325669
Lesenswert?

Schau dir den entstandenen Assemblercode (map-file) an, schlag nach wie 
viele Takte welcher Befehl braucht und rechne das zusammen.
Falls noch Interrups auftreten, musst du die nat. auch mit einrechnen.

Viele Grüße,

egberto
#2325820
Lesenswert?

Oder viel einfacher: DER TIMER deines Prozessors!
Bei Funktionsaufruf den Timer wert sichern, am ende ebenso und die 
differenz entspricht deiner zeit (in tics), dann noch die 
timerauslesezyklen abziehen nicht vergessen, das speichern in einer 
variable (sind alles ein paar zyklen...) und dann das ganze in ms oder µ 
umrechnen!

grüße & viel erfolg
#2326206
Lesenswert?

Ja das sehe ich auch so, viele Wege führen nach Rom ;-)
Möglichkeiten gibt es mehr als genügend, es kommt ganz auf die Umgebung 
oder die Wünsche an. Wobei ich die Möglichkeit mit dem Oszi auch schon 
mal ausprobiert hab um ebensolche Berechnungen zu überprüfen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren