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
Ganz nett...aber wer es wirklich einfach haben will: https://www.segger.com/admin/uploads/productDocs/AN00016_AnalyzingHardFaultsOnCortexM.pdf
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)
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!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.