ARM Cortex M4 SVCall

Gast #2811155
Lesenswert?
• ▲
▼
Hallo,

ich experimentiere mit einem STM32F407. Ich möchte SVC verwenden. Dazu 
habe ich folgenden Assemblercode geschrieben:

  mrs r0, psp
  ldr r0, [r0, #24]
  sub r0, r0, #2
  ldrb r0, [r0]
  bx          lr

normalerweise läuft mein Programm im Thread mode, daher muss ich da den 
PSP verwenden. Das funktioniert auch; in Zeile 2 wird der korrekte PC 
geladen, also die Adresse, wo die SVC Instruktion stand. Anschliessend 
möchte ich nun an dieser Adresse lesen, um den Immediate-Wert der SVC 
Instruktion zu kriegen - und dort liest der Prozessor immer 0x8A. Schaue 
ich mir im Debugger aber an die fragliche Adresse das Memory an, dann 
steht dort 0x07, da meine Instruktion auch

SVC #7

lautete. Was mache ich falsch?
#2998042
Lesenswert?
• ▲
▼
hi,

auch wenn der Beitrag schon etwas älter ist, für die Nachwelt:
1
MRS r4, PSP
2
LDR r4, [r4, #24]
3
SUB r4, r4, #2
4
LDR r4, [r4]
5
AND r4, r4, #255

Vorgehen:
PSP laden
Gesicherten PC aus Thread Kontext laden
Alten PC verringen um an den SVC Call zu kommen
Laden des Befehls an der Stelle
UND um die Nummer zu bekommen (untersten 8 Bit des SVC Befehls)
in r4 steht die SVC Nummer

Nachtrag:
1
MRS  r4, PSP
2
LDR  r4, [r4, #24]
3
SUB  r4, r4, #2
4
LDRB r4, [r4]

Läuft bei mir aber auch, also das LDRB funktioniert auch.
Getestet mit:
GNU ar (GNU Tools for ARM Embedded Processors) 2.21.1.20121016

Chris

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.