debugWIRE

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

debugWIRE ist ein serielles Kommunikationsprotokoll, das vom Prozessorhersteller Atmel entwickelt wurde. Es wird für die Programmierung und Fehlersuche bei Atmel AVR Microcontrollern eingesetzt.

Protokoll[Bearbeiten | Quelltext bearbeiten]

Das proprietäre debugWIRE-Protokoll ist als einfache Alternative zu JTAG gedacht und wird bei Prozessoren mit begrenzten Ressourcen – speziell wenigen Anschlusspins – eingesetzt; die meisten modernen 8-bit-Prozessoren von AVR unterstützen das Protokoll. debugWIRE erlaubt vollen Lese- und Schreibzugriff auf den Speicher und die Überwachung des Programmflusses. Dabei können nur die Aktionen durchgeführt werden, die auch bei normalem Programmablauf möglich sind. Breakpoints werden durch Einfügen eines Break-Opcodes (0x9598)[1] gesetzt, dies erfolgt durch jeweilige Neuprogrammierung des Flash-Speichers, der jedoch nur eine begrenzte Zahl von Schreibzyklen zulässt (garantiert 10000)[2].

Programmiergeräte[Bearbeiten | Quelltext bearbeiten]

debugWIRE wird von allen aktuellen Atmel-Debuggern unterstützt, wie z. B. Atmel-ICE, JTAGICE mkII, JTAGICE3 und AVR Dragon.[3]

Protokoll-Spezifikation[Bearbeiten | Quelltext bearbeiten]

debugWIRE kann durch Programmieren des Fuse-Bits DWEN (debugWIRE enable) aktiviert werden, das sich im „High-Fuse-Byte“ befindet. Danach ist die /RESET-Funktion nicht mehr verfügbar und die Programmierung über ISP ist nicht mehr möglich. Die Programmierung der Fuse-Bits kann nicht über debugWIRE erfolgen, dazu muss die debugWIRE-Funktion durch ein Kommando temporär abgeschaltet werden, um mit dem Debugger erneut per ISP zugreifen zu können. Dies erfolgt bei Verwendung des Entwicklungssystems Atmel-Studio transparent für den Anwender.[4] debugWIRE benutzt serielle Kommunikation über eine Ein-Draht-Leitung mit Open-Drain-Ankopplung. Die Standard-Taktrate ist 1/128 des Prozessortaktes. Eingeleitet wird die Kommunikation durch Senden des Break-Zustandes (alle Bits 0), als Antwort sendet der zu testende Prozessor das Byte 0x55, das aus abwechselnd Null- und Eins-Pegeln besteht. Dies erlaubt dem Debugger eine einfache Identifizierung der Taktrate.[5][6]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. AVR Assembler Instructions
  2. ATtiny25-ATtiny45-ATtiny85_Datasheet-Summary.pdf
  3. debugWIRE-Interface des AVR Dragon
  4. debugWIRE-Artikel
  5. The debugWIRE protocol (Englisch)
  6. Simple stand-alone debugWIRE debugger (open source)

Weblinks[Bearbeiten | Quelltext bearbeiten]

Advanced Debugging (Vortrag auf Englisch)