Hallo, ich habe eine fertige laufende Entwicklungsumgebung mit Eclipse, Gnu Compiler, OpenOCD und gdb. Das debugger funktioniert auch wunderbar. Wenn ich allerdings im Single Step Modus bin und ein UART Interrupt auftritt, springt der µC während der nächsten paar Steps nicht in die Interrupt Service Routine, obwohl dort ein Breakpoint gesetzt ist. Bei der ganzen Sache ist nichts zeitkritisch oder sonstiges (bis auf den Debugger), was die Abarbeitung beeinflussen würde. Im Run Modus springt der µC bei Auftreten des Interrupts zu dem Breakpoint. Warum nicht im Single Step Modus? Vielen Dank im voraus für eure Hilfe Eric
Den "gdb" kenn ich zwar nicht, aber vielleicht hilft es Dir weiter was ich von den anderen Debuggern weiß. Wenn dort immer "step into" zum single-stepping verwendet wird, bleiben die interrupte unbedient (besseres debuggen für none-ISR code) - wenn "step over" zum single-stepping verwendet wird, werden interrupte mit ausgeführt. Übrigends wird bei den meisten im single-stepping die ISR nicht als "run" ausgeführt sondern auch single-stepping...
Also ich habe mal etwas weiter probiert mit dem gdb Debugger. Es gibt zwei Verhaltensweisen, die ich feststellen konnte. Allen ist gleich, dass nur einen Breakpoint im gesamten Projekt gibt und der sitzt am Anfang der Interrupt Routine und der Interrupt wird durch den UART ausgelöst. Die Interruptbehnadlung funktioniert einwandfrei. 1. Verhaltensweise Ich lasse mein Projekt im Run Modus laufen und ein Interrupt tritt auf: - Der µC springt in die ISR, arbeitet den Interrupt, gibt ihn frei und alles ist supi. Danach kann der nächste Interrupt auftreten und es funktioniert wieder. 2. Verhaltensweise Ich steppe durch mein Projekt und ein Interrupt tritt auf: - Wenn ich mit Step Into oder Steo over durch mein Projekt steppe, wird auch nach ganz vielen Steps nicht in die ISR gesprungen, obwohl alle Bedingungen erfüllt sind. Warum? Eine kleine Ergänzung noch: Wenn ich einen Funktionsaufruf in meiner main habe, passiert es manchmal, dass wenn ich mit Step over steppe, der µC am Einsprung zur Funktion erst in die ISR springt, alles korrekt macht, dann die Funktion abarbeitet und alles wieder in Ordnung ist. Eric
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.