SWDAP vs. CMSIS-DAP vs. DAPLink

BEARBEITEN:
Ich habe die grundlegenden Fragen (z. B. was ist CMSIS-DAP?) Beantwortet von Benutzer @Nipo. Auf dieser Grundlage habe ich meinen Beitrag logischer umstrukturiert. Hoffentlich werden auch die restlichen Fragen beantwortet :-)

 

1. Programmierung eines Mikrocontrollers

Um einen Mikrocontroller zu programmieren und/oder zu debuggen, ist die folgende Vorgehensweise üblich:

Geben Sie hier die Bildbeschreibung ein

Es gibt unzählige verschiedene Sonden auf dem Markt. Die Kommunikation zwischen Sonde und Mikrocontroller ist in den Protokollen SWDund standardisiert JTAG. Die Kommunikation zwischen Sonde und Leitrechner ist leider nicht standardisiert. Das macht die Arbeit von OpenOCD sehr schwierig. Diese Software, die auf dem Hostcomputer ausgeführt wird, versucht, eine Verbindung zur Sonde herzustellen. Stellen Sie sich vor, wie viel Arbeit die OpenOCD-Leute haben, um sie alle zu unterstützen!
ARM bemüht sich, diese USB-Kommunikation zwischen der Sonde und dem Host-Computer zu standardisieren.

 

2. Der CMSIS-DAP-Standard

CMSIS-DAPist die Spezifikation (oder Standard oder Protokoll oder ...) von ARM, die definiert, wie ein Programmierer/Debug-Probe aufgebaut werden soll. Nach meinem Verständnis spezifiziert es einige Hardware-Aspekte sowie das Kommunikationsprotokoll zwischen dem Host-Computer und der Sonde (1) .

FRAGE 1:
Wo ist die offizielle CMSIS-DAPSpezifikation zu finden? Ich weiß, dass der GitHub von CMSIS-DAPdurch einen neuen GitHub von ersetzt wird DAPLink. Aber vergessen wir nicht: DAPLinkist lediglich eine Implementierung des Standards. Ich weiß nicht, wo ich den Standard selbst finden kann ...

ANTWORT:
Benutzer @Nipo hat die Links gepostet:

 
(1) Ich glaube, dass die Kommunikation zwischen der Sonde und dem Host-Computer durch dieses CMSIS-DAPProtokoll definiert wird, aber nicht die Kommunikation zwischen der Sonde und dem Mikrocontroller, da diese bereits entweder durch das JTAGoder SWD-Protokoll definiert ist.

 

3. Die SWDAP-Sonde und DAPLink

Die SWDAPSonde ist eine Hardwareimplementierung und DAPLinkeine Firmwareimplementierung der CMSIS-DAPSpezifikation. Offensichtlich DAPLinkläuft die Firmware auf der SWDAPHardware.

Ich liste die SWDAPRessourcen für Sie auf:

Geben Sie hier die Bildbeschreibung ein

Und die DAPLinkRessourcen:

 
FRAGE 2:
Die SWDAPProbe führt die DAPLinkFirmware aus, also sollte sie sowohl SWDals auch unterstützen JTAG. Aber Herr Gorazd Kovacic von LTek hat mir in einer Mail geantwortet, dass die SWDAPSonde nur unterstützt SWD. Ich glaube, er liegt falsch. Was denken Sie?
Hinweis: Ich kann es erst nächste Woche testen, wenn die richtige Hardware eintrifft.

ANTWORT:
Benutzer @Nipo sagt: „Alle Sonden, die die DAPLink-Implementierung als Kernfirmware verwenden, bieten denselben Funktionssatz.“ Die einzige Einschränkung liegt also in der Hardware. Wenn der Hardwarehersteller nicht die richtigen JTAG-Verbindungen bereitgestellt hat, haben Sie Pech.

 

4. Verwenden von OpenOCD für die SWDAP-Sonde

Ich weiß, dass die Sonde für die Verwendung mit pyOCDSWDAP gebaut wurde . Das bringt uns zu meiner dritten Frage:

 
FRAGE 3:
Kann die SWDAPSonde (und die Sonde) auch mit OpenOCDCMSIS-DAP verwendet werden ? Oder nur mit pyOCD ?  ANTWORT: Ich habe eine Mail von der Mailingliste der OpenOCD-Entwickler erhalten, um diese Frage zu beantworten. Herr Paul Fertser erwähnte die Konfigurationsdatei, die sich im Ordner befindet. Ich werde es nächste Woche testen, wenn meine Hardware ankommt.
 

cmsis-dap.cfgopenocd/scripts/interface/

 

5. Die mysteriöse CMSIS-DAP-Sonde

Die CMSIS-DAPSonde von LTek ( https://l-tek.si/web-shop/cmsis-dap-debug-probe ) ist mir immer noch ein Rätsel. Da CMSIS-DAPes sich nur um einen Standard handelt (oder nennen Sie es "Spezifikation" oder "Protokoll"), ist der Name der Sonde etwas verwirrend. Daher sollte es CMSIS-DAPstattdessen -compliant probe genannt werden.

Geben Sie hier die Bildbeschreibung ein

Damit kommen wir zur letzten Frage:

 
FRAGE 4:
Ich verstehe immer noch nicht, wie sich diese Sonde von der SWDAPSonde unterscheidet. Sie stammen beide vom selben Anbieter LTek und scheinen beide von ARM entwickelt worden zu sein.

ANTWORT:
Anscheinend ist diese Sonde nur eine Art Klon der SWDAPSonde, entspricht also dem CMSIS-DAPStandard. Der Name dieser Sonde ist nur etwas irreführend.

Beachten Sie, dass einige der veröffentlichten CMSIS-DAP-Implementierungen (insbesondere die portableren) im Vergleich zu anderen Lösungen sehr langsam sind. Abgesehen von der CMSIS-DAP-Idee unterstützen die meisten einfachen Debug-Adapter nicht, dass die Betriebsspannung des Ziels mehr als einen Diodenabfall von der des Adapters entfernt ist. Im Idealfall zahlen Sie beim Kauf eines "besseren" Adapters für eine schnellere Kommunikationslösung und Spannungsflexibilität; aber bei manchen Produkten, die namenlos bleiben sollen, zahlen Sie viel für den Namen eines Unternehmens und manchmal absichtlich hinzugefügte Probleme .

Antworten (2)

CMSIS ist der generische Name für die von ARM spezifizierte Infrastruktur rund um Cortex-Prozessoren. Das Projekt, das wir heute als DAPLink kennen , begann eigentlich als mbedmicro/CMSIS-DAP , wir können mehrere Hinweise auf die Umbenennung in der Projekthistorie finden. Der Name „CMSIS-DAP“ wurde mehrdeutig, da es sowohl der Name für die Spezifikation als auch für die Implementierung von Mbed war.

Heute ist also CMSIS-DAP das Protokoll, DAPLink ist eine Implementierung dieses Protokolls.

CMSIS-DAP ist nicht das effizienteste Debugger-Protokoll in der JTAG/SWD-Welt, aber erledigt die Arbeit mit (sehr) vernünftigen Rechenressourcen auf der Sondenseite (dh Einstiegs-MCUs mit USB können es ausführen, wie billige LPC11s). CMSIS-DAP wird von OpenOCD und vielen anderen Tools auf der Hostseite unterstützt.

CMSIS-DAP spezifiziert sowohl JTAG- als auch SWD-Befehle, DAPLink bietet Unterstützung für beide.

Da es sich bei DAPLink um eine Implementierung mit freizügiger Lizenz handelt, kann es grundsätzlich ohne Mehrkosten überall eingesetzt werden. Viele verschiedene Anbieter erstellen Boards mit DAPLink-Firmware darauf, entweder allein (wodurch eine eigenständige Sonde wie Sie verlinkt wird) oder zusammen mit einer Ziel-CPU (wie wir sie auf Devboards haben). Alle Hardwareimplementierungen von DAPLink betten dieselbe Firmware mit denselben Funktionen ein, und Sie sollten in der Lage sein, DAPLink neu zu erstellen und bei Bedarf zu aktualisieren.

Update nach Änderungen von OP

CMSIS-DAP ist im entsprechenden Dokument auf der ARM-Softwareseite definiert . Alle Details finden Sie im Abschnitt Referenzen .

LTek kann seine Boards benennen, wie sie wollen, auch wenn der Name etwas irreführend ist.

Wie ich oben geschrieben habe, bieten alle Sonden, die die DAPLink-Implementierung als Kernfirmware verwenden, dieselben Funktionen.

Was die SWD/JTAG-Unterstützung betrifft, ist die einzige Einschränkung, die Sie möglicherweise auf einigen Boards haben, die Hardware: Wenn die Hersteller keine Anschlüsse für TDI und TDO bereitstellen, haben Sie Pech, JTAG damit zum Laufen zu bringen.

Über die SWDAP-Sonde heißt es auf der eigenen Seite von ARM : „Das SWDAP ist ein offenes Hardware-Design, das als Teil des mbed-HDK geliefert wird“, weshalb LTek in der Lage ist, einen wörtlichen Klon bereitzustellen.

Hallo @Nipo, vielen Dank. Ihre Antwort hat wesentlich dazu beigetragen, einen Einblick in die von ARM verwendete Terminologie zu erhalten. Allerdings sind noch einige Dinge unklar. Ich habe meinen ursprünglichen Beitrag umstrukturiert und die unklaren Dinge in 4 Fragen aufgelistet. Bitte schauen Sie sie sich an. Ich wäre sehr dankbar :-)

DAPLink gibt an, dass es das CMSIS-DAP-Protokoll verwendet, das von OpenOCD unterstützt wird

CMSIS-DAP ist, wie der Name schon sagt, ein Protokoll und eine Firmware, die von ARM entwickelt wurden – dem Unternehmen, das die Prozessorkerne entwickelt. Die Firmware selbst unterstützt sowohl SWD als auch JTAG. http://www.keil.com/pack/doc/cmsis/DAP/html/index.html?_ga=2.84588765.557139549.1541455299-619225292.1541455299

Gemessen an der PCB-Kennzeichnung ( "ARM University" ) ist die CMSIS-DAP-Sonde eine Referenzimplementierung von ARM oder deren Tochterunternehmen.