mikrocontroller.net

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


Autor: Eric Schrön (ottili86)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank Götze (embedded-os)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Eric Schrön (ottili86)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.