Forum: Mikrocontroller und Digitale Elektronik stm32f103 nach Flashversuch "tot"?


von Manuel (Gast)


Lesenswert?

Hallo,

mein Ziel war eigentlich diese Sofware in einen STM32F103 zu flashen:

https://github.com/j1rie/IRMP_STM32

Ich habe mit diesen Chips null Erfahrung. Als Programmer verwende ich 
einen ST-Link V2. Zum Flashen habe ich erst st-flash versucht:
https://github.com/texane/stlink
(Windows habe ich nicht!)

Da mir dieses Programm aber nur angezeigt hat, dass nichts geschrieben 
wurde, ohne einen konkreten Fehler auszugeben, bin ich davon 
ausgegangen, dass mein Chip möglicherweise "irgendwie" gelockt ist.

Ein "st-flash erase" war aber komischerweise erfolgreich. Während mit 
der Original-Firmware, die im Chip war, eine der LEDs permanent 
geleuchtet hat waren nach dem "erase" beide aus.

Also mit "OpenOCD" probiert. Dort habe ich dann unter anderem ein 
"stm32f1x unlock 0" ausgeführt. Irgendwann habe ich es dann tatsächlich 
geschafft die Firmware zu flashen.

Weitere Flashvorgänge, sowohl mit OpenOCD als auch mit st-flash, waren 
ab dann nicht mehr möglich und die zwei LED auf der neu geflashten 
Platine blinken ab jetzt abwechselnd.

Erst später bin ich auf den Reset-Pin aufmerksam geworden. Wenn ich 
diesen vor dem Flashen auf GND ziehe kann ich mit st-flash flashen und 
auch die Verifikation ist erfolgreich.

Trotz sauberer Firmware bekomme ich beim Anschließen aber nurnoch:


[ 2068.103728] usb 1-1: new full-speed USB device number 2 using 
xhci_hcd
[ 2068.217014] usb 1-1: device descriptor read/64, error -71
[ 2068.323573] xhci_hcd 0000:02:00.0: Setup ERROR: setup context command 
for slot 1.
[ 2068.327349] usb 1-1: hub failed to enable device, error -22
[ 2068.436815] usb 1-1: new full-speed USB device number 3 using 
xhci_hcd
[ 2068.550102] usb 1-1: device descriptor read/64, error 18
[ 2068.656663] xhci_hcd 0000:02:00.0: Setup ERROR: setup context command 
for slot 1.
[ 2068.660448] usb 1-1: hub failed to enable device, error -22
[ 2068.773235] usb 1-1: new full-speed USB device number 4 using 
xhci_hcd
[ 2068.773866] xhci_hcd 0000:02:00.0: ERROR: unexpected setup address 
command completion code 0x6.
[ 2068.980792] xhci_hcd 0000:02:00.0: ERROR: unexpected setup address 
command completion code 0x6.
[ 2069.186265] usb 1-1: device not accepting address 4, error -22
[ 2069.296195] usb 1-1: new full-speed USB device number 5 using 
xhci_hcd
[ 2069.296483] xhci_hcd 0000:02:00.0: ERROR: unexpected setup address 
command completion code 0x6.
[ 2069.503332] xhci_hcd 0000:02:00.0: ERROR: unexpected setup address 
command completion code 0x6.
[ 2069.709220] usb 1-1: device not accepting address 5, error -22
[ 2069.713114] usb usb1-port1: unable to enumerate USB device


Status ist also, dass ich den Chip zwar beschreiben kann, die 
USB-Kommunikation, die vor meinen Flashversuchen funktioniert hatte, 
aber irgendwie "kaputt" ist.

Dafür blinken die zwei LEDs jetzt permanent abwechselnd.

Gibt es eine Lösung außer "wegwerfen"?

Danke im Voraus

Gruß

Manuel

von Uwe Bonnes (Gast)


Lesenswert?

Die Loesung heisst "in kleine Schritte aufteilen " und "debuggen".

Wenn DU schon Openocd am laufen hast, dann kanns Du auch den Debugger 
starten. Der USB Teil laesst sich zwar wegen der Zeitanforderung nicht 
debuggen, aber vielleicht kannst Du dich ja an das "laufende" Programm 
"attachen" und daraus Schluesse ziehen..

von Christian L. (cyan)


Lesenswert?

Manuel schrieb:
> Erst später bin ich auf den Reset-Pin aufmerksam geworden. Wenn ich
> diesen vor dem Flashen auf GND ziehe kann ich mit st-flash flashen und
> auch die Verifikation ist erfolgreich.

Das Problem hatte ich auch mal. Ursache war, dass ich die Konfiguration 
der Pins an denen das SWD hängt geändert habe. Ich habe mich also selbst 
ausgesperrt. Durch den Reset sind die Pins erst einmal nicht 
konfiguriert, wodurch das Beschreiben funktioniert. Könnte es also sein, 
dass du dich mit deinem Programm selbst aussperrst, da die Pins falsch 
initialisiert sind?

von Manuel (Gast)


Lesenswert?

Die Pins, über die programmiert wird, werden in der Tat umprogrammiert.

Folglich könnte es auch sein, dass ich schon bei meinem Versuch mit 
OpenOCD zu flashen einen sauberen Flash hinbekommen hatte.

Mit Reset geht das Flashen dann auf jedem Fall auch mit st-flash 
problemlos.

Mein wirkliches Problem ist, dass das Programm eigentlich sauber sein 
müsste. Trotzdem funktioniert es auf meiner Platine nicht.

Ich habe gestern noch andere Platinen bekommen. Genau die Variante auf 
der das Programm getestet ist. Mal sehen wie sich das ganze dort 
verhält...

von Manuel (Gast)


Lesenswert?

Ich habe jetzt mal eine andere Platine als Programmer verwendet und 
jetzt scheint erstmals alles so zu funktionieren wie es soll...

Wundert mich, dass der Programmer hier einen Einfluss hat...

Zumal ja nicht nur Flashen sondern auch der Verify erfolgreich waren...

von Pieter (Gast)


Lesenswert?

Hallo Manuel,

welches Board nutzt Du? (40poliges China-Miniboard mit MicroUSB?)
Beim 103er über JTAG bekomme ich auch Fehlermeldungen.
Flashen geht, Debug bringt Command-Error.
Hast Du USB-HID am laufen?

Mit Gruß
Pieter

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
Noch kein Account? Hier anmelden.