F28335: Flash-reead-write wait staites

Gast #1200690
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?
Persönliche Seite #1201524
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
Gast #1202798
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.
Gast #1202966
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.

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