Segger J-Link gegen JTAG Programmer?

10

Ich habe mich nicht mit einem ARM entwickelt und bin ein wenig verwirrt über den Programmierer.

Ich habe mit PICs und 8051s codiert und beide verwenden Lader, die vom Hersteller stammen. Keine Verwirrung.

Aber ARMs sind etwas anders, da die Kerne meistens gleich sind?

Müssen Sie einen Segger "J-Link" JTAG-Programmierer kaufen, um ARMs zu programmieren? Ich sehe, dass die professionellen Segger-Lader mehrere hundert Dollar kosten. Scheint ein wenig hart ...

Ich sehe, ST macht einen JTAG-Programmierer zum "ST-Link" für viel weniger als den "J-Link" - was gibt es?

Was ist mit den Ladern für ARM Cortex M los? Sind die Ladewerkzeuge von ARM-MCU-Herstellern gesperrt, um nur mit ihren MCUs zu arbeiten?

Kann der ST-Link einen anderen ARM Cortex M programmieren, wenn Sie ihn richtig fixiert haben?

Ich versuche letztendlich einen kompatiblen Lader für einen ARM Cortex M3 zu haben, dessen Hersteller keinen Lader herstellt ...

Leroy105
quelle
Was ist J-Tagg?
Eugene Sh.
Korrigiert. Das war mein erster Durchgang. ;)
Leroy105
Nun ... J-Link ist ein JTAG-Programmierer. Sie haben nur verschiedene limitierte Editionen, die verschiedene Geräte unterstützen (jedes Gerät hat eine andere JTAG-Sequenz, um bestimmte Aufgaben auszuführen)
Eugene Sh.
Was ist der Lader? und vor allem eine kompatible. Hier ist eine: deere.com/assets/images/common/products/wheel-loaders/…
P__J__

Antworten:

12

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.

Akohlsmith
quelle
1
Haben Sie die Black Magic-Sonde ausprobieren können? Gibt es hier etwas hinzuzufügen?
cp.engr
3

Wurde diese Frage nicht gerade gestellt?

ARM stellt die Kerne her, die Kerne haben eine SWD-Schnittstelle, die jetzt offen dokumentiert ist, und es gibt viele Lösungen. Ja, Sie können einen stlink verwenden, um mit anderen Chips als dem stm32 zu kommunizieren. Ebenso drückt der eine Arm, kann sich nicht an seinen Namen erinnern, der auf den neueren Ti-Launchpads zu finden ist, zum Beispiel auf den msp432-Boards, von denen ich denke, dass sie einen haben. Und Sie können J-Link-Klone bei ebay für ein paar Dollar bekommen, die gut funktionieren. Sie können in openocd gehen und auf dem parallelen Backend implementieren, was immer Sie wollen, können durch ein als gpio verwendetes ftdi-Gerät etwas bang sagen, langsam, aber funktioniert einwandfrei. sowie einige Leute haben einfach swd-Tools mit verschiedenen Boards, mcus usw. implementiert.

Insbesondere einige Anbieter, NXP und ST, verfügen weiterhin über einen UART-basierten Bootloader, der völlig unabhängig von Arm und der SWD-Schnittstelle zum Armkern ist. Diese Bootloader sind einfache Protokolle, mit denen Sie Ihr eigenes Tool in einer halben Stunde über einen USB-Stick herausholen können auf Ihrem Entwicklungscomputer (ftdi usw.) starten oder es gibt viele bereits geschriebene. atmel hat samba leider aufgegeben, sie bieten eine an, die man auf die samd-teile herunterladen kann, aber man muss dafür verantwortlich sein, sie nicht zu löschen, und dieser teil ist super einfach, den blitz zu löschen, störend einfach. Das ist ein kleiner Fehler für eine Schnittstelle wie die anderen Anbieter, auf die Sie sich früher verlassen konnten.

Grundsätzlich stehen zu viele Optionen zur Auswahl, wenn Sie es aus dieser Perspektive betrachten möchten. Ganz zu schweigen davon, wenn Sie ein Entwicklungsboard vom Chiphersteller kaufen und dessen Software herunterladen, wird erwartet, dass es nur mit einem Mausklick oder wenigen funktioniert.

Oldtimer
quelle
Ich habe mich gefragt, ob Sie vielleicht bereit sind, "Ihr eigenes Tool in einer halben Stunde herauszuschlagen" und es mit detaillierten Anweisungen (detailliert genug für einen 12-jährigen Anfänger, um es zu befolgen) an GitHub zu senden Beispiele. Ich denke das wäre wirklich hilfreich. Wenn Sie dazu bereit sind, bedanken Sie sich im Voraus. Es wäre eine gute Lernerfahrung für mich, Ihren Code zu lesen.
Gabriel Staples
Wenn diese Frage nur an anderer Stelle gestellt wurde, wäre es hilfreich, einen Link dazu zu veröffentlichen, um Threads über Querverbindungen miteinander zu verknüpfen.
Gabriel Staples
Sicher, aber das OP hat es nicht geschafft, nach einer Antwort zu suchen, bevor es hierher kam, anstatt zu versuchen, diese als Duplikat zu schließen, und zusätzliche Informationen hinzuzufügen.
old_timer
1
Zumindest wäre ein Link zu Ihrem GitHub-Konto hilfreich. Wenn Sie auch andere Links zur Verfügung haben, sehe ich keine Probleme damit, sie hier abzulegen. Wenn Sie dies nicht tun, kein Problem, kann ich Referenzhandbücher, Anwendungshinweise, Datenblätter, Blogs und GitHub-Code sowie den nächsten Experten oder Problemlöser googeln und lesen, aber jeder Experte weiß, dass dies eine Menge wertvoller Zeit kostet, die jemand anderes benötigt könnte ihnen helfen, mit ein wenig Anleitung zu sparen, um den Prozess zu beschleunigen.
Gabriel Staples
1
@ Gabriel Staples, weißt du was lustig ist? Ich arbeite an einem TI CC1130, der auch JTAG verwendet. Ich habe mich ein bisschen mehr damit beschäftigt, und ehrlich gesagt würde ich sagen, dass der eigentliche Grund, warum Leute Segger kaufen, darin besteht, dass Segger seine Treiber auf fast allen ARM-IDEs für alle Anbieter hat. ST-LINK für 25 US-Dollar könnte vielleicht funktionieren, aber die Realität ist, dass TI keinen Treiber dafür in seiner IDE hat. Sie haben den Treiber bereit für Segger ... Zu sagen, dass ein ST-Link mit jedem ARM kommunizieren kann, ist nicht ganz richtig, wenn es auf anderen Plattformen keine Treiberunterstützung gibt.
Leroy105