Hallo Zusammen, Vielleicht kann mir hier jemand weiterhelfen ;) Aktueller Fall: Fehler tritt bei einem ATSAM sporadisch (sehr selten) auf, ein Debugger etc. kann nicht ohne weiteres angeschlossen werden. Trotzdem würde ich gern den Fehler bestmöglichst eingrenzen können. Was mir ziemlich weiterhelfen würde, wäre eine ähnliche Fehlerausgabe wie es der ESP32 macht. Hier ist ein Beispielbild: https://user-images.githubusercontent.com/13808314/55786107-3504dd80-5ae6-11e9-98ca-abf6452ab9b3.png --> Sobald der ESP32 eine Exception wirft, werden (genau so wie im ATSAM) die Register angezeigt und zusätzlich die jeweiligen zuvor aufgerufenen Funktionen. Gibt es die Möglichkeit, so eine Speicherung der letzten Funktionen auch im ATSAM / auf anderen uC zu implementieren? Danke & Grüße ;)
Suche mal nach "Hardfault Handler" - es gibt da diverse Beispiele. Hat allerdings den Nachteil das man nicht alle Fehler abfangen kann - insbesondere sowas wie Stack Overflow oder ungültigen SP. Backtrace ist vom Flash Speicher her nicht ganz billig - meistens ist auf dem µC nicht genug Platz für Debug Symbole. Könnte hier aber auch eine Funktion sein, die die Adressen mittels addr2line auf dem PC übersetzt.
Alexander M. schrieb: > Aktueller Fall: Fehler tritt bei einem ATSAM sporadisch auf Welcher Fehler denn? Zeige deinen Schaltplan und Fotos vom Aufbau wo man den Leitungsverlauf der Stromversorgung sehen kann.
Danke ;) @Stefan: Mir geht's hier in erster Linie darum, ob es denn überhaupt solche Backtrace-Möglichkeiten auch in Microchip-uC gibt? Sowas würde die Fehlersuche bei Runtime Excpetions natürlich schon ziemlich vereinfachen... ;) Oder anders die Frage: Wie debuggt ihr Runtime Exceptions bei Mikrocontrollern? Grüße :)
Alexander M. schrieb: > Mir geht's hier in erster Linie darum, ob es denn überhaupt solche > Backtrace-Möglichkeiten auch in Microchip-uC gibt? Im Prinzip schon. Der Chip hat entsprechende Interrupts und einen Stack. Dazu braucht man noch die Information, welche Funktion (Namen) auf welcher Adresse im Speicher liegt. Die hat man normalerweise nicht im Maschinencode drin. > Wie debuggt ihr Runtime Exceptions bei Mikrocontrollern? Wenn er abstürzt während ein Debugger mit dem Chip verbunden ist, kann der Debugger die Adressen vom Stack auswerten und die Stellen im Quelltext anzeigen. Wirklich genutzt habe ich das aber noch nie, weil ich Mikrocontroller mit diesem Feature erst seit kurzem benutze. Ich bin mit Teilen aufgewachsen, die das nicht konnten. Außerdem treten solche Fehler gerne nur dann auf, wenn man den Debugger wieder abgeklemmt hat. Sporadische Abstürze kommen meisten von mangelhafter Stromversorgung, das kann man mit Messinstrumenten prüfen. Ansonsten kann man in das Programm Debug-Meldungen einbauen, die man seriell an den PC sendet und in eine Datei schreibt. Wenn der Controller immer wieder an der gleichen Stelle abstürzt, geben die letzten Debug-Meldungen einen Hinweis darauf, wo das war.
Stimmt, ich könnte mir natürlich mal den Stack anschauen... Mangelhafte Stromversorgung hatte ich auch schon in meinen Gedanken als Ursache, könnte mit so einem "Backtrace" super aufgezeichnet werden (Stichwort: brownout detection). Danke :)
:
Bearbeitet durch User
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.