Forum: Mikrocontroller und Digitale Elektronik stdout logging output ins AtmelStudio umleiten


von Marcel (Gast)


Lesenswert?

Hallo,

wie kann ich ATMEGA1284 stdout/stderr/cout/cerr Ausgaben in das Atmel 
Studio während dem debuggen umleiten (JTAG)?
Solche Logging Ausgaben in der Studio Console wären manchmal hilfreich.

Vielen Dank
Marcel

: Verschoben durch Moderator
von Marius W. (mw1987)


Lesenswert?

Über JTAG geht das meines Wissens nach nicht. Du kannst aber stdout auf 
eine serielle Schnittstelle umleiten: 
AVR-GCC-Tutorial: Die Nutzung von sprintf und printf

Gruß
Marius

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Marius Wensing schrieb:
> Über JTAG geht das meines Wissens nach nicht.

Prinzipiell hätte man die Möglichkeit, byteweise auf das Debugregister
(IDR) auszugeben.  Allerdings gibt es 1.) dann nur 255 mögliche Zeichen
(der Wert 0 heißt „es liegen keine Daten vor“).  2.) gibt es meines
Wissens in Atmel Studio lediglich eine Meldung mit “IDR dirty”, die
den jeweiligen Bytewert vom ICE dann anzeigt, aber niemanden, der das
irgendwie zu einem Bytestrom zusammenfassen würde.  Auch ist der
Transport der Daten auf diesem Weg ziemlich schwerfällig, da das ICE
für jedes Byte ein event signalisieren muss, das auf dem PC dann
bearbeitet wird.

von Marcel R. (maru)


Lesenswert?

Hmm, eigentlich bin ich ehh Linuxer.

Geht das ganze (brennen & debuggen) denn im eclipse?

Dort könnte man eventuell ein paar Java Codezeilen anpassen
um das IDR als Logzeile auszugeben.

Einen anderen JTAG Rückkanal gibt es nicht?

Danke
Marcel

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Marcel Ruff schrieb:

> Geht das ganze (brennen & debuggen) denn im eclipse?

Da musst du die Eclipse-Nutzer fragen.  Die Tools an sich (AVRDUDE
und AVaRICE + GDB) sind da.

> Dort könnte man eventuell ein paar Java Codezeilen anpassen
> um das IDR als Logzeile auszugeben.

Wird aufgrund der Schwerfälligkeit des Protokolls nicht ganz einfach.
AVaRICE meldet die IDR-Messages zwar, aber das müsstest du dir dann
trotzdem noch „weiter oben“ zusammenbauen.  Oder du modifizierst
AVaRICE so, dass es diese Bytes auf andere Weise zurückgibt,
vielleicht über eine named pipe.

> Einen anderen JTAG Rückkanal gibt es nicht?

JTAG selbst bzw. das AVR-JTAG-Interface hat dafür keine weiteren
Vorkehrungen.

Ich würde an deiner Stelle eher die Variante über UART oder USB
verfolgen.

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.