HardFault will nicht!

(Firma: RUB) #4682161
Lesenswert?
• ▲
▼
Reginald L. schrieb:
> Da will man mal ausnahmsweise einen Hardfault im STM32 erzwingen und es
> klappt nicht!
Trage im Linker-Script eine max. Größe für den Stack ein (z.B. 1k), und 
dann sorge dafür, dass dein Stack größer wird als die max. erlaubte 
größe. So funktioniert es zumidnestens beim Atmel SAM3X.
Alternativ kannst du auch einfach den Stack überlaufen lassen mittels 
einer endlos rekursion. Dann solltest du auch im Hardfault landen ohne 
das Linker-Script anfassen zu müssen.

Reginald L. schrieb:
> Allerdings komme ich nicht mehr raus.
"Wie" willst du denn wieder raus? Am einfachsten wäre es einen Watchdog 
anzustoßen.
#4682258
Lesenswert?
• ▲
▼
Kaj G. schrieb:
> Trage im Linker-Script eine max. Größe für den Stack ein (z.B. 1k), und
> dann sorge dafür, dass dein Stack größer wird als die max. erlaubte
> größe. So funktioniert es zumidnestens beim Atmel SAM3X.

Wie soll der STM32 erkennen können, ob du deinen Stack gerade gekillt 
hast? Ja, es wird langfristig irgendwie/irgendwo zu einem schweren 
Fehler (wenn auch nicht zwingend einem Hard-Fault!) führen, wenn der 
Stack zu groß wird, aber garantiert ist das meines Wissens nach nicht. 
Es findet kein Vergleich von Stackaddresse und Speicherbereichen statt. 
(eventuell lässt sich da was mit der MMU machen aber das würde erst zu 
einem MMU-Fault führen)

Laut Programming Manual des Cortex-M4 (welchem STM32 hast du?), gibt es 
zwei Gründe für einen Hard Fault:
- Bus error on a vector read
- Fault escalated to a hard fault (hier gibts nochmal mehr 
Möglichkeiten, siehe "Programming Manual" des Cortex)

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.