Fehlersuche im Hardfault

Gast #4958258
Lesenswert?
• ▲
▼
Hallo,

das Problem ist, dass ich mit einem Programm das schon etwas komplexer 
ist zu ungewissen Zeitpunkten in einen Hardfault laufe.

Was kann denn alles die Ursache sein?

Mir fällt eigentlich nur ein:

1. Schreiben über Arraygrenzen

2. Lesen außerhalb von Arraygrenzen? --- Da bin ich mir schon nicht so 
sicher

3. weiteres?
Gast #4958484
Lesenswert?
• ▲
▼
Da wirst Du dich langsam an die kritische Stelle vortasten müssen. Was 
heisst denn "ein Programm das schon etwas komplexer ist"? 1000 Zeilen, 
10000, 100.000? In der Regel ist doch eine Ausgabemöglichkeit vorhanden 
(Debug, Trace, Seriell, LCD-Display...) Komplexe Programme tun in der 
Regel auch was. ;-) Lass Dir regelmässig Ausgaben zum Programmstatus 
geben.
Es wird dir keiner ein Rezept geben können, das Finden so eines Fehlers 
kann schwierig sein...
Gast #4959783
Lesenswert?
• ▲
▼
#4960651
Lesenswert?
• ▲
▼
- Zugriff auf ungültigen Pointer -> insbesondere Funktionspointern
- Fehlerhaftes Memory Management
- Fehlern von Peripherie die nicht mit eignen Handlern abgefangen 
werden.
- usw.

alles das was sich bei einer sauberen Programmierung vermeiden lässt. 
Die auch in der Lage ist Fehler abzufangen.
Gast #4960941
Lesenswert?
• ▲
▼
HardFault schrieb:
> Kann das Lesen oberhalb von Arraygrenzen zu HardFault Fehlern führen,
> oder muss man dafür schon schreibend drauf zugreifen?

Das interessiert den Cortex-M Core nicht. Der weiß nichts von deinem 
Array. Die Frage ist nur, ob hinter deinem Array gültiger Speicher 
liegt.

Hier findest du eine App Note
https://www.segger.com/downloads/appnotes/AN00016_AnalyzingHardFaultsOnCortexM.pdf

und den passenden HardFault Handler:
https://www.segger.com/downloads/appnotes/HardFaultHandler.zip
Gast #4960947
Lesenswert?
• ▲
▼
So wird das sowieso nichts. Du musst schon den Programmabschnitt
isolieren, wo der Fehler auftritt. Debugging oder Logikanalyse
wurde doch schon genannt, aber auch Hilfsvariable mit Output können
helfen, aber wenn ein Programmierer Spaghetticode schreibt, kannst
du hier so viel posten bis die Finger wund sind, es bringt dich
nicht weiter.

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.