mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Debug-Ausgaben über JTAG an AVR-Studio


Autor: Thomas Burkhart (escamoteur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

vielleicht hab ich's einfach in der Doku noch nicht gefunden:

Kann ich von c aus einfach Debug Ausgaben über meine JTAG-Verbindung in 
das Ausgabefenster vom AVR-Studio machen?

Grüße

Thomas

Autor: Peter Diener (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ob man damit (virtuelle) serielle Schnittstellen emulieren kann, um 
Debuginfo zur Laufzeit rauszuholen, weiß ich nicht.

Beim PIC mit CCS Compiler geht es. Aber nicht über JTAG, sondern mit 
ICSP.

Was aber möglich ist, ist dass du die Info, die dich interessiert, in 
einen unbenutzten Arbeitsspeicherbereich ablegst und diesen per JTAG 
ausließt.

Besser ist für soetwas natürlich eine echte UART-Schnittstelle auf ein 
Terminal am PC.

Grüße,

Peter

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt ein Debugdatenregister, in das man was rein schreiben kann.
Das ist meines Wissens nur 7 bit breit.  Jedes Zeichen, was dort
hineingeschrieben wird, generiert im JTAG ICE ein "IDR dirty" event,
das der Debugger dann irgendwie auswerten kann.  Ich habe aber keine
Ahnung, was ein AVR Studio draus macht.  Auf jeden Fall generiert
jedes einzelne Zeichen ein Event, was dann doch zu einiger Kommuni-
kation zwischen ICE und Debugger führt.

Ich denke, dass entweder das Beschreiben eines Speicherblocks mit
sprintf oder die Benutzung der UART sinnvoller ist.

Autor: Christof Hahn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kleine Korrektur zu meinem Vorredner:
  * Das Debugregister (OCDR) ist 8-Bit groß!
  * Es ist nur beschreibbar!

Beim Auslesen des Registers zeigt das 8'te Bit an, dass der Debugger das 
Byte abgeholt hat. Eine einfache Routine zum versenden von 
Debugnachrichten sieht dann wie folgt aus:
void outputDebugStr ( pchar aStr ) {

  int l = strlen ( aStr );
  int i;

  for ( i = 0 ; i < l ; i++ ) {
    OCDR = aStr [ i ];
    while ( ( OCDR & 0x80 ) != 0 ); 
  }
}

kleiner Wermutstropfen: AVR-Studio gibt die Bytes einzeln hoch in Form 
von  "JTAGICE mkII: IDR event 0xXX"-Ausgaben, und kann hält auch das 
nicht lange durch :-(. Vielleicht kennt ja jemand ein Tool oder Plugin 
für das AVR-Studio mit dem man Zeilen empfangen und darstellen kann.

Autor: wiRe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei meinem AVRdragon kommt immer nur die Meldung "AVR Dragon: IDR event 
0x00" nach jedem Zugriff auf das OCDR Register, unabhängig davon welchen 
Wert ich wirklich hineingeschrieben habe. Schade, dachte ich hätte damit 
eine Möglichkeit für einfache Debug-Ausgaben gefunden. Aber wie es 
aussieht kann das AVR Studio ja generell die empfangenen Daten nicht als 
reinen Text darstellen. Muss wohl doch der UART dafür herhalten.

Autor: wiRe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ausgabe "0x00" kommt wohl nur beim schrittweise Ausführen. Lässt man den 
Debugger laufen (Run) dann entsprechen die angezeigten Hex-Werte auch 
dem wirklich geschriebenen Wert. Ist wohl ein Bug vom dragon oder 
AVRStudio.

Autor: Thomas Finke (thomas-hn) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir das mal jemand bitte genau erklären wie ich die abgeschickten 
Debug-Nachrichten erhalten?

Ich habe in einem Beispielcode nun mal folgendes eingefügt:
OCDR = 0xAB;
while( OCDR & (1<<7) );

Damit sollte ja das OCDR beschrieben werden und anschließend soll er 
warten bis die Daten abgeholt wurden.
Das Ganze kompiliert auch problemlos und mein Programm läuft beim 
Debuggen problemlos....aber wo erscheinen meine Nachrichten dann? Also 
wo finde ich mein 0xAB?

Im Message-Window von AVR Studio kommt bei mir keine Nachricht?!?

Das Ganze wurde getestet mit einem ATmega16, STK500 und JTAGICEmkII.

Vielleicht kann mir einer auf die Sprünge helfen.

Vielen Dank schon mal,

Thomas

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.