Kann ich den ST-Link-Programmierer für Nicht-ST-Chips verwenden?

Kann ich alle Arten von SWD-programmierbaren Chips (ARM-MCUs) mit ST-Link programmieren?

„Der ST-LINK/V2 ist ein In-Circuit-Debugger und Programmierer für die Mikrocontroller-Familien STM8 und STM32.“ Ich glaube nicht, dass Sie das sofort können, aber es sollte theoretisch erreichbar sein. Jemand hat es geschafft, es hier mit einer LPC-MCU zu verbinden: lpcware.com/content/forum/…
Vielleicht in einigen Fällen, wenn Sie etwas wie openocd anstelle der ST-Software verwenden. Wenn Sie auf Schwierigkeiten stoßen, gibt es Open-Source-CMSIS-DAP-Implementierungen, auf die Sie flashen könnten, die universeller sind, indem Sie der Host-Software eine feinere Kontrolle über die Details geben.
Das ist nicht das, was Sie gefragt haben, aber es gibt auch Debugger, die mehrere Ziele abdecken, z. B. die PE-Mikro-Debugger.
Ich verwende ST-Link, um lpc1549 zu programmieren, es funktioniert.
Ja, der ST-Link kann auf verschiedenen Cortex-M-basierten Chips anderer Marken verwendet werden.

Antworten (5)

Sie könnten auch den st-link flashen und ihn in eine Black Magic Probe konvertieren . Dasselbe Bild konvertiert auch eine blaue Pille in ein BMP.

Ich habe beides gemacht. Die Blue Pill hat den Vorteil, dass die usb-rs232-Brücke die BMP-Exporte problemlos zur Verfügung stellt.

Das BMP unterstützt eine Reihe von Chips, einschließlich, aber nicht beschränkt auf:
ST Microelectronics STM32F0, STM32F1, STM32F3, STM32F2, STM32F4, STM32F7, STM32L0, STM32L1, STM32L4
Atmel SAM3N, SAM3X, SAM3S, SAM3U, SAM4S, SAM4L, SAM D20, D21
Nordic nRF51, nRF52 (Deshalb verwende ich das BMP)

Das BMP ist Open Source, kann für kommerzielle Programmierung verwendet werden und die Hardware kann billig sein (das "echte" BMP kostet etwa 60 US-Dollar, eine 5er-Packung mit blauen Pillen von Amazon kostete weniger als 20 US-Dollar).

Um die vorhandene Antwort zu ergänzen; Es ist bekannt, dass einige Chips mit ST-LINK und OpenOCD nicht richtig funktionieren.

Insbesondere wenn Ihr Ziel aus der MCU-Familie SAMD21 von Atmel stammt, werden Sie wahrscheinlich auf seltsame Probleme stoßen, bei denen der Prozessor erkannt wird, aber alle Versuche, Flash-Sektoren zu löschen, mit einem Fehler fehlschlagen.

Der Grund ist ziemlich kompliziert , um zu zitieren:

AFAIK, das Problem liegt im Halbwort (16-Bit)-Schreiben in das NVMCTRL-> CTRLA-Register. STLink implementiert keinen Halbwort-Speicherzugriff und OpenOCD emuliert als Zwei-Byte-Operationen. Leider besteht das CTRLA-Register aus Schlüssel und Befehl und muss atomar geschrieben werden. Wenn STLink zwei Bytes schreibt, setzt der NVM-Controller das PROGE-Bit in STATUS: „Ein ungültiger Befehl und/oder ein ungültiges Schlüsselwort wurde/wurden in das NVM-Befehlsregister geschrieben“

Die Problemumgehung besteht darin, OpenOCD mit Code-Patches neu zu kompilieren. Kein Spaß.

Wenn es Ihnen jedoch nichts ausmacht, Ihren ST-Link (über einen anderen ST-Link) zu flashen, können Sie ihn in einen CMSIS-DAP-Adapter konvertieren, der problemlos mit dem SAMD funktioniert und auch mit STM32 und anderen Cortex-M funktionieren sollte Chips.

Ja, ich glaube, dass dies möglich ist, obwohl ich es nicht ausprobiert habe. Sie würden wahrscheinlich gegen die ST-Lizenzvereinbarung verstoßen, wenn Sie versuchen würden, andere Geräte als die von ST zu programmieren

Beispielsweise unterstützt Segger (einer der Marktführer bei Debuggern und Programmierern) die Konvertierung Ihres ST-Link in J-Link (im Wesentlichen das Überschreiben des ST-Link-Chips mit dem Segger-Code). Dies ist auch reversibel. Wenn Sie also Ihr ST-Link-Gerät wieder in seine ursprüngliche Form zurückversetzen möchten, können Sie dies tun.

Es gibt jedoch mehrere Versionen von ST-Link. Sehen Sie sich die folgenden Links an, die weitere Informationen und eine Anleitung dazu enthalten.

https://www.segger.com/jlink-st-link.html
https://www.segger.com/jlink-ob.html

Ich habe den Stlink-Header auf Nucleo- und Discovery-Boards auf den meisten großen Cortex-M-Marken verwendet ... und die, bei denen ich ihn nicht zum Laufen bringen konnte, waren Probleme, bei denen openocd konfiguriert wurde, nicht der Stlink.
Das Flashen eines ST-Link auf einen J-Link funktioniert (und ist legal) nur auf einem Nucleo- oder Discovery-Board und nur zur Verwendung mit der Ziel-MCU. Lesen Sie die Seggar-Lizenzbedingungen, sie sind ziemlich restriktiv. Soweit ich weiß, funktioniert der Seggar-Flasher nicht einmal auf einem eigenständigen ST-Link.

Ja es ist möglich. ich verwende stlink v2 (Original sowie chinesische USB-Stick-Klone) mit Coocox IDE. Coocox hat auch eine eigenständige Programmier-App - CoFlash , mit der viele Chips programmiert werden können. Ich habe nur Erfahrung mit zwei Serien: LPC176x und LPC175x, über SWD-Schnittstelle. Und ich habe keine Probleme mit diesen Chips. Ich habe auch keine spezifischen Änderungen oder Aktualisierungen für die Programmierer vorgenommen (außer dass die ursprüngliche st-Verbindung den Hochspannungspegel bei TVCC (PIN1) erforderte, sonst war es nicht möglich, den Chip zu programmieren, also habe ich Pin 19 (3,3 VCC) direkt angeschlossen) an Pin 1 auf stlink v2).

Ein STLink V2/V2.1 oder V3 mit aktueller Firmware kann auch mit der PC-gehosteten Blackmagic pc-stlinkv2-Plattform verwendet werden. Kompilieren Sie mit "make PROBE_HOST=pc-stlinkv2", starten Sie den Debug-Server mit "blackmagic_stlinkv2" und verbinden Sie sich mit :2000 in gdb oder laden Sie Binaries direkt mit "blackmagic_stlinkv2 ". Dies funktioniert mit allen Zielen, die BMP kennt. V3 verweigert jedoch aktiv die Arbeit an Nicht-ST-Zielen, während V2 sich nicht darum kümmert.