Forum: Mikrocontroller und Digitale Elektronik Mit JTAG Variablen eines Atmegas zur Laufzeit einsehen


von 006 (Gast)


Lesenswert?

Hi,

Habe einen ATmega64 und eine funktionierende JTAG Verbindung über das 
JTAG ICE3. Programmiere mit Atmel Studio 6, bin da aber noch ziemlicher 
Neuling.

Kann ich über die JTAG Schnittstelle zur Laufzeit Variablen und 
Registerinhalte im ATmega einsehen?


+ Platine läuft
+ Mikrocontroller läuft
+ Atmelstudio ist offen
+ Tools/DeviceProgramming öffnet ein Fenster und stellt eine JTAG 
Verbingung her

...wie kann ich nun "in den Controller" gucken? geht das überhaupt?

Viele Grüße,
006

von Thomas E. (thomase)


Lesenswert?

006 schrieb:
> ...wie kann ich nun "in den Controller" gucken? geht das überhaupt?

Wenn ich dich richtig vertstehe, nein, das geht nicht.

Du kannst einen Breakpoint setzen oder einen Break manuell auslösen. 
Dann wird das Programm an der Stelle angehalten und du kannst dir alles, 
was in diesem Kontext gültig und nicht dem Optimierer zum Opfer gefallen 
ist, ansehen.

Zusätzlich kannst du die Optimierung abschalten. Das ist aber auch nicht 
der Weisheit letzter Schluss. Besonders bei kleinen Controllern.

mfg.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Thomas Eckmann schrieb:

> Du kannst einen Breakpoint setzen, dann wird das Programm an der Stelle
> angehalten und du kannst dir alles, was in diesem Kontext gültig und
> nicht dem Optimierer zum Opfer gefallen ist, ansehen.

Man kann natürlich den Programmfluss auch manuell stoppen und sich
dann den aktuellen Zustand ansehen.

> Zusätzlich kannst du die Optimierung abschalten. Das ist aber auch nicht
> der Weisheit letzter Schluss.

Insbesondere generiert es einen völlig anderen Code als den, den man
eigentlich debuggen wollte.

Um sich hie und da mal ein Zwischenergebnis ansehen zu können, ohne
dass der Compiler das wegoptimiert, kann man passend ein paar als
„volatile“ markierte Variablen anlegen und befüllen.  Das ist allemal
ein weniger störender Eingriff als die „große Keule“ Optimierung
abschalten.

von 006 (Gast)


Lesenswert?

Hi, und danke schonmal.

Thomas Eckmann schrieb:
> Du kannst einen Breakpoint setzen oder einen Break manuell auslösen.
> Dann wird das Programm an der Stelle angehalten und du kannst dir alles,
> was in diesem Kontext gültig und nicht dem Optimierer zum Opfer gefallen
> ist, ansehen.

Wo kann ich mir die Inhalte anzusehen?

Jörg Wunsch schrieb:
> Um sich hie und da mal ein Zwischenergebnis ansehen zu können, ohne
> dass der Compiler das wegoptimiert, kann man passend ein paar als
> „volatile“ markierte Variablen anlegen und befüllen.

Ok, die Variable ist nun entsprechend deklariert.
1
volatile uint16_t DatenHL = 0;
Wie erkenne ich sie und wie kann ich sie über JTAG einsehen?

von Purzel H. (hacky)


Lesenswert?

Na. Der Debugger, inkl Software, zB AVR Studio, sollte das koennen.

von Thomas E. (thomase)


Lesenswert?

Jörg Wunsch schrieb:
> Man kann natürlich den Programmfluss auch manuell stoppen und sich
> dann den aktuellen Zustand ansehen.

Steht doch da. Hab ich aber nacheditiert.

006 schrieb:
> Ok, die Variable ist nun entsprechend deklariert.

Globale Variablen kannst du dir zumeist auch ohne volatile so ansehen. 
Auf lokale Variablen in einer Funktion oder ISR hast du keinen Zugriff. 
Die macht man dann zum Debuggen global und volatile oder static.

Manchmal muss man auch einen Dummy einbauen (z.B. PORTA = PORTA;), damit 
man überhaupt einen Breakpoint gesetzt bekommt. Das verändert dann zwar 
den Programmlauf ein wenig, ist aber immer noch besser als die 
Optimierung abzuschalten.

006 schrieb:
> Wie erkenne ich sie und wie kann ich sie über JTAG einsehen?

Indem du mit der Maus draufgehst. Oder mir der rechten Maustaste 
anklickst und dann "Add watch...".

Spiel da einfach ein bisschen mit rum. Dann findest du das schon. Ich 
hab jetzt keine Lust, eine Bedienungsanleitung zu schreiben.

mfg.

: Bearbeitet durch User
von 006 (Gast)


Lesenswert?

Hi und vielen Dank,
habs nun hinbekommen.

von Bernhard F. (bernhard_fr)


Lesenswert?

Thomas Eckmann schrieb:
> Spiel da einfach ein bisschen mit rum. Dann findest du das schon. Ich
> hab jetzt keine Lust, eine Bedienungsanleitung zu schreiben.
>
> mfg.

Deine Hilfsbereitschaft in allen Ehren, aber das wäre hart übertrieben. 
Das ist alles super in der Programmhilfe vom Atmel Studio dokumentiert.

"F1" und in der html Hilfe unter dem Punkt "Debugging" weiter zu 
"QuickWatch, Watch, Locals and Autos Windows" manövrieren.
"DataTips" ist auch noch hilfreich.

Gibt es sogar auch zusätzlich noch online:
http://www.atmel.com/webdoc/atmelstudio/atmelstudio.Debug.html

O.K. des Englischen sollte man noch mächtig sein...

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.