Cortex-M3 und SVC

Gast #2715665
Moin zusammen,

hab ein Problem mit Cortex-M3 und SVC.
Ich nutze:
- IAR EWARM 6.30
- Segger embOS 3.82
- STM32F103

Nachdem das RTOS gestartet ist, läuft die Applikation im 
unpriviligierten Modus.
Nun möchte ich gerne in den priviligierten Modus schalten, um MSR 
auszuführen.
Mein SVC-Handler sieht wie folgt aus:
1
__SVCException
2
  TST    LR, #4
3
  ITE    EQ
4
  MRSEQ  R0, MSP
5
  MRSNE  R0, PSP
6
  B    SVCException

bzw:
1
extern void SVCException(uint32_t* const inSVCArguments_PU32)
2
{
3
  uint32_t  mySVCNumber_U32, mySVCParameter_U32[4];
4

5
  mySVCNumber_U32      = ((int8_t*) inSVCArguments_PU32[6])[-2];
6
  mySVCParameter_U32[0]  = (uint32_t) inSVCArguments_PU32[0];  /* R0  */
7
  mySVCParameter_U32[1]  = (uint32_t) inSVCArguments_PU32[1];  /* R1  */
8
  mySVCParameter_U32[2]  = (uint32_t) inSVCArguments_PU32[2];  /* R2  */
9
  mySVCParameter_U32[3]  = (uint32_t) inSVCArguments_PU32[3];  /* R3  */
10
}

__SVCException ist an Index 11 in die Vektortabelle eingetragen. Hab ich 
im Hexdump und Mapfile überprüft.
Die obigen Codebeispiele habe ich aus dem Yiu.
Wenn ich jetzt im unpriv. Modus "svc #0x01" ausführe, landet mein Code 
sofort im HardFault-Handler.
Warum hier und nicht in __SVCException?

thanx, Arne
Gast #2716352
PRIMASK stand auf 1!
SVCs gehen jetzt, aber er setzt mir nicht den SP um.
Ich habe mal einen Screenshot gemacht. Nach meinem Empfinden, müsste R13 
jetzt auf 0x20005000 stehen. Tuts aber nicht.
Angehängte Dateien:
Gast #2716404
> Nachdem das RTOS gestartet ist, läuft die Applikation im
> unpriviligierten Modus.

Schaltest du selber in den nicht priviligierten Thread Mode um? Weil 
nach Reset ist der Cortex M3 im priviligierten Mode und embOS stellt das 
nicht um, ansonsten würde nichts funktionieren. Sprich alle Tasks laufem 
im priviligierten Thread Mode.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.