Das Bild in diesem Beitrag wurde von DALL-E erstellt.
Microchip hat kürzlich den Preis für ihren Hardware-Debugger SNAP von über 50 € auf unter 20 € gesenkt. Ich habe kürzlich das Python-Skript dw-gdbserver für diesen und andere Hardware-Debugger erstellt, so dass du SNAP jetzt in der Arduino IDE 2 zum Debuggen klassischer ATtinys und kleiner ATmegas verwenden kannst. Alles in allem ist dies eine erschwingliche und komfortable Debugging-Lösung für klassische AVRs.
Du kannst den Microchip SNAP Hardware-Debugger derzeit für weniger als 20 € bei Händlern wie DigiKey, Mouser, TME oder RS Components bekommen. Leider scheint derzeit (Anfang 2025) keiner von ihnen welche auf Lager zu haben. Ich scheine eines der letzten Exemplare erwischt zu haben. Aber die Läden füllen ihre Bestände wieder auf.

Der SNAP sieht nach einem tollen Angebot aus, aber bevor du ihn zum Debuggen klassischer AVR-Chips verwenden kannst, ist einiges an Arbeit notwendig. Du musst den Debugger in den AVR-Modus schalten, vielleicht ein paar Hardware-Modifikationen vornehmen, einen Weg finden, ihn mit deinen Target-Chips zu verbinden, und eine Debugging-Software installieren. Aber das sollte dich nicht davon abhalten, den SNAP zu benutzen. Es ist alles ganz einfach.
In den „AVR“-Modus wechseln
Zuerst musst du den SNAP in den AVR-Modus schalten. Leider wird dies im SNAP-Manual nicht behandelt. Wenn du im Internet suchst, findest du zwar viele Hinweise, aber es sieht alles sehr verworren aus. Die Vorschläge lauten, alte Versionen der IDE von Microchip und vielleicht Microchip Studio (früher Atmel Studio) zu verwenden, um die Firmware zu ändern oder herunterzustufen. Wenn du nicht daran interessiert bist, die Microchip-Software zu benutzen, ist es alles etwas einfacher.
Die aktuelle Version von avrdude (seit Version 7.3) ist sehr gut darauf vorbereitet, den Wechsel in den AVR-Modus durchzuführen, sofern eine aktuelle Firmware-Version auf dem SNAP installiert ist. Gib einfach das Folgende in ein Terminalfenster ein:
> avrdude -c snap_isp -Pusb -xmode=avr
Dies wird hoffentlich zu folgendem Ergebnis führen
Error: MPLAB SNAP in PIC mode detected switching to AVR mode;
run avrdude again to continue the session
Danach ist der SNAP bereit, mit avrdude und dw-gdbserver zu kommunizieren. Wenn du die gleiche Zeile noch einmal eingibst, solltest du die Antwort erhalten:
Warning: programmer is already in AVR mode, ignoring -x mode
...
Ein Programm zur Auflistung aller angeschlossenen USB-Geräte (z.B. lsusb
) sollte jetzt ein Gerät mit der VID/PID 0x03EB/0x2180 finden, das die Zeichenfolge „CMSIS-DAP“ in seiner Beschreibung enthält.
Mit dem gleichen Trick kannst du übrigens auch einen PICkit4-Debugger in den AVR-Modus bringen. Anstelle von snap_isp
musst du jedoch pickit4_isp
angeben.
Wenn du keinen Erfolg hattest, liegt das wahrscheinlich daran, dass die Firmware auf dem SNAP oder PICkit4 Museumswert hat. In diesem Fall musst du eine neuere Microchip-Firmware auf das SNAP oder PICkit4 laden, wie im Anhang beschrieben. Danach kannst du versuchen, wieder in den AVR-Modus zu wechseln.
Anpassen der Hardware
Einige kleine Hardwareanpassungen können notwendig sein. Wenn du ein Revision 1 Board besitzt, entferne den Pull-Down-Widerstand R48 an der Datenleitung und löte stattdessen einen Pull-Up-Widerstand ein. Dies wird in der Engineering Technical Note #36 ausführlich beschrieben. Das neue Revision 2 Board hat einen Jumper, mit dem das möglich ist. Du musst also nur den Jumper auf die AVR-Position setzen.
Beachte, dass du nicht in den AVR-Modus schaltest, wenn du den Jumper auf die AVR-Position setzt oder die Widerstände umlötest! Dies kann nur durch die oben beschriebene Firmware-Änderungen erreicht werden.
Hardware-Adapter
Dir ist vielleicht aufgefallen, dass der Anschluss auf der Platine eine SIL-8-Buchse ist, die nicht gut zu dem 2×3 ISP-Anschluss passt, der normalerweise auf AVR-Target-Boards verwendet wird. Natürlich könntest du den AVR-Programmieradapter AC31S18A für etwa 25 € kaufen, aber das scheint mir ein bisschen zu viel des Guten. Bei OSH kannst du drei PICKIT4-AdapterISP-Platinen für weniger als 3 € (inklusive Versand) bestellen. Beachte, dass auch Zoll- und Bearbeitungsgebühren anfallen und dass es 3 Wochen dauert, bis die Platinen in Deutschland ankommen.

Eine Alternative ist eine Adapterplatine, die du bei eBay für weniger als 10 € kaufen kannst. Dazu müssen allerdings einige SMD-Teile gelötet werden.
Software
Das Wichtigste für einen Hardware-Debugger ist die Software, die es ihm ermöglicht, mit dem symbolischen Debugger auf deinem Host-Computer zu kommunizieren. Microchip bietet MPLAB X und Microchip Studio an, die mich allerdings nicht überzeugen. Dann gibt es noch die Open-Source-GDB-Server-Implementierungen Bloom und AVaRICE, die sich vor allem an Linux-Nutzer richten. Es gibt jedoch keinen plattformunabhängigen GDB-Server, den man z. B. als Debugging-Lösung in der Arduino IDE 2 oder in PlatformIO verwendet werden könnte.
Glücklicherweise hat Microchip jedoch das Python-Skript pymcuprog veröffentlicht, das eine solide Grundlage für die Implementierung eines GDB-Servers bietet, der mit SNAP, Pickit4, Atmel-ICE, Power Debugger, JTAGICE3 und allen EDBG-Entwicklungsboards interagieren kann. Auf der Grundlage dieses Skripts habe ich dw-gdbserver implementiert, einen GDB-Server für alle debugWIRE MCUs. Du kannst das Skript mit pipx von PyPI herunterladen, oder du kannst eine ausführbare Binärdatei vom GitHub-Repository herunterladen. Wenn du das Skript einfach nur in der Arduino IDE 2 verwenden willst, musst du zusätzliche Boardmanager-URLs im Preferences
-Dialog angeben:
https://felias-fogg.github.io/ATTinyCore/package_drazzy.com_ATTinyCore_index.json
Danach installierst du die neuesten Versionen der entsprechenden Cores und schon kannst du fast alle klassischen ATTinys aund ATmegaX8 MCUs debuggen, soweit sie debugWIRE-fähig sind (ATmegaX8 kommen in einigen Tagen).
Zusammenfassung und Ausblick
Der SNAP ist ein tolles Angebot, wenn du einen erschwinglichen Hardware-Debugger suchst. Und jetzt gibt es auch einen GDB-Server, der es der Arduino IDE 2 ermöglicht, ihn für alle debugWIRE MCUs zu nutzen. Dies ist jedoch nur ein erster Schritt. JTAG und UPDI MCUs werden (hoffentlich) in Zukunft behandelt.
Alle diejenigen, die meinen DIY Hardware-Debugger dw-link einsetzen, können ebenfalls das dw-gdbserver Skript benutzen. Das Skript reicht in diesem Fall alle Kommunikation direkt zu dem Hardware-Debugger durch. Und um die Kommunikation mit dw-link and den Microchip-Debuggern möglichst ähnlich zu gestalten, habe ich die Interaktion mit dw-link angepasst.
Anhang: Installieren einer aktuellen Firmware-Version
Um SNAP (oder PICkit4) mit aktueller Firmware zu aktualisieren, musst du zuerst den Bootloader installieren und dann die aktuelle Firmware laden. Das Werkzeug dafür ist die MPLAB X IDE. Wenn du SNAP mit Microchip Studio verwenden möchtest, empfiehlt die Weisheit des Internet, die Version 6.05 herunterzuladen, anstatt der neuesten Version. Im Einzelnen musst du die folgenden Schritte durchführen:
- Lade die IDE herunter und installiere sie. Du musst nur die Unterstützung für 8-Bit-Geräte herunterladen und auch die IPE brauchen wir nicht. Sie ist immer noch etwa 1 GB groß.
- Nachdem du die IDE gestartet hast, wähle im Menü
Debug
Hardware Tool Emergency Boot Firmware Recovery
. Befolge die Anweisungen. Dadurch wird die Boot-Firmware wiederhergestellt. - Erstelle nun ein neues Projekt (im Menü
Datei
), wähleMicrochip embedded
undAnwendungsprojekt
. Wähle in der Geräteliste einenPIC12LF1840
aus und wähle als Tool denSNAP
. Wähle weiterhinkeinen Debug-Header
,XC8
als Tool-Chain und setze den Projektnamen auf „Test“. - Klicke nun (a) auf das grüne Dreieck in der oberen Zeile (Hauptprojekt ausführen) und wähle SNAP als Werkzeug aus, (b) mache das
Test-Dashboard
sichtbar und (c) klicke schließlich auf die runden grünen Pfeile. Dadurch wird die neueste Firmware auf das SNAP heruntergeladen, und wir sind fertig!

Jetzt sollte avrdude den Rest erledigen können, wie oben beschrieben.
Schreibe einen Kommentar