www.mikrocontroller.net

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


Autor: Marc Prager (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A.K. (Gast)
Datum:

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

Autor: Dominic Rath (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marc Prager (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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".

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.