Debugger und Programmer

Was ist ein Debugger ?

Ein Debugger ist ein Werkzeug zum Diagnostizieren und finden von Fehlern in Computersystemen. Dabei überprüft der Debugger vor allem Programme aber auch die zur Ausführung vorhandene Hardware. Eine weitere Funktion von Debuggern ist das Steuern des Programmablaufs. Bevor das Debugging beginnt, kann man Stellen im Code definieren, an denen die Ausführung der Software pausieren soll, sogenannte Breakpoints. Damit kann man den genauen Zustand der Software zu diesem Zeitpunkt untersuchen. man erhält zum Beispiel Einblick in alle Variablen und kann so prüfen, ob die erwarteten Werte vorliegen. Andererseits lässt sich das Programm ab dem Haltepunkt Schritt für Schritt abspielen und somit genau beobachten, was geschieht. Es wird ersichtlich, wie und wann sich die Werte einzelner Variablen verändern.Darüber hinaus lässt sich live mitverfolgen, wie genau der Code durchlaufen wird, also in welcher Reihenfolge die einzelnen Anweisungen aufgerufen und verarbeitet werden. Diese detaillierte Analyse trägt dazu bei, Vorgänge besser zu verstehen und so auch komplexe Fehler zu lösen. Teils ist es auch möglich, zu vorherigen Schritten zurückzuspringen und das Programm von dort aus erneut ablaufen zu lassen.

Für die Filterung wurden keine Ergebnisse gefunden!
ST-Link V2 Schaltungsinterner Debugger und Programmer
(8)
ST-Link V2 Debugger und Programmer
sofort lieferbar
ab 3,71 €
USBASP AVR Programmer
(13)
USBASP AVR Programmer
sofort lieferbar
ab 3,99 €
PICKit 3 kompatibler Programmer/Debugger
(9)
PICKit 3 kompatibler Programmer/Debugger
sofort lieferbar
44,95 €
USBasp Programmer Adapter 6pin auf 10pin
(8)
USBasp Programmer Adapter 6pin auf 10pin
sofort lieferbar
ab 0,65 €
USB Logic Analyzer 24MHz 8CH
(15)
USB Logic Analyzer 24MHz 8CH
sofort lieferbar
ab 9,99 €
USB ISP ASP AVR Programmer
(6)
USB ISP ASP AVR Programmer
sofort lieferbar
ab 5,55 €
USB zu TTL UART Modul CP2102
(0)
USB zu TTL UART Modul CP2102
sofort lieferbar
ab 4,80 €
PICKit3 Universal Adapter
(4)
PICKit3 Universal Adapter
nicht verfügbar
ab 2,85 €
Programmer ESP8266 Downloader Debugger USB TTL
(0)
Programmer ESP8266 Downloader Debugger USB TTL
nicht verfügbar
ab 11,05 €

Was ist ein Programmer ?

Ein Programmer ist eine Hardwarekomponente, mit der ein ausführbares Programm auf einen Microcontroller übertragen werden kann. Dabei gibt es unterschiedliche Konzepte wie das des Bootloader, der Parallelprogrammierung oder des JTAG-Interfaces. Zudem spielt bei Atmel-Microcontrollern der “Serial Download eine relevante Rolle, besser bekannt als “ISP“ (In System Programming). Dabei wird das “Serial Processor Interface“ genutzt, welches bei den meisten AVR-Controllern zu finden ist. ISP-Programmer zeichnen sich meist vor allem durch den geringen Hardwareaufwand aus. Bei solchen “Billigprogrammern“ werden die Protokolle mit Hilfe eines entsprechenden Programms am Computer generiert und die Programmierhardware dient lediglich zur Pegelanpassung. Einige einfache Programmer sind derart aufgebaut, dass sie nur aus drei Schutzwiderständen und einem kleinen Treiberbaustein bestehen, der für eine sichere Übertragung bei längeren Kabeln sorgt. Damit ist ein sehr günstiger Einstieg in die Programmierung von Atmel AVR-Controllern möglich. Daneben gibt es Programmer die über eine eigene “Intelligenz“ verfügen, sogenannte “Serial-Programmer“. Bei diesen erfolgt die Datenübertragung am Programmer über eine serielle Schnittstelle oder per USB. Der Programmer selbst verfügt über einen Controller, der die Daten empfängt und das Programmierprotokoll ausführt. Der weit verbreitete SI-Prog wird zwar ebenfalls über eine serielle Schnittstelle angeschlossen ist aber äquivalent zu Parallelprogrammern und verfügt über keine eigene Intelligenz. Deshalb ist es auch nicht möglich den SI-Prog mit einem handelsüblichen USB-Serial-Adapter laufen zu lassen.

Parallelport ISP Programmer

STK 200 kompatible Programmer

Bei Parallelportprogrammern handelt es sich oft um Nachbauten von Programmierinterfaces der ersten Starterkits von ATMEL dem STK200 oder STK300. Beworben werden diese oft als STK200 kompatibel oder als sogenannte Standard-ISP-Programmer. Der Vorteil dieser Programmer liegt darin, dass so ziemlich jede Programmersoftware diese unterstützt. Die Kompatibilität bezieht sich hier auf die Belegung der Leitungen am LPT-Port und hat nichts mit der Verwendung eines Treiberschaltkreises dieser Programmer zu tun.

LTP-Pinning des STK200

SCK = 6;

MOSI = 7;

RESET = 9;

MISO = 10;

SP12 kompatible Programmer

Bei dem SP12 Programmer handelt es sich ursprünglich um eine sehr einfache Lösung, bei der nur drei Schutzwiderstände und keine weitere Pegelanpassung benutzt wurde. Dieser sehr günstige Programmer erfreut sich großer Beliebtheit. Der Hauptgrund hierfür liegt aber in seiner Schaltungslösung, die es erlaubt, das Zielsystem über den LPT-Port mit Spannung zu versorgen. Bei der STK200 Schaltung muss der Programmer vom Zielsystem versorgt werden. Es wird beim SP12 also zum Programmieren keine zusätzliche Spannungsversorgung benötigt.

LPT-Pinning des SP12:

VCC = 4,5,6,7,8;

RESET = 3;

SCK = 2;

MOSI = 9;

MISO = 11;

Pseudo serielle Programmer

Der wegen seiner guten Unterstützung des beliebten PonyProg bekannte SI-Prog wird oft als serieller Programmer bezeichnet. Seine Schaltung verrät jedoch, dass die Steuerleitungen DTR, RTS und CTS des COM-Ports verwendet werden um ein SPI-Protokoll laufen zu lassen. Dabei werden TxD und RxD, die eigentlichen Steruerleitungen gar nicht angeschlossen, was dazu führt, dass dieser Programmer nicht über USB betrieben werden werden kann und somit PonyProg nicht als Programmiertool zum Einsatz kommen kann.

Echte serielle Programmer

Echte serielle Programmer basieren oft auf dem Atmel Application-Note AN910 oder sind STK500 kompatibel. Ihnen ist dabei gemeinsam, dass ein Controller mit entsprechender AVR910 oder STK500 kompatibler Firmware vorhanden ist, die meist über den Bootloader geupdated werden kann. Parallelprogrammer werden durch die meisten Flash-Tools unterstützt und können auch mit handelsüblichen USB-Serial-Adaptern betrieben werden.

Das alte Protokoll nach AN910 ist problematisch bei der Unterstützung neuer Controller, denn hier muß der Programmer die ID des Controllers kennen. Für neue Controller braucht man also ein Update der Software im Programmer. Wichtige Weiterentwicklungen bei den Serialprogrammern ist das AVR911 und das STK500v2 Protokoll.

USB-Programmer

Die Besonderheit dieser Programmer besteht darin, dass der Programmer selbst über eine USB-Schnittstelle verfügt und somit problemlos an den Computer angeschlossen werden kann. Es handelt sich hierbei in der Regel um AVR910 oder STK500-kompatible Lösungen, für die unter Windows ein Treiber installiert werden muss, der im System einen virtuellen COM-Port simuliert.

Ein AVR-Microcontroller kann für langsame USB-Geschwindigkeiten das USB-Interface emulieren. Das USB-Protokoll selbst ist meist nur minimalistisch wodurch es zu Inkompatibilitäten kommen kann. Der größte Vorteil für die Nutzung der AVR als virtueller USB-Controller ist , dass sich damit auch ohne SMD-Bauteile USB-Programmer bauen lassen, die ohne serielle Schnittstelle funktionieren.

JTAG& PDI Programmer

Mit der Veröffentlichung des XMEGA hat sich ATMEL vom ISP Standard getrennt und an dessen Stelle kommt nun PDI oder JTAG zum Einsatz.

Für Mikrocontroller-Boards schlägt Atmel einen 6-Pin Header, 2,54 mm Raster, mit folgender Pinbelegung vor (Ansicht von Oben):

DATA 1 2 VCC

N.C. 3 4 N.C.

C L K 5 6 GND

Arduino als ISP-Programmer

Auch ein Arduino kann recht einfach als ISP-Programmer für andere Microcontroller eingesetzt werden. Dabei kommt die serielle SPI-Schnittstelle zum Einsatz. Mit Hilfe eines ISP-Programmers ist es möglich diverse Mikrocontrollertypen zu programmieren. ISP steht dabei für In-System-Programming, was so viel bedeutet, wie dass der Controller direkt im Einsatzsystem programmiert werden kann. Damit der Arduino als ISP-Programmer eingesetzt werden kann, muss dieser erst selbst entsprechend programmiert werden. Hierfür ist in der Arduino IDE bereits das Beispiel “ArduinoISP” enthalten, welches lediglich geöffnet und über USB auf den Arduino geladen werden muss. In der Arduino IDE muss dann über das Menü Werkzeuge ? Programmer ? Arduino as ISP ausgewählt werden.

Nachdem alles entsprechend verkabelt wurde kann dann der Sketch entweder durch klicken des Hochladen-Buttons bei gedrückter Umschalttaste, oder über das Menü Sketch ? Hochladen mit Programmer auf den Ziel-Mikrocontroller geladen werden.

Wozu verwendet man welchen Programmer / Debugger ?

Mit dem USB ISP ASP AVR Programmer lassen sich beispielsweise per USB wieder Bootloader auf defekte Arduinos oder alte 8Bit 3D-Druckermainboards flashen.

Der ST-Link V2 Schaltungsinterne Debugger und Programmer kann direkt auf den Arduino aufgesteckt werden und kann über die SwlM und JTAG/SWWD-Schnittstellen direkt mit den STM8 oder STM32 Microcontrollern des Anwendungsboards kommunizieren

 

Zuletzt angesehen