ARMs verwenden entweder JTAG oder SWD, und die gängigsten Mikrocontroller-ARM-Kerne sind die Cortex-Serien, die fast ausschließlich über SWD programmiert und debuggt werden.
Sowohl JTAG als auch SWD sind gut definiert, und die meisten Anbieter beschreiben, wie der Debug Access Port (DAP) eingegeben und bearbeitet wird. Auf diese Weise greifen Sie normalerweise auf die internen Busse, die CPU, die Speicher und die Peripheriegeräte zu. Die physische Schnittstelle zwischen dem PC, den Sie zum Entwickeln / Debuggen verwenden, und dem JTAG / SWD-Port des Mikros ist der Adapter.
Zwar können Sie praktisch alles verwenden, um eine Verbindung zum Port herzustellen und die SWD-Schnittstelle zu manipulieren, aber die meisten Anbieter haben ihre eigene "Variante" des Adapters. Die Verwendung des vom Hersteller empfohlenen Tools ist normalerweise der Weg des geringsten Widerstands, da der Anbieter seinen Adapter unterstützt, die empfohlene Software mit seinem Adapter zusammenarbeitet und die Dinge angemessen gut dokumentiert werden sollten, um die Dinge so reibungslos wie möglich zu gestalten.
Meine Erfahrung mit Herstellerwerkzeugen ist jedoch, dass es sich um minderwertige, schnelle und schmutzige Werkzeuge handelt. Ich habe häufig Probleme mit OpenOCD- und Hersteller-Tools (hauptsächlich ST-Link, Olimex, OpenSDA usw.), insbesondere beim Debuggen. Lass mich dir sagen: nichtsist frustrierender, als endlich ein eingebettetes System dazu zu bringen, einen Fehler in einer Debug-Umgebung und etwas zwischen der Debugger-Software / ide (gdb, eclipse usw.), OpenOCD, dem Hersteller-Treiber und dem Hersteller-Adapter zu zeigen, der nicht mehr synchron ist Debug-Verbindung und Neustart der Hardware erforderlich, um es erneut zu versuchen. Diese frustrierende Instabilität der Umgebung öffnet Anbietern wie Segger die Tür, die ihre eigenen JTAG / SWD-Adapter herstellen, exzellenten Support bieten und deren Tools mit vielen verschiedenen Anbietern zusammenarbeiten. Es gibt etwas zu sagen, dass eine einzige einheitliche Schnittstelle mit praktisch allen Geräten verwendet werden kann, mit denen Sie arbeiten.
Ich habe viel Zeit damit verbracht, J-Link wegen des Preises zu meiden und weil ich es vorgezogen habe, offene Software und Tools von Anbietern zu verwenden. Ich habe vor einigen Jahren damit begonnen, die J-Link-Adapter für ein Projekt zu verwenden, das sie bereits hatte und nicht zurückgeschaut hat. Ihre Tools sind alle plattformübergreifend und ihr eigenständiger Debugger Ozone ist erstaunlich. Ich hatte selten das Problem "mitten in der Debugging-Instabilität" mit OpenOCD und J-Link und hatte es noch nie mit Ozone.
Segger hat auch den netten Schritt unternommen, jedem integrierten Debugger ein kostenloses "Upgrade" für ein Entwicklungskit anzubieten, das den herstellerspezifischen Debugger in einen lizenzierten J-Link verwandelt. Dies ist natürlich, um Sie dazu zu bringen, ihre Werkzeuge auszuprobieren und zu verwenden, damit Sie sie für Ihre eigenen Boards kaufen können, aber es ist eine brillante Taktik. Mehr Infos hier für ST-Link folgen ihren „Models -> Andere J-Verbindungen“ Links für andere Anbieter. Sie haben auch Bildungsrabatte und J-Link "Lite" -Hardware, die sehr günstig ist (USD 50, glaube ich?) Und auf Cortex-Prozessorkerne beschränkt ist.
Jetzt ist Segger nicht der einzige Adapter von Drittanbietern: Es ist ein Open-Source-Debugger verfügbar, der speziell auf GDB abzielt. Es ist die Black Magic Probe. Sie verkaufen Hardware, haben aber auch vollständige Schaltpläne, Layouts und Software, die unter der GPL veröffentlicht wurden. Ich hatte noch keine Gelegenheit, diese zu verwenden, aber ich freue mich sehr, diesen Debugger auszuprobieren. Die Implementierung des GDB-Protokolls im Debugger sollte die Stabilität erheblich verbessern. Natürlich gibt es auch andere High-End-Systeme wie Lauterbach und die (inzwischen nicht mehr existierenden) Adapter Abatron BDI2000 und BDI3000. Die schickeren / teureren Tools sind normalerweise vernetzt, anstatt direkt mit dem Debugging-PC verbunden zu sein. Sie bieten (viel) schnellere JTAG-Schnittstellen und verfügen häufig auch über separate Trace-Ports, die Ihnen mit kompatiblen MCUs ein detailliertes Protokoll aller ausgeführten Befehle liefern. die Zeit, zu der es ausgeführt wurde, und der interne Prozessor gibt nach jedem Befehl an.
Sie können auch jederzeit Ihre eigenen implementieren. Ich habe meine eigenen SWD-Schnittstellen in Cypress 'PSoC5LP eingebettet, um ein bestimmtes Problem zu lösen, mit dem ich eine ganze Gerätekette über eine USB-Verbindung für die Herstellung programmieren konnte. Sie können auch einen parallelen Anschluss oder ein Paar GPIO-Leitungen verwenden, um die Signale herauszuwackeln. Es hängt alles davon ab, wonach Sie suchen.
J-Tagg
?