STM32 Exception

Gast #2087094
Lesenswert?

Servus,

ich grübele gerade über folgendem Problem:
Mein C-Code rennt auf einmal in den Handler für HardFaultException. Das 
HFSR bei $E000ED2C steht auf $40000000. Somit ist das FORCED-Bit 
gesetzt. Dieses sagt aus, dass (lt. "The definitive guide to the ARM 
Cortex-M3") die Handler für MemoryManagementFault, UsageFault oder 
BusFault nicht aufgerufen werden konnten. Allerdings habe ich alle 
Handler definiert und genauso wie den HardFault-Handler in der 
Vektortabelle eingetragen.
Und im UFSR bei $E000ED2A steht $0002 drin: "attempts to switch to an 
invalid state". Da ich aber keinen ASM-Code geschrieben habe, der hier 
ausgeführt werden könnte bei dem in einer Adresse das LSB nicht gesetzt 
ist, frage ich mich, was da schief gelaufen ist. Dann müsste ja der 
C-Compiler (IAR V5.50) falschen Code erzeugt haben. Irgendwer eine Idee?
Gast #2087495
Lesenswert?

Arne schrieb:
> Da ich aber keinen ASM-Code geschrieben habe, der hier
> ausgeführt werden könnte bei dem in einer Adresse das LSB nicht gesetzt
> ist, frage ich mich, was da schief gelaufen ist. Dann müsste ja der
> C-Compiler (IAR V5.50) falschen Code erzeugt haben. Irgendwer eine Idee?

Der "falsche Code" kommt dann wohl nicht aus dem Compiler. Soll heißen, 
der Prozessor ist bei der Ausführung irgendwo gelandet wo er nicht 
sollte und das wiederum heißt meistens, dass der Stack irgendwo kaputt 
geschrieben wurde.

Also würde ich mal auf einen Array-Überlauf tippen. Einfach mal alle 
Funktionen mit lokalen Arrays noch mal genau anschauen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren