Kann ich mit ST-Link alle Arten von SWD-programmierbaren Chips (ARM-MCUs) programmieren?
Kann ich mit ST-Link alle Arten von SWD-programmierbaren Chips (ARM-MCUs) programmieren?
Antworten:
Sie können den st-Link auch flashen und in eine Black Magic Probe konvertieren . Das gleiche Bild wandelt auch eine blaue Pille in ein BMP um.
Ich habe beides getan. Die Blaue Pille hat den Vorteil, dass die USB-RS232-Brücke, die der BMP exportiert, leicht verfügbar ist.
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, SAM4S, SAM4S, SAM4S, SAM4S
Nordic nRF51, nRF52 (Deshalb benutze 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, ein blaues Pillen-5er-Pack von Amazon wurde für weniger als 20 US-Dollar ausgeliefert).
Zur vorhandenen Antwort hinzufügen; Es ist bekannt, dass einige Chips mit ST-LINK und OpenOCD nicht richtig funktionieren.
Insbesondere wenn Ihr Ziel aus der Atmel SAMD21-MCU-Familie stammt, treten wahrscheinlich seltsame Probleme auf, bei denen der Prozessor erkannt wird. Versuche, Flash-Sektoren zu löschen, schlagen jedoch mit einem Fehler fehl.
Der Grund ist eher involviert , um zu zitieren:
AFAIK das Problem ist in Halbwort (16-Bit) in NVMCTRL-> CTRLA-Register schreiben. STLink implementiert keinen Halbwortspeicherzugriff 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 falsches Schlüsselwort wurden / wurden in das NVM-Befehlsregister geschrieben."
Die Problemumgehung umfasst das Neukompilieren von OpenOCD mit Code-Patches. 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 mit SAMD einwandfrei funktioniert und auch mit STM32 und anderen Cortex-M funktionieren sollte Chips.
Ja, ich glaube, das ist möglich, 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
Als Beispiel 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 umkehrbar. Wenn Sie also Ihr ST-Link-Gerät wieder in seiner ursprünglichen Form wiederherstellen möchten, können Sie dies tun.
Es gibt jedoch mehrere Versionen von ST-Link. Schauen 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
Ja es ist möglich. Ich verwende stlink v2 (Original- sowie chinesische USB-Stick-Klone) mit Coocox IDE. Coocox hat auch eine eigenständige Programmierer-App - CoFlash , mit der viele Chips programmiert werden können. Ich habe Erfahrung mit nur 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, andernfalls konnte der Chip nicht programmiert werden, also habe ich Pin 19 (3,3 Vcc) direkt angeschlossen. an Pin 1 an 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 stellen Sie eine Verbindung zu: 2000 in gdb her oder laden Sie Binärdateien direkt mit "blackmagic_stlinkv2". Dies funktioniert mit allen Zielen, die BMP kennt. V3 lehnt jedoch aktiv die Arbeit an Nicht-ST-Zielen ab, während es V2 egal ist.