Habe hier ein mit einem unbekannten Programm geladenes STM32F4 Discovery Board, das sich übrigens noch geringfügig in der Bezeichnung unterscheidet. Meines ist ein MB997D und es steht explizit STM32F407G-DISC1 drauf. Auf dem fremden steht: MB997C und keine weitere Beschriftung. Ist irgendwo die Größe des zuletzt programmierten Flashbereiches hinterlegt? Noch zwei Zusatzfragen: Auf dem Board fehlt die LD_BICOLOR_CMS (LD1). Offenbar ausgelötet. Weiß jemand Bezugsquelle? Ebenso ist C49 (4.7µF?) entfernt (?).
:
Bearbeitet durch User
Christoph K. schrieb: > Ist irgendwo die Größe des zuletzt programmierten Flashbereiches > hinterlegt? Nö. Kannst ihn nur komplett auslesen. Wenn du Glück hast, ist der Bereich nach dem Program 0xFFFF, aber normalerweise wird ja immer nur seitenweise gelöscht, es kann also danach noch weiterer Müll älterer Programme stehen.
Dieses in Frage stehende fremde Board steckt in einer größeren Schaltung und die ST-LINK/DISCOVERY Jumper sind abgezogen. D.h. Es meldet sich auch nicht über USB an meinem Rechner an. Die Frage ist, ob ich es trotzdem auslesen kann, wenn ich einfach die Jumper stecke. Wie würde ich es sonst auslesen können?
MB997C und MB997D unterscheiden sich in der STLink V2 Version.
Uwe Bonnes schrieb: > MB997C und MB997D unterscheiden sich in der STLink V2 Version. 1. was ist der (wesentliche) Unterschied? 2. gibt es evtl. einen Firmware Upgrade?
Habe jetzt mal das MB997C (STM32F407-Discovery) herausgenommen aus der Schaltung und habe es über USB an meinen MacbookPro (mit Windows 10 Parallels VM) und es verhält sich anders als das neuere. Das Board wird nicht als USB-Device erkannt. Sollte doch, oder?
Christoph K. schrieb: > 1. was ist der (wesentliche) Unterschied? Guckst Du hier: https://www.st.com/en/evaluation-tools/stm32f4discovery.html# ... im Abschnitt "Schematics". Dort pickst Du Dir Dein D-Board raus und schaust Dir das Schema an. Im leuchtend gelb markierten Kästchen rechts unten stehen die Unterschiede zwischen den Boards netterweise hervorgehoben. Dort steht zu lesen: -------------------
1 | Rev D.1 --> PCB label MB997 D-01, silkscreen modified for mbed-enabled, STM32F103C8T6 replaced by STM32F103CBT6 |
2 | Rev C.1 --> PCB label MB997 C-01, R31 not Fitted, PDR_ON of STM32F4 replaced by VSS Replace LIS302DL by LIS3DSH (U5) |
3 | Rev B.2 --> PCB label MB997 B-02, R27 Not Fitted, R28 Fitted |
4 | Rev B.1 --> PCB label MB997 B-01 |
------------------- Wenn Du Dir also den Chip in der ST-Link Sektion Deiner Boards einmal ganz genau anschaust, so sollten die sich voneinander unterscheiden: Die D-Version hat den STM32F103CBT6 und die C-Version hat den STM32F103C8T6 drauf. Beide Chips sind Variationen des STM32F103. Die Unterschiede finden sich hier beschrieben: https://www.st.com/content/st_com/en/search.html#q=stm32f103-t=products-page=1 Direkt ins Auge sticht: Der CBT6 hat 128kB Flash, der C8T6 nur 64kB Flash. Einen noch genaueren Vergleich der beiden MC's liefert der Product Selector von ST: https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html#products Allerdings fiel mir außer dem schon genannten Unterschied in der Flash-Größe nur auf, dass es die CB-Version in 2 Gehäusearten gibt, die C8-Version nur in einer Gehäuseversion. Aber das dürfte hier egal sein. > 2. gibt es evtl. einen Firmware Upgrade? Im User Manual UM1472 der C-Version des Discovery Boards steht: "It is based on an STM32F407VGT6 and includes an ST-LINK/V2 embedded debug tool interface" Im User Manual UM1472 der D-Version des Discovery Boards steht: "Based on STM32F407VG, it includes an ST-LINK/V2-A embedded debug tool" Will sagen: das C-Board hat einen ST-LINK/V2 drauf und das D-Board einen ST-LINK/V2-A. Ein Firmware-Update wird Dir vermutlich die neueste ST-Link-Software draufbügeln (so jedenfalls meine ganz grauen Erinnerungen von vor ca. 3-4 Jahren). Diese Software findest Du auf der schon weiter oben erwähnten Seite in der Rubrik "Tools & Software": https://www.st.com/en/evaluation-tools/stm32f4discovery.html Dort scheint das Paket "STSW-LINK009" Dein Freund zu sein. Es passt für: "ST-LINK, ST-LINK/V2, ST-LINK/V2-1". Dein ST-LINK/V2-A ist nicht dabei, aber ich glaube, die haben sich nur mit den Bezeichnungen vertan: mit dem "ST-LINK/V2-A" ist vermutlich das "ST-LINK/V2-1" gemeint. Abschließend noch mein Tipp: Zu "meiner Zeit" (= vor ca. 3 Jahren) war die ST-LINK - Software schon ganz nett, war aber der J-Link Software von Segger völlig unterlegen (vor allem in Punkte Flash-Geschwindigkeit und Debugging-Möglichkeiten). Ich hatte daher meinen ST-Link in einen J-Link umgeflashed (das ist sogar reversibel): https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/ Und ich bin seinerzeit von meiner angestaubten emIDE auf das Segger Embedded Studio umgestiegen. Ob das allerdings immer noch der letzte Schrei ist, wo ST ja inzwischen Atollic Studio gekauft hat und zudem noch STMStudio pflegt, weiß ich nicht - in 3-4 Jahren kann sich viel tun (ich lese gerade, dass ST jetzt "STM32CubeIDE" als Atollic Studio Nachfolger gesetzt hat.) Viele Grüße Igel1
Andreas S. schrieb: > Ob das allerdings immer noch der letzte > Schrei ist, wo ST ja inzwischen Atollic Studio gekauft hat und zudem > noch STMStudio pflegt, weiß ich nicht - in 3-4 Jahren kann sich viel tun > (ich lese gerade, dass ST jetzt "STM32CubeIDE" als Atollic Studio > Nachfolger gesetzt hat.) Ja, ist immer noch der letzte Schrei ;-). Es gibt ne Menge Eclipse basierte IDEs (und ich habe schon mit so ziemlich allen arbeiten müssen) und da gibt es gute und schlechte Implementierungen. Atollic hat damals schon gut funktioniert und ist bestimmt nicht schlechter geworden. Ich kann mir nur vorstellen das man damit jetzt auf ST Chips beschränkt ist. Bei Embedded Studio hat man durch die CPU Packages Support für alle Chiphersteller. Das ist vielleicht ein kleiner Vorteil.
Noch mal zurück zum eigentlichen Problem des Auslesens: vor mir ist der Testaufbau der fremden Schaltung. Wie gesagt, mit dem etwas älteren STM32F407-Discovery (MB997C), das sich nicht als USB-Device anmelden will. Auch nicht über den unteren Micro-B Stecker (DFuSe - Mode). Der Entwickler hat nur UART3 mit einem FTDI MM232R piggy back Board verbunden. Hat aber einen Schalter für BOOT0-Mode vorgesehen. Wenn ich den hochlege, geht LD7 an, aber, wie gesagt, USB is nich (bevor ich das Board nicht mit neuer Firmware flashen kann). Es ist mir aber essentiell wichtig, den Flash vorher noch mal zu sichern. M.W. schaltet das STM32F40discovery im BOOT0-Mode auf PA9/PA10 als UART um. Um das benutzen zu können (PA9), muß C49 entfernt werden (was mein Vorgänger auch getan hat). Allerdings sind die pins PA9/PA10 zwar angeschlossen, enden aber auf der Experimentierplatine im Nichts (es sind Drähte angeschlossen, aber kein Adapter dran). Der FTDI-Adapter (s.o.) ist an UART3 angeschlossen. Jetzt mal meine Frage: kann man einen eigenen Bootloader ins Board laden, der den existierenden überschreibt? Und kann ein geflashtes Programm so gestaltet sein, daß es sich selbst bootloaden kann? Und das dann über einen anderen UART? Kann man testen, ob ein Bootloader am UART "wartet", ihm also eine Sequenz einfüttern, auf die hin er sich "meldet"? Ist das dieser Intel ":"-Loader? Für erhellende Beiträge danke ich im Voraus. Grüße Christoph
Christoph K. schrieb: > Jetzt mal meine Frage: kann man einen eigenen Bootloader ins Board > laden, der den existierenden überschreibt? Ich glaube nicht. > Und kann ein geflashtes > Programm so gestaltet sein, daß es sich selbst bootloaden kann? Ja, das wiederum geht. Mach zum Beispiel der Maple Bootloader für Arduino. > Und das dann über einen anderen UART? Ja. Ein eigener Bootloader im Flash kann jede beliebige Schnittstelle benutzen.
Stefan ⛄ F. schrieb: > Christoph K. schrieb: >> Und das dann über einen anderen UART? > > Ja. Ein eigener Bootloader im Flash kann jede beliebige Schnittstelle > benutzen. Dafür sprechen einige Macros, die er im OCCONSOLE Programm definiert hatte und die mit ":" anfangen. Und "Bootloader" bedeutet auch immer "flashen"? Wenn der Bootloader ein eigener ist, dann muß er sich auch selbst überschreiben können, nicht wahr? Wird denn der "eigene" Bootloader auch über die BOOT0-Hochlegung angesprungen? Oder ist der nur ein normaler Programmbestandteil, der auf dem UART auf eine bestimmte Sequenz wartet?
Wenn der integrierte ST-Link nicht will, wie er soll (warum auch immer), klemmt man einfach einen externen dran. Also: SB10 schließen (legt den internen ST-Link still), die beiden Jumper auf CN3 ziehen, an Pin2 (CN3) SWCLK und Pin 4 SWDIO vom externen ST-Link, und GND nicht vergessen. Wenn es ein echter ST-Link (kein Klon) ist, auch noch die 3.3V vom Disco an den ST-Link. Ggf. noch den RESET-Taster beim beim aktivieren des Debug-Interfaces gedrückt halten. Ach ja, Saft muss natürlich auch irgendwo her kommen. Allerdings: Wenn das Program im Flash so wichtig und geheim ist, dass darüber keinerlei Unterlagen existieren, wird wahrscheinlich RDP auf 1 oder sogar 2 gesetzt sein ...
A. B. schrieb: > Wenn der integrierte ST-Link nicht will, wie er soll (warum auch immer), > klemmt man einfach einen externen dran. Also: > > SB10 schließen (legt den internen ST-Link still), die beiden Jumper auf > CN3 ziehen, an Pin2 (CN3) SWCLK und Pin 4 SWDIO vom externen ST-Link, > und GND nicht vergessen. Wenn es ein echter ST-Link (kein Klon) ist, > auch noch die 3.3V vom Disco an den ST-Link. Ggf. noch den RESET-Taster > beim beim aktivieren des Debug-Interfaces gedrückt halten. Ach ja, Saft > muss natürlich auch irgendwo her kommen. > > Allerdings: Wenn das Program im Flash so wichtig und geheim ist, dass > darüber keinerlei Unterlagen existieren, wird wahrscheinlich RDP auf 1 > oder sogar 2 gesetzt sein ... Muß erst mal sicherstellen, daß das Binary, das ich von den Sourcen erzeugen kann, identisch ist, mit dem, was sich im Moment im Board befindet. RDP, glaube ich eher nicht. Werde ich dann aber wahrscheinlich feststellen. Es sind eine ganze Menge SBs entfernt/gesetzt (dies sind - verglichen mit meinem unmodifizierten MB997D-01): SB3 - OFF SB5 - OFF SB7 - OFF SB9 - OFF R68 - entf. SB10 - ON SB12 - OFF SB15 - OFF SB16 - OFF SB18 - OFF SB19 - OFF SB20 - OFF Habe jetzt nur die aufgezählt, die offensichtlich modifiziert wurden. Externen ST-LINK besitze ich leider keinen. Sollte ich mir einen zulegen, was wäre die preiswerteste Lösung?
:
Bearbeitet durch User
Christoph K. schrieb: > Wird denn der "eigene" Bootloader auch über die BOOT0-Hochlegung > angesprungen? Nein, dadurch wird der unveränderliche Bootloader von ST gestartet. > Oder ist der nur ein normaler Programmbestandteil, > der auf dem UART auf eine bestimmte Sequenz wartet? Der "eigene "Bootloader, also nicht der der durch den Boot0 Jumper aktiviert wird, ist technisch gesehen ein normaler Programmbestandteil. Auf welcher Schnittstelle er kommuniziert, hängt von seinem Code ab. Da ist alles möglich. > Wenn der Bootloader ein eigener ist, dann muss er sich auch > selbst überschreiben können, nicht wahr? Kommst auf sein Programm an. Machbar ist es jedenfalls. Christoph K. schrieb: > Externen ST-LINK besitze ich leider keinen. Sollte ich mir einen > zulegen, was wäre die preiswerteste Lösung? Das wirst du am Preis erkennen, wenn du mal bei Amazon oder Aliexpress nach "ST-Link" suchst. Es gibt funktionstüchtige ab 2 Euro.
Christoph K. schrieb: > SB3 - OFF > SB5 - OFF > SB7 - OFF > SB9 - OFF Dann werden PA13 und PA14 wohl anderweitig verwendet. Also wird die Firmware wohl direkt nach Reset das SWD-Interface abschalten. Man kommt also nur bei aktiviertem NRST mit dem Debugger rein. SB5 und SB9 sollten zumindest wieder rein, sonst muss man mit Fädeldraht oder so an PA13 und PA14 oder man geht an Pins 39 und 42 von P2. > R68 - entf. > > SB10 - ON Ha, dann ist ja auch klar, warum der interne ST-Link nicht funktioniert ... > SB12 - OFF > SB15 - OFF > SB16 - OFF > SB18 - OFF > SB19 - OFF > SB20 - OFF Das betrifft Oszillator und SWO, ist also uninteressant, weil man sowieso wohl nur unter Reset ans SWD-Interface kommt. > Habe jetzt nur die aufgezählt, die offensichtlich modifiziert wurden. > > Externen ST-LINK besitze ich leider keinen. Sollte ich mir einen > zulegen, was wäre die preiswerteste Lösung? Naja, die üblichen Klone gibt's auf den bekannten Plattformen günstig. Nur wenn man sie kurzfristig braucht, wird es etwas teurer, aber immer noch deutlich unter 10 Euro. Aber ich würde erstmal SB10 entfernen, vermutlich geht der interne dann wieder ganz normal. Wenn ja, dann SB3, 5, 7, 9 und die Jumper auf CN3 wieder dran ... Aber nur das "nackte" Board, denn wie gesagt wurden PA13 und PA14 wohl für die externe Beschaltung zweckentfremdet, und da weiß man halt nicht, was dran hing. Wenn das die Sprengladung zur Selbstzerstörung ist ...
Beitrag #6460837 wurde von einem Moderator gelöscht.
A. B. schrieb: > Christoph K. schrieb: >... > > SB5 und SB9 sollten zumindest wieder rein, sonst muss man mit Fädeldraht > oder so an PA13 und PA14 oder man geht an Pins 39 und 42 von P2. > >> R68 - entf. >> >> SB10 - ON > Ha, dann ist ja auch klar, warum der interne ST-Link nicht funktioniert >... > > Aber nur das "nackte" Board, denn wie gesagt wurden PA13 und PA14 wohl > für die externe Beschaltung zweckentfremdet, und da weiß man halt nicht, > was dran hing. Wenn das die Sprengladung zur Selbstzerstörung ist ... SB10: Der Tip war Gold wert! Das Board meldet sich schon mal als ST-LINK Device. Allerdings sagt ST-LINK-Utility (siehe Bild).
Christoph K. schrieb: > SB10: Der Tip war Gold wert! Das Board meldet sich schon mal als ST-LINK > Device. Allerdings sagt ST-LINK-Utility (siehe Bild). Ja, klar, denn ohne die anderen Brücken und Jumper bekommt der ST-Link natürlich keine Verbidnung zum Target. Und wie gesagt, "Connect under Reset" dürfte nötig sein. Normalerweise sollte der interne ST-Link das auch können (wenn im ST-Link-Utility ausgewählt), es sei denn, SB11 fehlt. Dann einfach RESET-Taste gedrückt halten.
A. B. schrieb: > Christoph K. schrieb: >> SB10: Der Tip war Gold wert! Das Board meldet sich schon mal als ST-LINK >> Device. Allerdings sagt ST-LINK-Utility (siehe Bild). > > Ja, klar, denn ohne die anderen Brücken und Jumper bekommt der ST-Link > natürlich keine Verbidnung zum Target. Und wie gesagt, "Connect under > Reset" dürfte nötig sein. Normalerweise sollte der interne ST-Link das > auch können (wenn im ST-Link-Utility ausgewählt), es sei denn, SB11 > fehlt. Dann einfach RESET-Taste gedrückt halten. Ach, hatte ich vergessen, mit zu erwähnen in der Liste: SB11 ist OFF. Da ist im Original ein 0 Ohm drin. Gehe gleich mal in den Keller zum Löten. Andere gehen zum Lachen in den Keller. EDIT: SB11 verbunden (ON). Effekt der gleiche. ST-Link kann nicht verbinden. Muß ich nicht auch SB3,5,7,9 wieder verbinden?
:
Bearbeitet durch User
Christoph K. schrieb: > A. B. schrieb: >> Ja, klar, denn ohne die anderen Brücken und Jumper bekommt der ST-Link >> natürlich keine Verbidnung zum Target. Und wie gesagt, "Connect under >> Reset" dürfte nötig sein. Normalerweise sollte der interne ST-Link das >> auch können (wenn im ST-Link-Utility ausgewählt), es sei denn, SB11 >> fehlt. Dann einfach RESET-Taste gedrückt halten. > EDIT: SB11 verbunden (ON). Effekt der gleiche. ST-Link kann nicht > verbinden. Muß ich nicht auch SB3,5,7,9 wieder verbinden? Ja, das meinte ich mit "die anderen Brücken und Jumper", also alles, was zu CN3 gehört: SB3, SB5, SB7, SB9. Dagegen SB2, 4, 6, 8 natürlich "off", wie es im UM als Default steht.
Ja, funktioniert jetzt. Kann jetzt mit st-flash read auslesen. Noch zum Verständnis, was ST-LINK-Utility betrifft: wann und wie lange RESET gedrückt halten? Beim Anschließen des USB oder beim Starten des Utility? Aber schien ja nicht nötig (st-flash read funktionierte) Danke für die Hilfe.
:
Bearbeitet durch User
Stefan ⛄ F. schrieb: > Christoph K. schrieb: >> Wird denn der "eigene" Bootloader auch über die BOOT0-Hochlegung >> angesprungen? > > Nein, dadurch wird der unveränderliche Bootloader von ST gestartet. > > Jetzt frage ich mich nur: was hat mein Vorgänger mit dem Anbringen eines BOOT0-Toggle-Schalters bezweckt, wenn er sämtliche ST-Link Funktionen entfernt hat und noch nicht einmal PA9/PA10 verbunden hat? Selbst die BICOLOR LED (LD1) war ausgelötet.
:
Bearbeitet durch User
Christoph K. schrieb: > Jetzt frage ich mich nur: was hat mein Vorgänger mit dem Anbringen eines > BOOT0-Toggle-Schalters bezweckt Vielleicht hat er einen externen ST-Link angeschlossen und wollte mit dem Jumper verhindern, dass sein eigenes Programm startet und den SWD Port deaktiviert.
Stefan ⛄ F. schrieb: > Christoph K. schrieb: >> Jetzt frage ich mich nur: was hat mein Vorgänger mit dem Anbringen eines >> BOOT0-Toggle-Schalters bezweckt > > Vielleicht hat er einen externen ST-Link angeschlossen und wollte mit > dem Jumper verhindern, dass sein eigenes Programm startet und den SWD > Port deaktiviert. Externer ST-Link hätte bedeutet, daß es ein 6pol. einreihiges Pfostenbuchsenkabel in seinem Fundus hätte geben müssen, was aber nicht der Fall zu sein scheint.
Christoph K. schrieb: > Ja, funktioniert jetzt. Kann jetzt mit st-flash read auslesen. > Noch zum Verständnis, was ST-LINK-Utility betrifft: wann und wie lange > RESET gedrückt halten? Beim Anschließen des USB oder beim Starten des > Utility? Bevor/während das ST-Link-Utility die Verbindung zum Target herstellt. Zum Glück gibt' beim F4 ja noch nicht die Mäglichkeit, auch noch NRST zu verbiegen ... > Aber schien ja nicht nötig (st-flash read funktionierte) Das hängt halt davon ab, was die Firmware macht. Lässt sie PA13/14 wie nach Reset konfiguriert, kein Problem. Wenn sie die aber irgendwie umkonfiguriert, muss man während NRST aktiv ist, den uC anhalten, sonst läuft der gleich los und dreht an den Pins herum ... Wenn aber PA13/14 von der Firmware nicht umkonfiguriert werden, frage ich mich, wozu die ganzen Brücken entfernt wurden. SB10 schließen macht den ST-Link komplett inaktiv, der stört dann überhaupt nicht mehr, und die paar cm zusätzliche Leitung bzw. Eingangskapazität vom ST-Link sollten auch keine Kopfschmerzen bereiten. Die beide haben auch Pull-up/-down, also alles in Butter.
Christoph K. schrieb: > Externer ST-Link hätte bedeutet, daß es ein 6pol. einreihiges > Pfostenbuchsenkabel in seinem Fundus hätte geben müssen, was aber nicht > der Fall zu sein scheint. Wieso das denn? Mein ST-Link Stick wird mit 4 losen Dupont-Kabeln angeschlossen.
Stefan ⛄ F. schrieb: > Christoph K. schrieb: >> Externer ST-Link hätte bedeutet, daß es ein 6pol. einreihiges >> Pfostenbuchsenkabel in seinem Fundus hätte geben müssen, was aber nicht >> der Fall zu sein scheint. > > Wieso das denn? Mein ST-Link Stick wird mit 4 losen Dupont-Kabeln > angeschlossen. Gut. Ich habe einen externen ST-Link noch nie in der Hand gehabt und dachte, wenn der SWD-Connector so eine einreihige Pfostenleiste ist... Sehe allerdings auch in Abbildungen oft 4 einzelne Dupont (Berg) Buchsen. Aber ein solches Teil gibt es auch nicht im Fundus.
Christoph K. schrieb: > Externen ST-LINK besitze ich leider keinen. Sollte ich mir einen > zulegen, was wäre die preiswerteste Lösung? Einfach von deinem neuen Discoboard den ST-link Teil dazu verwenden...
G. H. schrieb: > Christoph K. schrieb: >> Externen ST-LINK besitze ich leider keinen. Sollte ich mir einen >> zulegen, was wäre die preiswerteste Lösung? > > Einfach von deinem neuen Discoboard den ST-link Teil dazu verwenden... Gut. Ich mache jetzt erst mal, nachdem ich das Programm ausgelesen habe, die Änderungen an den Jumpern wieder so, wie sie waren. Wie verbinde ich die beiden Boards dann? Bestimmte SWD-Pins miteinander verbinden?
:
Bearbeitet durch User
Christoph K. schrieb: > Gut. Ich habe einen externen ST-Link noch nie in der Hand gehabt und > dachte, wenn der SWD-Connector so eine einreihige Pfostenleiste ist... > Sehe allerdings auch in Abbildungen oft 4 einzelne Dupont (Berg) > Buchsen. Aber ein solches Teil gibt es auch nicht im Fundus. Die 6-pol. Stiftleiste dient aber nur dazu, ein externes Target an den internen ST-Link anschließen. Für anders herum ist diese Stiftleiste gar NICHT gedacht. Dazu muss man zusätzlich noch den internen ST-Link mittels SB10 tot legen. "4.2.1 Using ST-LINK/V2 to program/debug the STM32F4 on board" "4.2.2 Using ST-LINK/V2 to program/debug an external STM32 application" Was anderes ist NICHT vorgesehen!
Beitrag #6461142 wurde vom Autor gelöscht.
Beitrag #6461147 wurde vom Autor gelöscht.
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.