Cortex-M3 und SVC

Gast #2715665
Lesenswert?
• ▲
▼
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 #2716404
Lesenswert?
• ▲
▼
> 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

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.