Forum: Mikrocontroller und Digitale Elektronik STM32 Flashprobleme


von Benajmin Buxbaum (Gast)


Lesenswert?

Ich bin noch sehr neu im Bereich STM32 und versuche gerade einen 
STM32F103C8T6 auf einem dieser blauen Boards aus China zum Laufen zu 
bekommen. Programmer ist ein ST-LinkV2 auf einem STM32F4Disco, gebaut 
wird mit einem Makefile.

Das Programm ist momentan einfach ein Blinky das zum größten Teil aus 
Cube kommt und nur den LED-Pin initialisiert. Das Flashen mit Texane 
ST-Link hat das erste Mal einwandfrei funktioniert, danach nicht mehr. 
Die LED blinkte fröhlich vor sich hin, aber jeden weiteren Versuch zu 
flashen quittierte der Programmer mit "Unknown Chip ID".

Habe auf der Github-Seite von Texane den Tipp gefunden, Boot0 auf HIGH 
zu legen, um den internen Bootloader zu verwenden. Damit kann ich mich 
nun wieder verbinden, aber auch ein vollständiges Erasen macht den Chip 
nicht wieder kooperativ. Flashen und Erasen geht also immer noch nur, 
wenn BOOT0 auf VCC liegt.

Habe die Firmware von ST-Link auf die neueste Version gebracht, und auch 
OpenOCD und das ST-Link Utility probiert. Beide connecten nicht.

Ich vermute einen groben Anfängerfehler. Muss an 0x8000000 vielleicht 
sowas wie ein Bootloader stehen, den ich beim ersten Versuch 
überschrieben habe? und: Wie bekomme ich den wieder drauf? (Das normale 
Startup.s-Script wird mit kompiliert)

von Max M. (maxmicr)


Lesenswert?

Bei mir war das Problem, dass die Read-Out Protection gesetzt war (hab 
auch so ein China-Board), das konnte man aber mit der ST Utility wieder 
entsperren (über Option Bytes), danach hat das Flashen funktioniert. 
Aber wenn das Verbinden zur Utility bei dir nicht klappt, schwierig...
Hast du die von hier heruntergeladen?
http://www.st.com/content/st_com/en/products/embedded-software/development-tool-software/stsw-link004.html

von Zeichn (Gast)


Lesenswert?

Vielleicht hilft es, im Augenblick des Connects den Rest Knopf gedrückt 
zu halten.

Möglicherweise deaktiviert Deine geflashte Firmware den SWD/JTAG Port 
und der Connect geht deshalb nicht.

von Benajmin Buxbaum (Gast)


Lesenswert?

Fantastisch, genau das war es!

Jetzt muss ich nur noch die Stelle finden, wo das schief geht... SWD ist 
in Cube eigentlich aktiviert. Hmm.

von W.S. (Gast)


Lesenswert?

Benajmin Buxbaum schrieb:
> Ich bin noch sehr neu im Bereich STM32 und versuche gerade einen
> STM32F103C8T6 auf einem dieser blauen Boards aus China zum Laufen zu
> bekommen. Programmer ist ein ST-LinkV2 auf einem STM32F4Disco, gebaut
> wird mit einem Makefile.

Solange du ein passables Hexfile oder Binärfile zuwege bekommst, ist es 
egal, was für eine Toolchain du benutzt.

Tippe ich richtig, daß du ein STLink-2 Nachbau-Board programmieren 
willst? Die Schreib- und Auslesesperren werden nicht beim Flashen 
gemacht, sondern beim allerersten Lauf der geflashten Firmware.

Guck, ob du auf dem Board die Signale RxD1, TxD1, BOOT und RESET 
kontaktieren kannst. Wenn ja, dann lade dir das STM32Prog hier aus dem 
Forum herunter und brenne dir den Chip par Bootlader. Keine Sorge, der 
Bootlader im STM32 ist resident im ROM. Normalerweise reicht einmal 
Bulkerase aus, um den Chip wieder kooperativ zu machen. Manche Chips 
(insbes. F4xx) kriegen davon aber einen Latchup und brauchen dann für ne 
Millisekunde oder so einfach mal die VCC weggenommen.

Falls das mit den Pins nicht geht, lege dir lieber einen Seggerschen 
J-Link zu und benutze deren Software.

Jaja, ich referiere hier über Windows-Software. Falls jemand ERNSTHAFT 
die Lazarus-Version des STM32Prog nach Linux portieren will, sollte er 
das mal deutlich sagen.

W.S.

von Benajmin Buxbaum (Gast)


Lesenswert?

Hab den Fehler gefunden. Cube hat den neu erzeugeten Code in ein anderes 
Verzeichnis gelegt, als ich dachte. Ich kann nun wieder flashen! Danke 
fuer die schnelle Hilfe!

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.