Profiling im PSoC Creator ?

Fragestellungen die sonst nicht passen, z.B. Fragen zum Compiler etc.
Reiner W.
Beiträge: 112
Registriert: Di 7. Apr 2015, 11:43

Profiling im PSoC Creator ?

Beitrag von Reiner W. » Di 10. Nov 2015, 10:54

Ich würde gern für eine Dokumentation eine möglichst genaue Laufzeitmessung einer ISR durchführen.
Bisher habe ich sowas einfach gemessen oder direkt oszillografiert (was sich dann gut in einer Doku macht). Nun soll es für eine vergleichende Darstellung / ISR Optimierung mal etwas genauer sein.
Ich kann mir ja die gesuchte Funktion im Assemblerlisting (.lst) anschauen , die Taktzyklen der Befehle hochrechnen und bei gegebenem Prozessortakt die Laufzeit recht genau ermitteln.
Das ist natürlich recht aufwendig, besondern für jemanden, der sonst eher weniger im ARM Assembler zu Hause ist;-)
Daher meine Frage. Kennt jemand ein Tool, welches das automatisch bei gegebenem Quellcode machen kann, oder sonst eine Möglichkeit möglichst einfach aber exakt die Laufzeit einer ISR zu ermitteln?

Ach ja, über die Debug Trace Möglichkeiten
http://www.cypress.com/knowledge-base-a ... m-kba90952
hab ich gelesen. So viel Aufwand wollte ich wegen einer kleinen ISR allerdings nicht treiben. Takte hochrechnen würde mir reichen.
Reiner W.

RA1981
Beiträge: 38
Registriert: Do 23. Apr 2015, 07:54

Re: Profiling im PSoC Creator ?

Beitrag von RA1981 » Mi 11. Nov 2015, 09:12

Hi Reiner,

'möglichst genau' heisst, dass es ein bisschen abweichen darf? Falls ja: SysTickTimer nehmen und vor/nach der ISR bzw am Anfang/Ende der ISR per Debugger auslesen =) Damit kansst du die Clockcycles für die Funktion berechnen.

Ralf

Reiner W.
Beiträge: 112
Registriert: Di 7. Apr 2015, 11:43

Re: Profiling im PSoC Creator ?

Beitrag von Reiner W. » Mi 11. Nov 2015, 10:44

SysTickTimer nehmen und vor/nach der ISR bzw am Anfang/Ende der ISR per Debugger auslesen =)
Ja, so mach ich das im Moment. Hier geht es mir speziell um eine Möglichkeit, verschiedene Varianten einer ISR in deren Zeitverhalten zu vergleichen. Und ich wollte mir die Zeit sparen, die tatsächlich durchzutesten;-) Deswegen suche ich nach ner reinen Sourceanalyse.
...Laufzeitmessung...
Insofern war meine ursprüngliche Frage etwas irreführend.

Na ja, da der Instruction set ja überschaubar ist und man ne Menge dabei leinen kann, ist halt Handarbeit angesagt;-)
http://infocenter.arm.com/help/index.js ... CICDF.html
Reiner W.

RA1981
Beiträge: 38
Registriert: Do 23. Apr 2015, 07:54

Re: Profiling im PSoC Creator ?

Beitrag von RA1981 » Do 12. Nov 2015, 09:02

Hi Reiner,

ah, also rein in Software, jetzt klingelt's =) Profiling scheint mir aber der falsche Begriff zu. Der Profiler im folgenden Link scheint das zu bestätigen, der kann's nämlich nicht (ist natürlich nur einer von vielen, vielleicht können es ja alle anderen):
http://mcuoneclipse.com/2015/08/23/tuto ... -cortex-m/

Aus meiner Sicht brauchst du eher einen Simulator, der zyklengenau abbilden kann, ein Profiler kann ja nicht immer abschätzen, wann ein Sprung erfolgen muss oder nicht.
Der muss aber dann auch die Ziel-MCU genau kennen, und wenn es sowas überhaupt gibt, dann wird es wahrscheinlich kommerziell sein. Für mich ist jede Plattform, auf der ich In-System debuggen kann, der ideale Simulator, weil es die echte Hardware ist - kann also nicht falsch simuliert werden.

Hab grad mal nachgeguckt, 5LP scheint wohl Register zu bieten, um Laufzeiten von u.a. IRQs zu messen. Im RegisterManual beginnen diese Register mit DWT_*
Bedeutet zwar, dass du doch wieder ran an die Hardware musst, aber dürfte einfacher umzusetzen sein. Schade dass es kein Steuer-Interface für's Kitprog gibt, dann könnte man sowas ggf automatisieren.

Ralf

Reiner W.
Beiträge: 112
Registriert: Di 7. Apr 2015, 11:43

Re: Profiling im PSoC Creator ?

Beitrag von Reiner W. » Do 12. Nov 2015, 10:12

Profiling scheint mir aber der falsche Begriff zu..
Na ja, ich komme ja vom Mac und hab da immer den Xcode samt Time Profiler im Kopf;-) Wenngleich der auch keine Takte zusammenzählt.
Aber wie schon gesagt, eigentlich geht es tatsächliche weniger um die exakte MESSUNG sondern genauer um den taktgenauen Vergleich von kleinem ISR Code und nachdem ich mir die wenigen Assemblerbefehle im .lst angesehen habe, ist manuelles zusammenzählen der Takte tatsächlich im Moment am Einfachsten.
Ich dachte nur, dass es da halt vlt. ein kleines Tool gäbe, welches (in Abhängigkeit des Zielprozessors) die Takte zusammenzählt.
Reiner W.

Thomas Barth
Administrator
Beiträge: 91
Registriert: So 5. Apr 2015, 21:46
Wohnort: Frankfurt/M
Kontaktdaten:

Re: Profiling im PSoC Creator ?

Beitrag von Thomas Barth » Do 12. Nov 2015, 19:52

Was meinst du mit Laufzeit? Von Trigger bis erste Instruction oder Overhead wenn die ISR leer ist? Durch den ganzen Kram der da böse von der Seite reinspielen kann würde ich bei der Messung mit Oszi bleiben. Du kannst ja z.B. im main einen(oder 2) pin toggeln und in der ISR einen anderen. Dann siehst du genau wann er aus dem main aussteigt, wann er in der ISR ankommt und wie lange es von der ISR wieder zurückbraucht. Das ist es was das System real macht, alles andere sind theoretische Vermutungen :lol:

Code: Alles auswählen

P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NS (TDB.T_ENTIER_16S
                                   ((1.0/C_M_LSB_BH) *
                                   G_M_INFO_DERIVE(T_ALG.E_BH)))

Reiner W.
Beiträge: 112
Registriert: Di 7. Apr 2015, 11:43

Re: Profiling im PSoC Creator ?

Beitrag von Reiner W. » Do 12. Nov 2015, 22:51

Was meinst du mit Laufzeit?
Im konkreten Fall konnte ich mir nicht erklären, warum eine ISR in meinem Programm so lange gebraucht hat. Ich habs dann umformuliert, was die Laufzeit ordentlich verringert hat. Gemessen hab ich (wie immer) mit meinem Analyzer.
Was ich halt nicht verstanden habe und mir der Oszi auch nicht sagen konnte, warum mein Code eigentlich so lahm war;-) Und da wollte ich dem mal auf den Grund gehen und hab verschiedene Varianten getestet. Was dann wirklich hilfreich war, war das Assemblerlisting. Da kann man ne Menge lernen. Und nicht nur wie man Takte zählt;-)
Reiner W.

RA1981
Beiträge: 38
Registriert: Do 23. Apr 2015, 07:54

Re: Profiling im PSoC Creator ?

Beitrag von RA1981 » Fr 13. Nov 2015, 13:06

Hi Reiner,
warum eine ISR in meinem Programm so lange gebraucht hat.
Wieviel ist denn lang?
warum mein Code eigentlich so lahm war
Magst die originale ISR mal posten?

Ralf

Reiner W.
Beiträge: 112
Registriert: Di 7. Apr 2015, 11:43

Re: Profiling im PSoC Creator ?

Beitrag von Reiner W. » Fr 13. Nov 2015, 15:18

Magst die originale ISR mal posten?
Auf keine Fall! Mache Sachen sind dann doch zu peinlich, wenn man sie mal gefunden hat;-)
Ich arbeite gerade an einer etwas umfangreichen Doku über den Einsatz von Rotary Encodern in PSoC und zeige da die verschiedensten Hard- und Softwaremöglichkeiten. Und zeige auch einiges an Applikationsbeispielen. Ich denke, ich stelle sie dann hier ein (vorausgesetzt ich werd in diesem Jahrhundert noch mal fertig damit).
Da findest du die ISR dann wieder. Aber nicht mehr im Original;-)
Wieviel ist denn lang?
Bei mir war es der SysTick mit dem ich alle 250us gepollt habe. Und wenn die ISR sich dann der 250us nähert wird's halt eng. Und wenn man dann mit so rund 10us kalkuliert hat...
Reiner W.

RA1981
Beiträge: 38
Registriert: Do 23. Apr 2015, 07:54

Re: Profiling im PSoC Creator ?

Beitrag von RA1981 » Fr 13. Nov 2015, 15:50

Hi Reiner,
Magst die originale ISR mal posten?
Auf keine Fall! Mache Sachen sind dann doch zu peinlich, wenn man sie mal gefunden hat;-)
Kannst sie mir auch schicken =)
Bei mir war es der SysTick mit dem ich alle 250us gepollt habe. Und wenn die ISR sich dann der 250us nähert wird's halt eng.
Das wäre dann schon weit vor 250us zu eng, weil ja andere Programmteile nicht mehr zum Zug kommen. Wenn ich es bei einer angenommenen Frequenz von 24 oder 48 Mhz überschlage hast du etwa 6000 bzw 12000 Befehle - das ist ein ordentliches Stück Code, würde ich mal sagen, aber eine ISR wäre damit zu lang.
Bist du denn sicher, dass alles was da drin ist wirklich im Interrupt erledigt werden muss? Oder hast du da Floatberechnungen oder sonstige Funktionsaufrufe auf die C-Bibliotheken drin?

Ralf

Antworten