Forum: Mikrocontroller und Digitale Elektronik Debug Problem in einer ISR beim LPC2468


von Eric S. (ottili86)


Lesenswert?

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

von Frank G. (embedded-os)


Lesenswert?

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...

von Eric S. (ottili86)


Lesenswert?

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
Noch kein Account? Hier anmelden.