Um ein einfaches Mikrocontroller-Programm zu debuggen, braucht es normalerweise nur eine serielle Schnittstelle, eine LED, ein paar printf-Anweisungen und etwas Grips. Bei größeren und komplexeren Programmen macht ein gutes Debugging-Tool das Leben deutlich einfacher.

 
black magic probe v2.1
Black Magic Probe (links) angeschlossen an ein 1Bitsy STM32F415 Board

JTAG und SWD

Mit der Einführung von JTAG wurde alles einfacher, doch nicht alle Mikrocontroller haben JTAG-Interfaces. Da ein vollständiges JTAG-Interface mindestens fünf Controller-Pins benötigt (der komplette JTAG-Stecker hat 20 Pins!), bevorzugen MCU-Hersteller manchmal ein vereinfachtes, kundenspezifisches Debugging-Interface, das weniger Ressourcen beansprucht. Kleinere ARM-MCUs sind z. B. oft mit einem SWD-Port (Serial Wire Debug) ausgestattet, der nur zwei Pins benötigt.

Neben der Wahl eines geeigneten Debug-Tools ist die Einrichtung einer Debugging-Umgebung keine leichte Aufgabe. Mit ordentlich Geld wird das Problem kleiner, aber wenn man eine preiswerte Lösung via GDB-with-OpenOCD sucht, wird es weniger komfortabel. 

Black Magic Probe unterstützt JTAG und SWD

Bei der hier beschriebenen Black Magic Probe (BMP) von 1BitSquared handelt es sich um ein Debugging-Tool, das diese Probleme löst. Es unterstützt nicht nur JTAG und SWD, sondern hat auch einen eingebauten GNU-Debugger-Server (GDB), der die Einrichtung der Toolchain vereinfacht und unter Windows, Linux und sogar OS X funktioniert.

Bevor Sie zu euphorisch werden: BMP zielt auf ARM-Cortex-M und -A basierte Mikrocontroller, doch davon gibt es viele auf dem Markt (STM32, SAM, LPC, nRF5 und viele andere mehr).

Charakteristika von Black Magic Probe:

  • Laden Ihrer Anwendung in den Flash-Speicher oder RAM des Targets
  • Einzelschritt-Modus zur Programmausführung
  • Start und Stopp Ihres Programm jederzeit in Echtzeit
  • Überprüfung und Modifikation von CPU-Registern und Speicher
  • Call-Stack-Backtrace
  • Bis zu sechs hardware-unterstützte Breakpoints
  • Bis zu vier hardware-unterstützte Lese-, Schreib- oder Zugriffs-Watchpoints
  • Unbegrenzte Anzahl von Software-Breakpoints bei Ausführen der Anwendung im RAM