Raspberry-Pi-Debugger Der Raspberry Pi Debug Probe
Anbieter zum Thema
Raspberry Pi Debug Probe ist eine Debug-Lösung für Arm-basierende Mikrocontroller. Das Kit enthält Hardware und Verkabelung, um das „Plug and Play“-Debugging etwa von Raspberry Pi Pico mit Host-Plattformen wie PC, Mac und Linux-Computern zu unterstützen.

Der Raspberry Pi Debug Probe bietet sowohl eine serielle Debug-Schnittstelle für den Prozessor (standardmäßig ist dies die ARM-Serial-Wire-Debug-Schnittstelle) als auch eine UART-Schnittstelle nach Industriestandard.
Eben Upton, Chief Executive Raspberry Pi Trading, präsentiert den Raspberry Pi Debug Probe folgendermaßen: „Seitdem wir im Januar 2021 den Raspberry Pi Pico und unseren RP2040-Mikrocontroller auf den Markt gebracht haben, verwenden die Leute einen Pico, um Programme zu debuggen, die auf einem anderen laufen. Inspiriert von diesem Trend bringen wir heute die Raspberry Pi Debug Probe auf den Markt, eine komplette Debug-Hardware-Lösung für Arm-basierende Mikrocontroller, die mit dem RP2040 betrieben wird und nur 12 US-Dollar kostet.“
Obgleich Raspberry Pi Debug Probe speziell für den Raspberry Pi Pico und andere RP2040-basierende Targets entwickelt wurde, bietet er dennoch Standard-CMSIS-DAP-Debug-Schnittstellen (CMSIS-DAP ist ein einfaches Low-Level-USB-Protokoll für Debug Probes) sowie eine UART-Schnittstelle über USB nach Industriestandard. Beide Schnittstellen verwenden einen 3-Pin-Debug-Anschluss, wie in der Spezifikation des 3-Pin-Debug-Anschlusses des Raspberry Pi angegeben (siehe unten). Raspberry Pi Debug Probe kann so zum Debuggen von beliebigen Arm-basierenden Mikrocontrollern verwendet werden, die einen SWD-Port mit 3V3 I/O bieten. Zudem kann Raspberry Pi Debug Probe auch einfach als kostengünstiges USB-zu-UART-Kabel verwendet werden.
Der Raspberry Pi Debug Probe basiert auf dem Hardware-Design des Raspberry Pi Pico und läuft mit der Open-Source-Software Raspberry Pi Picoprobe. Die Aktualisierung der Firmware erfolgt auf die gleiche Weise wie bei einem Raspberry Pi Pico, so dass es einfach ist, das Gerät mit der aktuellen Picoprobe-Firmware auf aktuellem Stand zu halten oder eine eigene Firmware zu verwenden.
Auslieferung Raspberry Pi Debug Probe
Der Raspberry Pi Debug Probe wird als Kit geliefert, so Atlantik Elektronik, das die Hardware im Kunststoffgehäuse und Kabel enthält: ein USB-Kabel und drei verschiedene Arten von Debug-Kabeln, um die meisten Anwendungsfälle abzudecken. Der Raspberry Pi Debug Probe kostet 12 USD (Listenpreis) und wird direkt von Raspberry Pi bezogen.
Debug Probe hilft bei Fehlersuche
„Die Fehlersuche ist ein notwendiges Übel, und wenn Sie Bugs suchen wollen, brauchen Sie früher oder später einen Debugger“, so Eben Upton. Die meisten Debugger bieten zwar eine Reihe grundlegender Funktionen (Einzelschritte, Haltepunkte, Überprüfung von Variablen und Speicher), aber je nach Sprache und Betriebsumgebung werden diese Funktionen auf unterschiedliche Weise bereitgestellt.
Vielleicht verwenden Sie eine interpretierte High-Level-Programmiersprache wie Python, bei der die Debug-Funktionen direkt in die Laufzeitumgebung integriert sind. Oder Sie verwenden eine niedrigstufige kompilierte Programmiersprache wie C, aber Ihr Programm läuft unter einem Betriebssystem wie Linux; in diesem Fall kann ein Debugger, der oft auf demselben Rechner läuft, mit Ihrem Programm interagieren, während es ausgeführt wird, um dieselben Funktionen bereitzustellen.
Was aber, wenn Ihr C-Programm direkt auf dem Prozessor läuft, ohne ein Betriebssystem (dies wird oft als Bare-Metal-Betrieb bezeichnet)? Was ist, wenn Sie ein Betriebssystem schreiben? In diesem Fall benötigen Sie eine Möglichkeit, auf die im Prozessor selbst eingebauten Debug-Funktionen zuzugreifen. Und genau hier kommt Debug-Probe ins Spiel.
Was ist Debug Probe?
Alle modernen Arm-basierenden Mikrocontroller, einschließlich des RP2040, implementieren die CoreSight-Debug-Architektur von Arm. Jeder Prozessorkern, wie der Cortex-M0+, der im RP2040-Mikrocontroller verwendet wird, bietet einen Access Port (AP), der für Einzelschritte, das Setzen von Breakpoints, das Beobachten der Werte von Prozessorregistern und den Zugriff auf Speicher und Peripheriegeräte über die Busschnittstelle des Prozessors verwendet werden kann.
Der Mikrocontroller selbst bietet einen Debug Port (DP), der extern mit Pins auf dem Gehäuse und intern mit jedem AP im System verbunden ist. Der RP2040 stellt seinen DP über einen Low-Pin-Count-Serial-Wire-Debug (SWD)-Port zur Verfügung: Durch das SWD-Protokoll über diesen Port kann ein Host-Computer den AP jedes Kerns steuern, um ein auf dem Kern laufendes Programm zu debuggen.
Eine Debug-Sonde bildet eine Brücke zwischen USB und dem SWD-Protokoll. Obwohl dies nicht unbedingt erforderlich ist, wenn der Host-Computer ein Raspberry Pi ist (Sie können den SWD-Port des Targets direkt mit dem GPIO-Header eines Raspberry Pi verbinden), ist es viel bequemer, eine Verbindung über USB herzustellen. Und wenn Sie einen PC oder Mac verwenden, ist USB die einzige Option.
Die Raspberry Pi Debug Probe stellt die SWD-Signale auf einem dreipoligen JST-Stecker zur Verfügung, der der Raspberry-Pi-Debug-Connector-Spezifikation entspricht. Raspberry Pi bietet Adapterkabel für den Anschluss ohne Löten an ein Breadboard und an den Debug-Anschluss des Raspberry Pi Pico H und WH an.
Arm hat das Protokoll für die Kommunikation über USB zwischen einem Host-Computer und einer Debug-Probe standardisiert. Die Raspberry Pi Debug Probe entspricht diesem CMSIS-DAP-Standard und funktioniert daher sofort mit vielen bestehenden Debug-Software-Plattformen, einschließlich unseres Favoriten OpenOCD.
Serielle Kommunikation
Eben Upton betront: „Wir möchten oft eine serielle Konsolenverbindung zwischen einem Mikrocontroller-Target und einem Host-Computer herstellen. Dies bietet eine einfache Möglichkeit, mit der auf dem Target laufenden Software zu interagieren und Logging- und andere Diagnosedaten abzurufen. Wenn der Host-Computer ein Raspberry Pi ist, können Sie eine der UART-Peripherien verwenden, die über den GPIO-Header zugänglich sind. Wenn Sie jedoch einen PC oder Mac verwenden, ist es sehr unwahrscheinlich, dass Sie Zugang zu einer eingebauten seriellen Schnittstelle haben.“
Die Raspberry Pi Debug Probe funktioniert wie ein serieller USB-Adapter, über denselben USB-Anschluss wie die SWD-Bridge. Er stellt die UART-Signale auf einem zweiten dreipoligen JST-Stecker zur Verfügung, der wiederum der Raspberry Pi Debug Connector Spezifikation entspricht.
Für Benutzer, die keine Debug-Funktionalität benötigen, ist die Raspberry Pi Debug Probe aufgrund ihres niedrigen Preises eine kostengünstige Alternative zu anderen seriellen USB-Adaptern. Er hat das einst allgegenwärtige FTDI-Kabel als unseren bevorzugten Adapter hier bei Pi Towers weitgehend ersetzt.
Details zu den Entwicklern des Raspberry Pi Debug Probe
Eben Uptron: „Das Raspberry Pi Debug Probe Projekt wurde von James Adams vorangetrieben, der das Konzept entwickelt und die Hardware entworfen hat. Jonathan Bell schrieb die Software und ließ sich dabei vom DapperMime-Projekt inspirieren. John Cowan-Hughes entwarf die Kunststoffteile und die recht ordentliche Verpackungsmechanik. Jack Willis entwarf die Verpackungsgrafik. Rose Nott war für die Lieferkette verantwortlich. Alasdair Allan und Andrew Scheller arbeiteten an der Dokumentation.“
Details zur Spezifikation des 3-Pin-Debug-Anschlusses
Der Raspberry Pi verwendet standardmäßig einen kleinen, kodierten 3-Pin-Anschluss, der für UART oder 2-Draht-serielle-Debug-Schnittstellen verwendet werden kann. Der älteste und universellste "Debug"-Anschluss ist ein einfacher UART des Typs 16550. Ein UART benötigt zwei unidirektionale Pins, einen für die Übertragung von Daten vom Target zum Host (TX) und einen für die andere Richtung (RX).
Die 3-polige Schnittstelle des seriellen Debug-Steckers wurde entwickelt, um mit einen einzigen unidirektionalen Clock-Pin und einem bidirektionalen Daten-I/O-Pin zu arbeiten. Diese Anordnung kann ARMs Serial Wire Debug (SWD) unterstützen oder etwa cJTAG.
Wichtig: Ist von UART TX und RX die Rede, so Raspberry Pi Trading (zuständig für die Herstellung und den Vertrieb der PC-Platine Raspberry Pi), gehe es um die Pins aus der Perspektive des Targets! Ist das Ziel etwa ein BCM2711-SoC, dann bedeutet RX das Signal, das in den SoC hinein- und TX das vom SoC ausgehende Signal.
Pin-Belegung
Jede der Schnittstellen benötigt zwei Pins und eine Masse, so dass für beide ein kodierter 3-Pin-Stecker verwendet werden kann:
Raspberry Pi Trading legte die Pinbelegung so fest, dass das unidirektionale SC (das in das Debug-Target geführt wird) auf demselben Pin liegt wie das UART-RX-Signal, das in dieselbe Richtung geht. Dies vermeide Konflikte, da Raspberry Pi Trading denselben Stecker für UART und serielles Debugging verwendet, so dass ein falsches Einstecken möglich ist).
Raspberry Pi Trading legte zudem fest, dass SD- und UART-TX auf demselben Pin liegen. Der Grund: Wenn Sie einen UART in eine serielle Debug-Schnittstelle einstecken, ist dies „sicher“ und es kommt nicht zu Konflikten. Wird eine serielle Debug-Schnittstelle an einen UART angeschlossen, kann es am TX/SD-Pin zu Konflikten kommen, aber der Strom wird durch die Abschlusswiderstände begrenzt.
Raspberry Pi Trading spezifizierte außerdem „Source-Terminierungs“-Widerstände an beiden Pins an beiden Enden der Verbindung:
- 100-Ohm-Widerstand an den SC/TX- und SD/RX-IC-Pins am Host
- 100-Ohm-Widerstände an den SC/RX- und SD/TX-IC-Pins am Target
Weitere Details zur Spezifikation des 3-Pin-Debug-Anschlusses finden Sie auf der Site von Raspberry Pi.
Der Artikel basiert auf Unterlagen von Raspberry Pi und Atlantik Elektronik.
Dieser Artikel erschien zuerst auf unserem Partnerportal ELEKTRONIKPRAXIS.
(mk)
(ID:49212463)