STM32 mit ULINK debuggen / globale variablen werden nicht laufen aktualisert

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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.