Sperre nach Doppelfehler aufheben

Ich debugge einen STM32 mit gdb. Aus irgendeinem Grund stürzt mein Programm ab und gdb gibt Folgendes aus.

Hinweis: Automatische Verwendung von Hardware-Haltepunkten für Nur-Lese-Adressen.

stm32f2xxx.cpu – Aufheben der Blockierung nach Doppelfehler

Programmempfangssignal SIGINT, Interrupt. 0xf8ad0300 im ?? ()

Ich verstehe nicht, was das sagen soll. Was ist ein lockup? Was ist ein double fault? Was ist eine .cpuDatei?

Übrigens, vielleicht möchten Sie diese Frage mit cortex-m3 markieren. Es hat fast nichts direkt mit stm32 zu tun (außer dieser stm32f2xxx.cpu-Sache).

Antworten (1)

.cpu ist keine Datei, sondern ein JTAG TAP-Name AFAIK (eine Schnittstelle zur Debug-Hardware in Ihrem Chip, mit der sich der Debugger verbindet).

Eine doppelte Fehlersperre tritt im Grunde auf, wenn ein Fehler aus einem Handler mit Priorität -1 (schwerer Fehler) geworfen wird. Die Cortex-M-CPU lässt das nicht zu und stoppt die Ausführung von Anweisungen (grob gesagt). Siehe ARMv7-M Architecture Reference Manual Abschnitt B1.5.15 (Nicht behebbare Ausnahmefälle) für die ganze Geschichte. Beachten Sie, dass alle Fehler standardmäßig zu einem schweren Fehler eskaliert werden (dh direkt nach dem Zurücksetzen); In dieser Situation löst jeder Fehler eine Sperrung aus, wenn die CPU den Handler für schwere Fehler aus irgendeinem Grund nicht ausführen kann.

Ein häufiger Grund für eine doppelte Fehlersperre wäre ein Problem mit Ihrem Startcode. Siehe Warum blockiert mein Cortex-M3 drei Zyklen nach dem Zurücksetzen mit einem schweren Fehler? ein Beispiel für eine häufige Fehlkonfiguration (falsche Vektortabelle), die zu einem Absturz führt. Die Abfolge der Ereignisse, die zu der eigentlichen Sperrung führten, ist nicht offensichtlich, was zu einer faszinierenden Lektüre führt.

(Beachten Sie, dass der Cortex-M-Kern sehr komplex ist und jede Erklärung kurz vor dem Referenzhandbuch selbst zwangsläufig zu stark vereinfacht ist. Sie können Ihrer Frage gerne bestimmte Punkte hinzufügen, zu denen Sie weitere Einzelheiten wünschen.)