Hallo zusammen, ich hoffe ihr könnt mir weiter helfen?! Ich lasse C-Code auf dem F28335 aus dem Flash laufen (eval-board: ezdsp mit Code Composer Studio). Nun braucht eine kleine Funktion von mir ca. 1,0s! Dieser Fkt. übergebe ich 2 Parameter Portnr. und Pinnr. In dieser Fkt. befinden sich 3 if-Abfragen und zusätlich ein Mechanismus zum Toggeln eines Pin. Bei diesem Mechanismus ermittle ich über ein Macro die richtige Toggle-Port-Registeradresse und toggle danach in diesem Register den entsprecheden Pin. Ich habe mir auch Assemblercode angeschaut. Für das Aufrufen und die Fkt. selbst generiert der Code Compose Compiler ca. 37 Assembler Code-Zeilen. Der F28335 läuft mit dem Takt von 6,6ns. Kann mir jemand sagen mit wieviel wait-states der Coder aus dem Flash läuft. Gibt es Optimierungsmöglichkeiten?
>Kann mir jemand sagen mit wieviel wait-states der Coder aus dem Flash >läuft. Ich glaube (bin nicht sicher), du musst die Anzahl der Wait-States selbst angeben, der Controller kann selbst ja nicht wissen, mit welcher Taktfrequenz er läuft. Deswegen weiß er auch nicht, ob er das Flash mit der aktuellen Frequenz überlastet, das weiß nur der Programmierer. Du hast also 150MHz, da sollte etwa ein wait-state pro Takt drin sein, wenn ich das gerade richtig im Kopf habe. 1 Sekunde für 37 Befehle kann gar nicht sein, es sei denn, das läuft im Automatikschritt durch den Debugger, da ist das schon möglich, da werden ja nach jedem Schritt alle Register und so weiter an den PC übertragen. Grüße, Peter
Sorry Peter, die Fkt. benötigt 1us!!! Der Prozesseor läuft mit 150mHz. Gruß A.W.
>Der Prozesseor läuft mit 150mHz.
Naja - bei 150milliHz ist es kein wunder, dass dein Programm ewig
langsam ist...
Ok, Ok, ich habe mich wieder verschrieben: -- 150MHz -- Aber zurück zum eigentlichen Problem: Ich habe mit Compiler-Optionen gespielt und habe Optimierungslevel auf (-o3) geändert. Und messe mittlerweile --550ns-- (bei 27 Assembler Codezeilen) für den Fuktionsdurchlauf. Ich würde gerne weiter optimieren! Hat jemand noch eine Idee? Grüße A.W.
Kannst/darfst du deine Init-Sequenz posten? Falls ja mach das mal. Generell: falls es nur um einzelne Funktionen geht oder dein Programm nicht zu groß ist, besteht auch die Möglichkeit Funktionen ins RAM zu kopieren und von dort auszuführen (siehe spraau8). Evtl. wäre das auch was für dich.
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.