Hi und schönen Sonntag! Mir sind ein paar Boards aus dem Schrott mit STM32F103 in die Hände gefallen und ich wollte ein wenig damit herumprobieren, quasi meine ersten STM32-Versuche... und habe natürlich auch gleich von den Dingern vor die Fresse bekommen. Die Boards/ICs wollen sich partout nicht flashen lassen, egal was ich versuche, ich bekomme keine Verbindung zum Target. Ich habe es mit mehreren (wahrscheinlich China-) STM32 V2 Debugger-Sticks probiert, mit und ohne angeschlossenen NRST-Pin... mehrere Firmware-Versionen in diesen Sticks. Jetzt kenne ich mich zu wenig mit STM32Fs aus, haben die Dinger eine Möglichkeit (wie eine Fuse z.B.) das Programmierinterface zu deaktivieren und wenn ja, kann man das irgendwie zurücksetzen, irgend einen harten chip erase machen, der den IC in den Werkszustand zurückversetzt? Bei den AVRs wüsste ich bescheid, aber leider nicht beim STM32F103 (Cortex-M3). Mir ist auch aufgefallen, daß wenn man "connect under reset" und "hardware reset" wählt, wird von diesen STM32 V2 Debuggern gar kein Reset ausgelöst (nur wenn man diesen NRST-Pin auf Masse legt, dann hört eine LED auf dem Board mit Blinken auf). Kann es sein, daß ein an diesem Pin angeschlossener Kondensator zu groß ist und "weg muss"? Falls das auf dem Board nichts wird, wie sieht die Minimalbeschaltung eines STM32F103 aus, damit man den an den Programmieradapter hängen und zumindest mal flashen kann? Müssen dafür alle Vdd/GND-Pins beschaltet werden oder reicht ein Päärchen aus? Welche Pins sind das Programmierinterface, stimmt NRST, PA13/PA14? Für ein paar Tips von jemandem, der von den Dingern Ahnung hat, wäre ich sehr dankbar.
Ben B. schrieb: > Programmierinterface zu > deaktivieren und wenn ja, kann man das irgendwie zurücksetzen, Boot0 auf high ziehen, dann startet der Controller im Bootloadermodus und die SWD-Pins haben genau die Funktion
Ben B. schrieb: > wie sieht die Minimalbeschaltung > eines STM32F103 aus, damit man den an den Programmieradapter hängen und > zumindest mal flashen kann? https://www.st.com/resource/en/application_note/an2586-getting-started-with-stm32f10xxx-hardware-development-stmicroelectronics.pdf Ben B. schrieb: > Müssen dafür alle Vdd/GND-Pins beschaltet > werden Ja!
Ben B. schrieb: > Mir sind ein paar Boards aus dem Schrott mit STM32F103 in die Hände > gefallen Welches? Stammen die aus einem Gerät, bei dem zuvor was auf den Controller geflasht wurde? Ben B. schrieb: > Jetzt kenne ich mich zu wenig mit STM32Fs aus, haben die Dinger eine > Möglichkeit (wie eine Fuse z.B.) das Programmierinterface zu > deaktivieren Nicht direkt. Die Firmware kann das Interface deaktivieren, dazu muss sie aber natürlich erst einmal laufen. Wenn man den Reset betätigt (nRST-Pin low), wird das Programmierinterface (SWD+JTAG) reaktiviert. Indem man also die SWD/JTAG-Verbindung aufbaut während der Reset betätigt ist, kann die Software das nicht verhindern. Über die Option Bytes kann man lediglich das Lesen/Schreiben des Flash verhindern, aber nicht das Verbinden per JTAG/SWD. Ben B. schrieb: > STM32 V2 Debugger-Sticks Ich denke mal du meinst den STLink V2? Ben B. schrieb: > daß wenn man "connect under reset" und > "hardware reset" wählt, wird von diesen STM32 V2 Debuggern gar kein > Reset ausgelöst Ja, die alten STLinks können das nicht (richtig). Ich glaube die neueren (STLink V3) sowie auch der Segger J-Link können das korrekt und dann funktioniert es meiner Erfahrung nach immer. Ben B. schrieb: > Falls das auf dem Board nichts wird, wie sieht die Minimalbeschaltung > eines STM32F103 aus, damit man den an den Programmieradapter hängen und > zumindest mal flashen kann? Es gibt jede Menge extrem billiger STM32-Boards ("Blue Pill" und andere). Zum Basteln lohnt es sich kaum ein eigenes zu bauen (finanziell sowieso nicht). Alle Pins korrekt zu beschalten, mit Kondensatoren zu versehen, Quarz anschließen ist fummelig genug dass man lieber fertig kaufen kann. Nur wenig teurer aber dafür direkt von ST, narrensicher und mit Funktionsgarantie sind die Nucleo-Boards: https://www.st.com/en/evaluation-tools/stm32-nucleo-boards.html Damit kann man problemlos ohne Fummelei loslegen. Mein persönlicher Favorit ist das NUCLEO-G031K8, extrem kompakt, super auf Lochraster lötbar, inklusive Debugger der nebenbei auch einen USB-Serialport implementiert, für ~10€. Da lohnt sich die Zeit kaum, irgendwelche alten STM32-Boards zu recyceln oder fragwürde Billigst-Boards zu kaufen.
> Welches? Kunden-Schrottboards. > Stammen die aus einem Gerät, bei dem zuvor > was auf den Controller geflasht wurde? Ja. > Es gibt jede Menge extrem billiger STM32-Boards ("Blue Pill" und > andere). Zum Basteln lohnt es sich kaum ein eigenes zu bauen > (finanziell sowieso nicht). Alle Pins korrekt zu beschalten, > mit Kondensatoren zu versehen, Quarz anschließen ist fummelig > genug dass man lieber fertig kaufen kann. Haben die Dinger keine interne Taktquelle (wie die AVRs), mit denen das Flashen nach chip erase möglich ist? Oder ist der chip erase nicht mehr möglich, wenn der interne Takt z.B. über diese option bytes deaktiviert wurde? Klar kann man mit ein wenig Geld alles "erschlagen", aber diese Boards sind bereits da und mich reizt es schon, damit herumzuspielen - bzw. wenns nicht geht, einen der STMs davon runterzupopeln (Heißluft usw. ist alles da), die nötige Minimalbeschaltung dranzufrickeln und den Käfer "nackig" auf dem Tisch zu betreiben - erstmal sehen ob da überhaupt irgendwas funktioniert. > Ich denke mal du meinst den STLink V2? Korrekt. Ich habs auch versucht, den NRST dauerhaft auf GND zu halten, aber auch dann bekomme ich auf diesen Boards keine Verbindung via SWD oder so.
:
Bearbeitet durch User
Ben B. schrieb: > Haben die Dinger keine interne Taktquelle (wie die AVRs), mit denen das > Flashen nach chip erase möglich ist? Doch, der HSI, mit dem Starten die immer automatisch. Ben B. schrieb: > Oder ist der chip erase nicht mehr > möglich, wenn der interne Takt z.B. über diese option bytes deaktiviert > wurde? Den kann nur die Firmware temporär deaktivieren, wenn externer Takt eingeschaltet wurde. Gilt aber nur bis zum Reset. Ben B. schrieb: > bzw. > wenns nicht geht, einen der STMs davon runterzupopeln (Heißluft usw. ist > alles da) Was für ein Aufwand für einen Pfennig-Artikel, bei dem nichtmal sicher ist, dass er nicht kaputt ist... Ben B. schrieb: > die nötige Minimalbeschaltung dranzufrickeln und den Käfer > "nackig" auf dem Tisch zu betreiben Ohne PCB?! Ben B. schrieb: > den NRST dauerhaft auf GND zu halten, aber auch > dann bekomme ich auf diesen Boards keine Verbindung via SWD oder so. Oft funktioniert es, per Button den Reset für einen kurzen Moment vor dem Verbinden zu betätigen. Das Timing muss man im Gespür haben... Oder eben einen Debugger nutzen der das automatisch macht.
:
Bearbeitet durch User
> Ohne PCB?! Yep. Bei den AVRs geht das und ja klar, ist keine Dauerlösung. Reiner Versuchsaufbau. > Was für ein Aufwand für einen Pfennig-Artikel... Bei Reichelt immerhin knapp drei Euro glaube ich. Und es sind mehrere da, zumindest die STM32 würde ich gerne recyclen. Macht aus finanzieller Sicht vielleicht keinen Sinn, aber wenn ich heute welche bestellen würde, sind auch erst Mittwoch da und schade um die bestückten ist es außerdem. Muss man ja nicht wegschmeißen wenn die noch gehen. > Was für ein Aufwand für einen Pfennig-Artikel, bei dem nichtmal > sicher ist, dass er nicht kaputt ist... Zumindest blinkt auf dem Board eine LED, er reagiert auf den Reset... ganz kaputt sein kann das nicht.
:
Bearbeitet durch User
Ben B. schrieb: > Bei Reichelt immerhin knapp drei Euro glaube ich. Das ist schon mehr als man für ein komplettes neues Board mit STM32 bezahlt... Die Bluepills gibt's mittlerweile sogar mit USB-C, hui! Ben B. schrieb: > Reiner Versuchsaufbau. Ich bin gespannt wie das mit den diversen Kondensatoren dran aussieht! Versuch es mal mit dem UART-Bootloader, vielleicht sind da die Erfolgschangen höher als mit dubiosen STLink-Fakes. Btw: Sicher dass an den SWD-Pins nicht noch irgendwas anderes dran hängt was die Signale blockiert? Mal mit dem Oszilloskop geprüft ob was an den IC-Pins ankommt? Gern auch das Timing mit dem nRST-Pin gegengeprüft?
:
Bearbeitet durch User
Niklas G. schrieb: > wird von diesen STM32 V2 Debuggern gar kein Reset ausgelöst > Ja, die alten STLinks können das nicht (richtig) Bei den ST-Link v2 Sticks ist der Reset-Ausgang auf der Pin-Reihe für STM8. Er hat bei STM32 keine Funktion. Die Fotos unter http://stefanfrings.de/stm32/stm32f1.html#stlink zeigen, wo man eine funktionierende Reset-Leitung abzweigen kann. Sebastian R. schrieb: > Boot0 auf high ziehen, dann startet der Controller im Bootloadermodus > und die SWD-Pins haben genau die Funktion Ist in der Regel die einfachste Lösung, um zu verhindern, dass ein Programm startet, welches die SWJ Schnittstelle lahm legt. > Ich habs auch versucht, den NRST dauerhaft auf GND zu halten Das geht bei AVR mit ISP Schnittstelle, aber nicht bei STM32 mit SWJ. Niklas G. schrieb: > Oft funktioniert es, per Button den Reset für einen kurzen Moment vor > dem Verbinden zu betätigen. Das Timing muss man im Gespür haben... Es gibt ein paar Youtube Videos, die die Prozedur vorführen. Hatte mir mal bei einem Board geholfen, wo der Boot0 Pin nicht einfach zugänglich war.
Du willst also einen STM32 unbekannter Herkunft mit unbekanntem Inhalt ohne jede Erfahrung damit in Freiluft-Verdrahtung betreiben? Ich weis nicht, ob ich so ein Vorhaben "mutig", "blauäugig" oder einfach nur "naiv" nennen soll. Auch, wenn du auf ein fertiges Board min. bis Mittwoch warten musst, bin ich dennoch ziemlich sicher, daß dieser Weg dich schneller ans Ziel führt.
:
Bearbeitet durch User
> Du willst also einen STM32 unbekannter Herkunft mit unbekanntem > Inhalt ohne jede Erfahrung damit in Freiluft-Verdrahtung betreiben? Ich will den erst einmal nur flashen können, alles andere kommt danach.
Ben B. schrieb: > Ich will den erst einmal nur flashen können, alles andere kommt danach. Das ändert nichts. Für jemand ohne jede Erfahrung mit diesen Bausteinen sind das erheblich zu viele Unbekannte in der Gleichung.
Für erste Versuche finde ich ebenfalls die Nucleo64 Boards besser. Da hat man erprobte Hardware, die deppensicher funktioniert. Den mitgelieferten Programmieradapter kann man später für andere Projekte mit verwenden oder gar abbrechen und einzeln verwenden.
Ben B. schrieb: > aber wenn ich heute welche bestellen > würde, sind auch erst Mittwoch da Wenn du in München bist, tausche STM32F103-Board gegen ein Paulaner 🍻 Und Nutzung meines J-Link gegen Nutzung eines Labor-Netzteils!
Wenn die China-STLink von der CubeIDE erkannt werden, funktionieren die i.d.R. auch problemlos.
Steve van de Grens schrieb: > Die Fotos unter > http://stefanfrings.de/stm32/stm32f1.html#stlink zeigen, wo man eine > funktionierende Reset-Leitung abzweigen kann. Sorry, das ist ein Irrtum. Die Fotos zeigen, wo man eine SWO Leitung abzweigen kann. Für den Reset gibt es keine solche Lösung.
Hier wird behauptet, man könne das NRST-Problem der ST-Link-Clones korrigieren: https://electronics.stackexchange.com/questions/475838/generic-st-link-v2-not-resetting-target Ich weiß nicht, ob das funktioniert, denn immer wenn ich das brauchte, war ich dann doch zu faul und habe einen Taster an NRST angeschlossen. Irgendwo las ich mal, daß bei den ST-Link-Clones der herausgeführte Reset der für STM8 statt für STM32 ist, kann die Seite aber nicht mehr finden.
:
Bearbeitet durch User
Zino schrieb: > Irgendwo las ich mal, daß bei den ST-Link-Clones der herausgeführte > Reset der für STM8 statt für STM32 ist. So ist es. Deswegen ist der Anschluss auch auf der oberen Stiftreihe für STM8 ist. Für STM32 ist die untere Stiftreihe. > Hier wird behauptet, man könne das NRST-Problem der ST-Link-Clones > korrigieren Ah, gut zu wissen. > immer wenn ich das brauchte, war ich dann doch zu faul und > habe einen Taster an NRST angeschlossen. Dito. Entwicklungs-Boards sollten sowieso einen Reset Taster haben. Bei meiner eigenen Software habe ich mir zudem angewöhnt, ganz am Programmanfang erst mal 1 Sekunde zu warten, bevor ich SWJ deaktiviere oder in einen Sleep Modus gehe. Dadurch wird das Zeitfenster größer, in dem man eine Verbindung aufbauen kann.
Ben B. schrieb: >> Ich denke mal du meinst den STLink V2? > Korrekt. Nimm mal besser einen V3miniE. Der macht das mit dem Reset richtig. https://www.reichelt.de/ch/de/in-circuit-debugger-programmierer-fuer-stm32-usb-c-stlink-v3minie-p330303.html?&nbc=1 fchk
Ich habe die Seite wiedergefunden. Hier wird gezeigt, wie man so einen ST-Link-V2-Clone für RESET und SWO umbaut: https://sudonull.com/post/20076-Completion-of-the-Chinese-ST-Link-v2-add-the-SWO-debug-information-output-interface-and-foot-reset
> Wenn du in München bist, tausche STM32F103-Board gegen > ein Paulaner 🍻 Und Nutzung meines J-Link gegen Nutzung > eines Labor-Netzteils! Unglücklicherweise hätte ich nur eine Berliner Weiße anbieten können, kein Münchener Paulaner. Die Freiverdrahtung auf dem Tisch war leider nicht so gut. Hätte fast geklappt, aber es ist wirklich verdammt schwer, so viele dünne Kabel an den STM dran zu bekommen. Bliebe nur Einsetzen in einen Testsockel oder Auflöten auf eine Adapterplatine... und keine Ahnung, wie oft die so eine Prozedur mitmacht. Taster an NRST löst zwar zuverlässig einen Reset aus, aber ich habe es nicht geschafft, Zugriff auf den Controller zu bekommen. Das STM-Flashtool wartet auch nicht besonders lange, sondern den Fehler bekommt man ziemlich sofort, also macht der wohl nur einen oder sehr wenige Versuche und wartet nicht, bis es klappt. Mit der CubeIDE genau so wenig Erfolg, absolut gleiches Verhalten. > V3miniE Sollte man wahrscheinlich wirklich einplanen. Was mich nun noch interessieren würde, kann ich den STM32 durch diesen Boot0-Pin oder wie der heißt zuverlässig im Bootloader festnageln, so daß die geflashte Software nicht gestartet wird? Vielleicht ist dann immerhin ein chip erase möglich und der sollte das Problem mit evtl. abgeschaltetem Programmierinterface beheben können.
Ben B. schrieb: > Was mich nun noch interessieren würde, kann ich den STM32 durch diesen > Boot0-Pin oder wie der heißt zuverlässig im Bootloader festnageln, so > daß die geflashte Software nicht gestartet wird? Ja, und das wurde dir hier bereits 2x geschrieben. Hast du sicher gestellt, dass die Beschaltung des Mikrocontrollers durch das Board nicht stört? Stromversorgung weglassen (nur den µC versorgen) reicht nur selten.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.