Forum: Mikrocontroller und Digitale Elektronik STM32 mit ULINK debuggen / globale variablen werden nicht laufen aktualisert


von Ringo Star (Gast)


Lesenswert?

Hallo,

ich habe das seltsame Phänomen, dass ich in einigen STM32 Projekten 
unter µVision3 die Änderungen der globalen Variablen nicht in Echtzeit 
sehen kann. Sie werden erst aktualisiert, wenn ich einen Breakpoint 
setze. Bei anderen Projekten funktioniert das. Die Projekteinstellungen 
habe ich bereits übeprüft. Kennt jemand das Problem oder hat sogar 
abhilfe?

Gruß
Ringo Star

von Maxim D. (tisonox)


Lesenswert?

Hi Ringo,

ich nutze uVision3 und ULINK2 mit einem STR9. Habe auch das gleiche 
Problem. Die Variablen werden bei mir auch nur bei Breakpoints oder wenn 
ich Schritt für Schritt durchgehe aktualisiert.

Gruß
Maxim

von Mandrake (Gast)


Lesenswert?

Hallo ich arbeite hier auch mit eine ULINK an einem ARM LPC2292.
Das Problem kenne ich auch. Variablen werden manchmal sogar nach dem 
anhalten nicht aktualisiert. Aber nur scheinbar. Schon des öfteren habe 
ich gedacht mein Programm hat einen Fehler weil die Variableninhalte 
einfach nicht angezeigt werden.
Mein Fazit: Schmeißt die ULINK-Dinger auf den Müll. Zum Programmieren 
der Elektronik gehen die Dinger ja, zum Debuggen taugen  sie nichts.

Zum Debuggen nutzen wir den Lauterbach-Debugger. Teuer aber SEHR GUT. 
Hat uns schon viel Zeit gespart. Das Teil ist Gold Wert.

Gruß

Mandrake

von Martin (Gast)


Lesenswert?

Aber es muß doch einen Grund geben, warum die Variableninhalte nicht 
aktualisiert werden. Einfach wegwerfen? Was sagt denn Keil zu diesem 
Verhalten? Liegt das Problem überhaupt am Ulink?

von Random .. (thorstendb) Benutzerseite


Lesenswert?

> Mein Fazit: Schmeißt die ULINK-Dinger auf den Müll.
> Zum Programmieren der Elektronik gehen die Dinger ja, zum Debuggen taugen  sie 
nichts.

Zum Debuggen taugen sie sogar sehr viel, wenn man die Architektur 
verstanden hat, auf der man programmieren will.

Der ARM Cortex besitzt intern eine neue Debug Unit, die Coresight Arch.
Diese erlaubt ein Non-Invasive Debugging, das heisst, man kann Memory 
Reads und Watches auf die Debug IDE übertragen, ohne dass das 
Zielprogramm auf dem Core davon beeinflusst wird.

Bei ARM7/9 gibt es das nicht.

---
Damit die IDE auch im RUN mode die Variablen und Memory Window updated, 
muss unter "View" das "Periodic Window Update" eingeschaltet sein.

Weiterhin kann man sich zwei globale! Variablen in den Logic Analyzer 
holen und (bei eingeschaltetem SWO Trace!) dort live ansehen.
Achtung: Die SWO Bandbreite des CM3 ist sehr begrenzt.

> Variablen nicht in Echtzeit
geht nicht, ausser du nimmst nen ULINK Pro oder ein anderes Trace 
device.


Ebenfalls neu im Cortex sind die 6 HW BPs (gegenüber zwei beim ARM7).
ein BP wird meist vom Emu (ULINK, JLINK) gebraucht, im Step Over Mode.
Alle anderen sind frei verwendbar.

In die Hard Fault Routine z.B. kann man sich eine "bkpt" Instruction 
legen, das ersetzt einen HW BP.


Weitere Fragen? Erst lieb fragen, dann schimpfen.



VG,
/th.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Nachtrag:

ULINK2, ME und Pro unterstützen alle SWJ sowie SWO.
Ich habe noch keinen gehabt, wo das nicht ging (und habe sie alle hier 
liegen, ebenfalls die JLink/Trace :-) )

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

Random ... schrieb:
> Ebenfalls neu im Cortex sind die 6 HW BPs (gegenüber zwei beim ARM7).
> ein BP wird meist vom Emu (ULINK, JLINK) gebraucht, im Step Over Mode.
> Alle anderen sind frei verwendbar.

Warum eigentlich? CM3 hat doch das C_STEP bit im DHCSR. Oder soll das 
Verhalten in Halt-mode und Monitor-Mode einfach identisch sein?

Gruß
Marcus

von Ringo Star (Gast)


Lesenswert?

Hallo Random,

vielen Dank! Das mit dem "Periodic Window update" war genau was ich 
suchte!

Gruß
Ringo Star

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.