STM32 mit ULINK debuggen / globale variablen werden nicht laufen aktualisert

Gast #1573443
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
Gast #1574899
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
Persönliche Seite #1575083
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren