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
- in einem Simulator laufen lassen - erzeugten Assemblercode analysieren und die Dauer aller benutzten Instruktionen zusammenzählen
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
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
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
Wenn man es über Zeitmessung am lebenden Objekt machen will, bietet es sich noch an, die Zeit über z.B. 1000 Durchläufe zu messen. Denn bei längeren Zeiten hat man meist eine höhere Zeitauflösung zur Verfügung.
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.
...wow, ihr habt einige Möglichkeiten aufgelistet! Vielen Dank!
Falls dein Debugger einen Trace mitbringt, kannst du auch diesen bemühen.
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.