STM32F4 Fault Handling

OP #4303043
Lesenswert?
• ▲
▼
Hallo Community!

Ich möchte an dieser Stelle ein Stück Code bereitstellen, der vieleicht 
das Debugging auf STM32F4xx erleichtert.

Der Code besteht aus zwei Teilen. Der erste Teil stellt einen Debug 
Buffer zur Verfügung, der Strings im CCM RAM speichert. Da dieser für 
gewöhnlich beim Startup des Controllers nicht initialisiert wird, können 
auch Daten nach einem Reset gelesen werden.
Diese Funktion kann auch ins write() eingebunden werden, z.B. als 
stderr.

Die zweite Funktion fängt alle Faults ab, die im Cortex M4 auftreten 
können. Die entsprechenden Status Register werden ausgelesen und im 
Klartext in den Debug Buffer geschrieben. So kann man mit einem Blick 
ins CCM RAM herausfinden, an welchem PC welcher Fault entstanden ist, 
und weshalb, auch wenn man den Reset verpasst hat.

Der Code ist für FreeRTOS geschrieben, aber durch herausnehmen der 
relevanten Zeilen in den Interrupts kann man den code auch BareMetal 
verwenden.

~Lil B
Angehängte Dateien:
OP #4306969
Lesenswert?
• ▲
▼
Guest schrieb:
> Ganz nett...aber wer es wirklich einfach haben will:
>
> 
https://www.segger.com/admin/uploads/productDocs/AN00016_AnalyzingHardFaultsOnCortexM.pdf

Wirklich einfacher finde ich das nicht. Es gibt sicher auch weitere 
Ansätze, wie man Faults behandeln kann, die alle im Prinzip das selbe 
tun.

Ich möchte nochmals hervorheben, dass mein Ansatz die Fault-Ursache mit 
allen verfügbaren zusatz-Informationen im Klartext in einen 
Fehlerspeicher ablegt. So ist man nicht mehr auf das Datenblatt 
angewiesen, wenn man den Fehler sucht. Desweiteren ist man auch nicht 
auf einen Debugger angewiesen, der in deinem Link zwangsläufig benötigt 
wird.
(Einfach DebugBuffer_Dump() auf einen USART seiner Wahl umleiten und 
z.B. beim Startup aufrufen)
Gast #4309581
Lesenswert?
• ▲
▼
Little B. schrieb:
> Wirklich einfacher finde ich das nicht. Es gibt sicher auch weitere
> Ansätze, wie man Faults behandeln kann, die alle im Prinzip das selbe
> tun.

Echt nicht? Was ist daran kompliziert? Datei zum Projekt hinzufügen und 
laufen lassen.

Little B. schrieb:
> Desweiteren ist man auch nicht
> auf einen Debugger angewiesen, der in deinem Link zwangsläufig benötigt
> wird.

Klar, da gebe ich dir völlig recht...aber wer debuggt den einen Cortex M 
ohne Debugger?? Ob ich jetzt ins Watchfenster oder Memoryfenster schaue 
ist doch gleich.

Wollte aber dein Projekt nicht schlecht machen sondern nur eine 
Alternative zeigen!

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.