Forum: Mikrocontroller und Digitale Elektronik Timing bei LPC2106 und ARM-Kern


von Marc Prager (Gast)


Lesenswert?

Hallo !
Ich sitze gerade mit dem Oszi an einem LPC2106 board (Eigenbau). In
einer kleinen Schleife toggle ich einen Port Pin:

...<Intialisierung>...
1:  str r0,[r1,#_IO0SET]
    str r0,[r1,#_IO0CLR]
    b 1b

MAM auf maximale Beschleunigung, PLL auf 4-fach, Quarz 14.7456MHz.
Mein Programm fuehre ich aus dem RAM aus. Prophylaktisch habe ich die
Flash-Waitstates (unzulaessigerweise) auf 1 gesetzt.

ABER: Am Port ergeben sich dann nur ca. 4Mhz.

Erwarten wuerde ich etwa 60MHz/3 = 20MHz, da die 3*32bit Code-Sequenz
in eine 128bit Cache-Line passt, un damit zu keinem fetch fuehren
sollte.
Da VPB-Teiler = 1 gesetzt und damit CCLK = PCLK = knapp 60Mhz frage ich
mich, warum das so langsam ist.

In welchem Manual kann ich lesen, welche Frequenz theoretisch
herauskommen musste? Wo steht eigentlich, wie schnell ich PCLK laufen
lassen darf?

Teilt die GPIO-Einheit den PCLK nochmals herunter? Dauert der Befehl
STR so lange??

Da die LPC2101..2103 ein 'fast IO' haben nehm ich mal an dass es am
GPIO liegt.

von A.K. (Gast)


Lesenswert?

Wohlbekannt. Mit Beinchen wackeln gehört zu den schwachen Seiten der
älteren LPC2000-er. Der I/O-Bus bremst aus.

von Dominic Rath (Gast)


Lesenswert?

Hier kommen mehrere Probleme zusammen.
- Eine STR Instruktion benoetigt immer mindestens zwei Cycles (siehe
ARM7TDMI-S TRM).
- Da die GPIOs beim LPC2106 noch dazu am langsamen VPB haengen dauert
der Zugriff noch einige Cycles laenger.
- Der Branch hat ein Penalty von 2 Cycles, da die Pipeline (3-stufig)
wieder neu gefuellt werden muss.

von Marc Prager (Gast)


Lesenswert?

Danke! Ich kapiers schon fast ;-)
Ich werde nun das Manual mal studieren und dann nachrechnen wie die
Zeiten zustandekommen.
Ein Impuls ist bei mir derzeit mind. 120ns breit. (2*16ns + 2*16ns) +
oder * VPB-Geschichten...

@Dominik: kannst du mir aus dem Stehgreif auch noch kurz sagen was das
-S am ARM7TDMI-S ausmacht? Das habe ich auch schon vergeblich versucht
herauszufinden.

Marc

von A.K. (Gast)


Lesenswert?

Ohne S: Der ATM7-Core ist fix- und fertig von ARM konfiguriert.

Mit S: Core liegt als VHDL-Beschreibung oder sowas in der Art vor und
kann dementsprechend optimiert in das Kundendesign integriert werden.
Braucht aber etwas mehr Platz und Strom.

von Dietmar (Gast)


Lesenswert?

@Marc Prager:

Beschäftige mich außer dem C-Code auch kürzlich mit ARM Assembler, da
man nicht immer darum herum kommt, für spezielle Dinge.

Was bedeutet "1b" beim Befehl "B  1b" ?
Das Label heißt doch "1:".

    b 1b

Ist das eine spezielle Assemblersyntax, oder hat das was mit Offset
oder Pipeline zu tun?

Gruß

Dietmar

von A.K. (Gast)


Lesenswert?

Spezielle Labelsyntax. Temporäres Label "1" und "b" für
"backwards", spricht also das letzte vorherige Auftreten dieses
Labels an. Vorwärts wäre "1f".

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.