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
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.
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.
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
> 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.
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
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.
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?
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.
Hey Thorsten, danke für deine Hilfsbereitschaft...werd mich mit Hilfe deiner Tips heute weiter durchquälen... :-) Gruß, Bernd
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.