Voor het debuggen van een eenvoudig microcontrollerprogramma is meestal niet meer nodig dan een seriële poort, een LED, een paar printf-statements en wat grijze cellen. Maar als de programma’s groter en ingewikkelder worden, maakt een goed stuk debuggereedschap het leven een stuk gemakkelijker.

 
black magic probe v2.1
De Black Magic Probe (links) verbonden met een 1Bitsy STM32F415-board.

JTAG en SWD

De uitvinding van JTAG heeft dit probleem gedeeltelijk opgelost, maar niet alle microcontrollers hebben een JTAG-interface. Omdat voor een volledige JTAG-interface minstens vijf pennen nodig zijn, gebruiken µC-fabrikanten vaak liever een vereenvoudigde of aangepaste debug-interface met minder aansluitingen. Kleinere ARM -core-processors zijn bijvoorbeeld vaak uitgerust met een SWD-poort (Serial Wire Debug) die maar twee pennen in beslag neemt.

Naast de keuze van een geschikte debugger, is ook het opzetten van een debugomgeving geen eenvoudige klus. Natuurlijk, als je er maar genoeg geld tegenaan gooit, hoeft het niet moeilijk te zijn, maar als je op de kleintjes moet letten en aan de slag wilt met GDB en OpenOCD dan zul je je wat meer moeten inspannen.

De Black Magic Probe ondersteunt JTAG en SWD

De Black Magic Probe (BMP) van 1BitSquared, die we in dit artikel gaan uitproberen is een debuggereedschap dat dit soort problemen kan oplossen. Hij ondersteunt niet alleen zowel JTAG als SWD, hij heeft ook een ingebouwde GDB-server (GNU Debugger). Dat maakt het inrichten van de toolchain een stuk gemakkelijker. Hij werkt op Windows, Linux en macOS.

De BMP is bedoeld voor ARM Cortex-M en Cortex-A-microcontrollers, maar daar zijn er een heleboel van op de markt ( STM 32, SAM , LPC, nRF5 en nog veel meer).

De specificaties van de Black Magic Probe

  • Laden van de toepassing in het flashgeheugen of RAM van uw target.
  • Stap voor stap uitvoeren van uw programma.
  • Het programma in real time uitvoeren en op commando laten stoppen.
  • CPU-registers en geheugenplaatsen inspecteren en veranderen.
  • Een backtrace bekijken van de stack.
  • Maximaal zes hardware-ondersteunde breakpoints.
  • Maximaal vier hardware-ondersteunde lees-, schrijf- of toegangswatchpoints.
  • Onbegrensd aantal software-breakpoints bij het uitvoeren van de toepassing in RAM.