Forum: Mikrocontroller und Digitale Elektronik Debuggen für Dummies


von Bernd Bubble (Gast)


Lesenswert?

Hallo,

habe in der Programmierung (insbesondere bei uCs) wenig Erfahrung und 
bin heute das erste mal bei Debugging. (uC: ARM von Philips  Tool: Keil 
uVision)

Bei einem bestehenden Projekt läuft ein Timer-Interrupt alle 1ms ab.
Gleichzeit sollte einmal in der Sekunde von ein UART Interrupt 
stattfinden (nicht zeitgesteuert sondern ankommendes byte von externem 
Gerät).

Mir fehlt wohl noch ganz übel das Verständnis, aber wie lässt sich sowas 
anständig debuggen? Wenn ich versuche durch den Code zu steppen...ist es 
doch unwahrscheinlich, dass ich einmal den UART-Interrupt Handler 
reinfalle.
Der müsste doch andauernd damit beschäftigt sein die Interrupts 
abzuarbeiten?

Gruß,
Bernd

von Arne (Gast)


Lesenswert?

Breakpoint(s) in die UART-ISR?

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Hi,

nein, da hast du recht, mit Interrupts debuggen ist das nicht so leicht 
:-)
Wenn du single steps machst (gleich, ob ASM oder HL (C)), sind die 
Interrupts ausgeschaltet.

Wenn du interrupts debuggen möchtest, kannst du einen Breakpoint an die 
Stelle im Interrupthandler setzen, wo du anhalten möchtest. Beim LPC21xx 
ist ev. die UART_Interrupt_Function - entry interessant, weil du da ja 
noch nach der UART source fragen musst (z.B. RT_INT).

In der Interrupt Routine kannst du dann nach belieben herumsteppen, und, 
falls du dir im gleichen Kontext etwas nochmal ansehen möchtest, den 
Programm counter (rechte maustaste) neu setzen (dies sollte man nur 
innerhalb einer funktion tun!).


VG,
/th.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Bedenke:
Der ARM7 (z.B. LPC21xx, SAM7, STR7) unterstützt max. 2 HW-Breakpoints, 
wovon einer idR. fürs Steppen (in C) gebraucht wird. Brauchst du mehr, 
musst du dein Programm ins RAM linken & dort debuggen.

Spielst du mit einem Cortex-M3 herum (z.B. LPC17xx, STM32, SAM3), kannst 
du max. 6 HW-BPs setzen, dazu noch Watchpoints (z.B. wenn auf eine Var 
geschrieben/gelesen/beides wird, oder wenn die Variable dazu noch einen 
bestimmten Wert annimmt).

Btw: µV3 oder µV4?


Welchen LPC verwendest du? Hab da ev. noch was schönes für den UART für 
LPC2140 (sollte auch auf 2130 laufen).


VG,
/th.

von elko (Gast)


Lesenswert?

Hey, ich hab eigentlich die gleiche Frage wie Bernd. Wie kann ich einen 
Interrupt bei µVision3 für den µC AN2131SC simulieren? Mein Problem wird 
übrigens hier genauer erläutert... 
Beitrag "Interrupt stört Programmablauf und umgekehrt?"

Viele Grüße,
elko

von Random .. (thorstendb) Benutzerseite


Lesenswert?

> Wie kann ich einen Interrupt bei µVision3 für den µC AN2131SC simulieren?

Hi,

ich kenn den Controller jetzt gerad nich, aber der Simulator in uVision 
unterstützt für alle Controller aus der Device Database fast alle 
OnChip-Peripherals. D.h. wenn diese Interrupts verwenden werden diese 
auch simuliert (z.B. UART-RX interrupt).

D.h. du kannst das genauso simulieren wie auf der HW laufen lassen.


VG,
/th.

von elko (Gast)


Lesenswert?

Okay, und wie kann ich dann einen Interrupt (genauer: einen Timer) beim 
Debuggen auslösen oder überwachen? Weil ich z.Zt vermute, dass die ISR 
des Timers das Hauptprogramm aus dem Konzept bringt.

Viele Grüße,
elko

von Random .. (thorstendb) Benutzerseite


Lesenswert?

genaugenommen bringt jeder interrupt dein "Hauptprogramm" aus dem 
konzept, sonst wärs kein interrupt :-)

Setze einfach einen BP zu Beginn deiner ISR, und starte das Programm 
(run).
Wenn ein Interrupt kommt (z.B. Timer), dann wird die ISR angesprungen 
und das Prog hält an deinem BP.

Bedenke, dass die Simulation ev. etwas langsamer läuft als die real HW. 
Wie schnell, das kannst du am Timer (den man per re. Maustaste auch 
resetten kann, zum messen) im untersten bereich (unten rechts) des 
µVision fensters erkennen.


VG,
/th.

von elko (Gast)


Lesenswert?

Hey, das ist nett :D (ich meine, auf die Idee ganz da unten zu schauen 
wäre ich nicht gekommen...)
aber leider kommt mein Programm nie in der isr an... Wenn ich es auf dem 
Chip laufen lasse, kommt es in die isr. Was kann da falsch sein?

von Random .. (thorstendb) Benutzerseite


Lesenswert?

ok, mal klartext:
- welcher LPC?
- welche ressource?

lösch ma aus deinem projekt alle object-files und schicks (komplett! hab 
kein bock das erst wieder hinzufummeln :-) ) als zip an:
thorsten.de.buhr at_ arm _dot com

Ich schau mal kurz drüber.


VG,
/th.

von Bernd Bubble (Gast)


Lesenswert?

Hey Thorsten,

danke für deine Hilfsbereitschaft...werd mich mit Hilfe deiner Tips 
heute weiter durchquälen... :-)


Gruß,
Bernd

von Bernd Bubble (Gast)


Lesenswert?

Übrigens uVision 3 mit einem LPC2294...

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.