Ich habe hoch und tief gesucht (tatsächlich habe ich die letzten Monate hin und wieder damit verbracht, eine Antwort zu finden). Vielleicht stelle ich nicht die richtigen Fragen oder starre der Antwort ins Gesicht, ich bin mir nicht sicher. Ich war zu nervös, um zu fragen, aber ich bin mit meinem Latein am Ende, also los.
Ich erstelle ein Projekt, das aufgrund von Größenbeschränkungen sehr klein sein muss. Das bedeutet kleine MCU und kleine Programmierschnittstelle. Es ist auch Open Source, daher möchte ich die Programmierschnittstelle so günstig und einfach wie möglich halten (auch als Student möchte ich nicht viel ausgeben, wenn ich nicht muss).
Dieser Artikel, den ich gefunden habe, scheint mir die Möglichkeit einer universellen Lösung aufzuzeigen. Diese FTDI-Chips sind viel billiger als jeder andere (legitime) JTAG-Programmierer. Werden sie im Großen und Ganzen (für die Nachwelt) in der Lage sein, mit jeder ARM-MCU, die eine SWD-Schnittstelle enthält, zu kommunizieren und sie zu programmieren?
Insbesondere (falls relevant) möchte ich das SiP-Modul SiLabs BGM121 in mein Projekt integrieren und versuche herauszufinden, wie ich es programmieren würde. Ich interessiere mich an dieser Stelle nicht einmal unbedingt für das Debuggen, sondern versuche nur, eine billige Lösung zu finden. Auch zwischen dem SiLabs CP2102 und dem FTDI FT2232H, was funktioniert eher?
Die ARM-SWD-Schnittstelle ist insofern „generisch“, als das Schnittstellenprotokoll sich nicht um die Zielhardware kümmert. Angenommen, Ihr Programmiergerät arbeitet mit der richtigen Spannung, ja, es kann mit jeder Hardware funktionieren.
Hinter der SWD-Schnittstelle sind die Register, die das Debuggen im SoC steuern, speicherabgebildet. Obwohl diese in gewissem Sinne standardisiert sind, ist für jede Debug-Toolkette häufig ein gewisses Maß an Anpassung erforderlich (auf der Softwareseite). Beispielsweise wird eine neue CPU einen neuen ID-Code-Wert und möglicherweise einige zusätzliche architekturdefinierte Steuerregister haben.
Grundsätzlich haben Sie die Wahl, das SWD-Protokoll in Software auf Ihrem PC zu implementieren und eine USB-to-Pins-Schnittstelle zu verwenden oder das Protokoll in einem Mikrocontroller zu implementieren und einen USB-Endpunkt zu präsentieren, der „debuggt“. Letzteres tun fast alle Entwicklungsboards mit eingebauter Debug-Schnittstelle, ähnlich wie SWDAP und die DAPLink- Software. Häufig sind diese Entwicklungsboards so konfiguriert, dass Sie die SWD-Signale herausbrechen und zum Debuggen Ihrer eigenen Zielhardware in einem Endproduktdesign verwenden können.
Wenn Sie sich gegen die Implementierung von DAPLink entschieden haben, sind Sie möglicherweise in den Toolchains, die Ihre Schnittstelle unterstützen, eingeschränkter.
In der Vergangenheit war es schwierig, auf die SWD-Protokolldokumentation zuzugreifen, und dies scheint zu einer gewissen Verwirrung geführt zu haben, wenn es um generische Sonden geht. Die alten Pre-CoreSight-JTAG-Schnittstellen waren auch viel gerätespezifischer, mit einem in der CPU implementierten TAP-Controller.
Okay, nach mehr Recherche glaube ich, dass ich eine relativ billige Lösung gefunden habe, ein stm32-Entwicklungsboard kann mit DAPLINK-Firmware geflasht werden, aber ich glaube nicht, dass die offizielle Github-Firmware nativ funktionieren wird. Aber ich habe festgestellt, dass auf dem daplink_usb-Board, das im readbear mk20 enthalten ist, ein stm32-Chip läuft, sie haben die Firmware veröffentlicht, die eine Zeile ändern muss, um sie mit dem 8-MHz-Kristall kompatibel zu machen (detailliert im unten verlinkten Forumsbeitrag). Sonst den Quarz gegen einen 16 MHz tauschen.
Chris Stratton
David Schallock
Sean Houlihane
David Schallock
Sean Houlihane