Ich habe Probleme on-chip-debugging auf einem Blue-Pill Board mit einem Fake STM32F103C8T6 zum Laufen zu kriegen. Ich entwickle unter - Windows 7 - STM32CubeIDE (V1.11.2) - mit einem ST-Link V2, Firmware V2J40S7 - Treiber für ST-Link: STMicroelectronics V 2.2.0.0 Mit einem Blue-Pill Board, das vermutlich einen orginalen STM Chip hat, kriege ich das on-chip-debugging über Umwege hin. Zwar klappt es dummerweise nicht, wenn ich mit der Debugsession den GDB automatisch starten lassen will. Starte ich jedoch den GDB zuvor manuell und connecte dann remote zum GDB, dann funktioniert alles ganz wunderbar. Zumindest mit dem Blue-Pill Board, das einen orginalen STM Chip hat. Bei einem anderen billig Blue-Pill Board kriege ich den GDB nicht gestartet. Er beendet sich direkt wieder mit der Meldung: "Could not verify ST device! Abort connection." Allerdings lässt sich der Fake Chip problemlos mit dem STM32CubeProgrammer flashen und funktioniert soweit auch erst mal: LCDs lassen sich ansteuern, Daten per USART übertragen, etc. Jetzt möchte ich aber dennoch hinkriegen, dass ich irgendwie auf diesen Fake Chips debuggen kann. Irgendwo habe ich gelesen, dass das möglich sei, wenn man in STM32CubeIDE statt des default GDB (ST-LINK GDB server) als Alternative den OpenOCD verwendet. Jedoch kriege ich das einfach nicht zum Laufen. Es scheitert wohl daran, dass OpenOCD den ST-Link gar nicht erst findet. Ich habe auch versucht den Windows Treiber für den ST-Link zu tauschen und mittels Zadig den Treiber WinUSB(v6.1.7600.16385) installiert. Dennoch bekomme ich beim Versuch OpenOCD zu starten das Meldungsfenster: "No ST-LINK detected! Please connect ST-LINK and restart the debug session." bzw in der Konsole: Error: 105 644 stlink_usb.c:3374 stlink_usb_usb_open(): open failed Debug: 106 647 command.c:545 run_command(): Command 'init' failed with error code -4 Also scheint wohl dass OpenOCD den ST-LINK gar nicht erst findet. Hat jemand einen Rat?
Thomas M. schrieb: > Also scheint wohl dass OpenOCD den ST-LINK gar nicht erst findet. Sieht so aus. Normalerweise klappt das aber. Ich habe das schon mal erfolgreich probiert, aber nur mit einem originalen STM32 und nur unter Linux. Probiere es mal unter Linux.
Warum soll das ein Fake sein? Was steht den auf der MCU drauf? OpenOCD funktioniert auch einwandfrei unter Windows, was soll das wieder mit Linux? Und wenn der STMCubeProgrammer funktioniert dann tut es der ST GDBServer auch.
:
Bearbeitet durch User
J. S. schrieb: > OpenOCD funktioniert auch einwandfrei unter Windows, was soll das wieder > mit Linux? Ich habe nur gesagt, dass ich OpenOCD bisher nur unter Linux verwendet habe und das das geklappt hat. Ob es es unter Windows irgendwelche haken und Ösen (insbesondere bezüglich der Treiber) gibt, weiß ich nicht. Weißt du, ob OpenOCD unter Windows den libusb-win32 oder winusb Treiber benötigt? Es würde mich wundern. Ich erwarte, dass die IDE alles mit bringt, was man braucht. Aber da der Thomas es mit Zadig versucht hat, wäre es für ihn bestimmt hilfreich, diesen Teil aufzuklären.
J. S. schrieb: > Warum soll das ein Fake sein? Das schließe ich in erster Linie daraus, dass der GDB mit der einen MCU funktioniert und nur bei dem vermutlichen Fake sich direkt wieder beendet mit der Meldung: Error in initializing ST-LINK device. Reason: ST-LINK: Could not verify ST device! Abort connection. > Was steht den auf der MCU drauf? Auf der funktionierenden steht tief eingelasert: STM32 F103C8T6 9902Q 93 MYS 615 Der STM32CubeProgrammer listet unter Target Information: Device: STM32F101/F102/F103 Medium-densi Device ID: 0x410 Revision ID: Rev X Flash size: 128 KB Auf der nicht funktionierenden ist die Schrift nur aufgedruckt, nicht tief eingelasert: STM32 F103C8T6 9901KA 93 MYS 806 Der STM32CubeProgrammer listet unter Target Information: Device: STM32F101/F103 High-density Device ID: 0x414 Revision ID: Rev Z Flash size: 256 KB > Und wenn der STMCubeProgrammer funktioniert dann tut es der ST GDBServer > auch. Irgendwo habe ich gelesen, dass der STM32CubeProgrammer keinen Check auf die Device ID mache. Der GDB Server aber macht offenbar den Check und verweigert dann den Dienst. Bei OpenOCD soll man diese Prüfung wohl abschalten können. Eigentlich ist es mir egal ob OpenOCD oder was auch immer für ein GDB - wenn es denn funktioniert.
ok, häufig werden die MCU ja als fake bezeichnet obwohl es einfach nur andere sind, GD32 oder CK32 oder andere. Wenn ST32 draufsteht, dann sollte auch einer drin sein. Es gibt die F103 auch mit mehr Speicher, aber dann sollte die Bezeichnung entsprechend sein. In der ST Community findet sich das hier, mit Tipp am Ende. Ich weiß aber nicht ob PlatformIO noch unter Windows7 läuft. Hier im Readme zum OpenOCD steht das WinUSB oder libUSB gehen soll, evtl. mal die andere Version ausprobieren. Und 32/64 Bit Version musste afaik passen. https://openocd.org/doc-release/README.Windows Steve van de Grens schrieb: > Ich erwarte, dass die IDE alles mit > bringt, was man braucht Die STMCubeIDE bringt ja alles mit, nur für seine STLink und JLink. OpenOCD geht weil es ein normales Eclipse mit allen Möglichkeiten ist, aber dann muss man halt selber basteln. Das Package passt aber auch nicht zu High Density, die fangen bei LQFP64 an.
:
Bearbeitet durch User
Außerdem: Die 8 in F103C8T6 steht für 64k. Device ID 414 gibt es mit 256k (C), 384k (D) und 512k (E). Faszinierend, die können Chips mit zig-Millionen Transistoren fälschen, aber für die Beschriftung reicht es nicht.
Ja, aber C/D/E sind die High density devices, und da passt das mit LQFP48 nicht. Wenn 256k Flash drin sind ist es ja gut, man muss nur wissen welcher uC da wirklich drin ist. CKS32 könnte es sein wenn die soviel in das kleine Gehäuse bekommen, habe nicht nachgesehen. Aber dafür gibt es ja Testprogramme die das analysieren.
J. S. schrieb: > Hier im Readme zum OpenOCD steht das WinUSB oder libUSB gehen soll, > evtl. mal die andere Version ausprobieren. Und 32/64 Bit Version musste > afaik passen. > https://openocd.org/doc-release/README.Windows Ja, das war die Quelle, weshalb ich diesen Zadig Installer probiert habe um andere Treiber für den ST-Link zu installieren. Leider hat das bei mir nicht zum Erfolg geführt. Auch hatte ich gelesen, dass es manchmal zu Problemen kommen könne, wenn der ST-Link an einem USB-Hub hinge. Bei mir kommt aber kein Hub zum Einsatz. Ich habe auch verschiedene USB Buchsen versucht. Leider findet OpenOCD nach wie vor den ST-Link nicht. Jetzt extra Unix auf meinen Rechner zu installieren nur um zu probieren, ob der ST-Link damit vielleicht funzt, finde ich ein bißchen übertrieben.
Thomas M. schrieb: > Jetzt extra Unix auf meinen Rechner zu installieren nur um zu probieren, > ob der ST-Link damit vielleicht funzt, finde ich ein bißchen > übertrieben. Dafür habe ich Verständnis. Es hätte sein können, dass du eh schon ein nutzbares Linux installiert hast - unter Entwicklern ist das ja oft der Fall.
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.