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


von Mark .. (mork)


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

von Andreas K. (a-k)


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.

von Mark .. (mork)


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

von Andreas K. (a-k)


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.

von Mark .. (mork)


Angehängte Dateien:

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

von Andreas K. (a-k)


Lesenswert?

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

von Mark .. (mork)


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

von Mark .. (mork)


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

von Andreas K. (a-k)


Lesenswert?

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

von Mark .. (mork)


Lesenswert?

Ich meinte ja auch LDR pc,0xFFFFF030.

von Andreas K. (a-k)


Lesenswert?

Schon mal ausprobiert?

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.