Forum: Digitale Signalverarbeitung / DSP / Machine Learning F28335: Flash-reead-write wait staites


von A.W. (Gast)


Lesenswert?

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?

von Peter D. (pdiener) Benutzerseite


Lesenswert?

>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

von A.W. (Gast)


Lesenswert?

Sorry Peter,

die Fkt. benötigt 1us!!!
Der Prozesseor läuft mit 150mHz.

Gruß A.W.

von Micha (Gast)


Lesenswert?

>Der Prozesseor läuft mit 150mHz.
Naja - bei 150milliHz ist es kein wunder, dass dein Programm ewig 
langsam ist...

von A.W. (Gast)


Lesenswert?

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.

von Micha (Gast)


Lesenswert?

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.

von M. K. (kichi)


Lesenswert?

Hat es geklappt?

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.