Timing bei LPC2106 und ARM-Kern

Gast #325894
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.
Gast #325896
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.
Gast #325897
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
Gast #325898
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.
Gast #325899
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.