mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Was bedeutet b . in ARM-Assembler?


Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moinsen!

Ich bin gerade dabei, ARM-Assembler zu erlernen. In in der Sturtup-Datei 
crt0.S steht bei den Intterrupt-Vektoren immer "b ." . 'b' steht ja für 
branch, aber was bedeuet der Punkt? Wodurch wird dieser erstezt? Das hab 
ich in keinem Tutorial/Dokumentation finden können.

MfG Mark

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anfangsadresse des betreffenden Befehls. "b ." ist also eine 
1-Befehl-Totschleife aka Däumchen drehen. Sinn in diesem Zusammenhang: 
definiertes Verhalten wenn "sollte nicht passieren" eben doch passiert, 
der Debugger zeigt dann wo.

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort. Dann verstehe ich aber nicht, wie eine ISR 
ausgeführt wird, wenn der Controller zum irq-Vector springt und dann 
einfah hängen bleibt.

MfG Mark

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn im IRQ-Vektor diese Schleife steht, wird's nichts mit Interrupts. 
Das ist aber nicht üblich. Üblicherweise steht dort ein LDR-Befehl 
(=>PC) oder ein Sprung auf etwas Assembler-Code. Details bitte, d.h. den 
betreffenden Startup-Code.

Autor: Mark .. (mork)
Datum:
Angehängte Dateien:
  • crt0.S (7,5 KB, 175 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
Stimmt, ich habe nicht richtig hingeguckt. Beim irq-vector wird zu 
PC-0xFF0 gesprungen, was 0xFFFFF030 entspricht, also der Adresse des 
VICVectAddr. Was wird aber danach gemacht? Wo finde ich dazu den Code?

Im Anhang übrigens die Crt0.S.

MfG Mark

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da wird nicht dorthin gesprungen, es wird der dortige Wert (das ist das 
Vektorregister des Interrupt-Controllers) in den PC geladen.

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, stimmt auch. Tut mir leid, aber ich bin noch wie gesagt Anfänger, 
weshalb ich noch einige Probleme mit der Syntax habe.

Ich habs jetzt endlich kapiert, nachdem ich im Datenblatt die 
Beschreibung des VICVectAddr gelesen hab.

Vielen Dankt für die Hilfe a-k, es werden aber in der Zuklunft bestimmt 
noch mehr Fragen über den ARM auftauchen :-)

MfG Mark

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab doch och eine Frage: wieso steht da "ldr   pc,[pc,#-0xFF0]" 
anstatt "ldr pc,=0xFFFFF030" ? Letzteres wäre doch etwas 
übersichtilcher, weil man die Adresse sofort ablesen könnte.

MfG Mark

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der eine Befehl läd eine Konstante, der andere den Wert an einer 
Adresse.

Autor: Mark .. (mork)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meinte ja auch LDR pc,0xFFFFF030.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schon mal ausprobiert?

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.