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

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