Forum: Mikrocontroller und Digitale Elektronik Seltsam - STM8S103F3 funktioniert, lässt sich nicht mehr flashen


von TU Student 1. (student0)


Lesenswert?

Nun habe ich ein seltsames Problem dem bekannten STM8S103F3P6 Board.

Es arbeitet das zuletzt aufgespielte Programm noch ab (sendet/empfängt 
über UART, TEST-LED blinkt) lässt jedoch keinen neuen Flashvorgang mehr 
zu.     stm8flash gibt "Tries exceeded", STVP die Fehlermeldung, dass 
keine Verbindung möglich ist.

Der STM8 bleibt aber offenbar stehen, wenn ich versuche eine Verbindung 
herzustellen.

Das Mysterium:
- Am ST-Link V2 bzw. der Software (stm8flash oder STVP) liegt es nicht, 
ein anderes baugleiches Board funktioniert einwandfrei.

- An der Problematik, dass der SWIM-Pin als Ausgang geschalten ist kann 
es nicht liegen, denn der STM8S103F3 hat einen eigenen NRST Pin und ich 
nutze in meinem Code keine GPIOs (bis auf die TEST-LED, und dieser Code 
ist seit Anfang der Entwicklung unverändert geblieben).   Die Gefahr 
sich auszusperren wie beim STM8S001J3 (reinster Murks, sorry ST) besteht 
meines Wissens nach nicht.

- Den STM8 habe ich mit Flussmittel nachgelötet und auch mit 
Durchgangstest verifiziert, dass die relevanten Pins (NRST und SWIM) 
verbunden sind und keine Kurzschlüsse auftreten.

- Den Onboard-Reset-Taster habe ich entfernt, falls dieser defekt sein 
sollte und auch manuell den NRST-Pin auf Masse gezogen.

- Ein Unlock-Kommando per stm8flash hat keinen Effekt:
1
$ ./stm8flash -cstlinkv2 -pstm8s103?3 -u
2
Determine OPT area
3
Unlocked device. Option bytes reset to default state.
4
Bytes written: 11

Der Programmcode bleibt unverändert, flashen lässt er sich weiterhin 
nicht.

Weiss jemand weiter?  Sind zwar nur 50 Cent, aber ich finde es einfach 
schade, einen funktionierenden STM8 wegzuwerfen.

von pegel (Gast)


Lesenswert?


von TU Student 1. (student0)


Lesenswert?

pegel schrieb:
> Probier das mal:
>
> http://www.electrodragon.com/w/STM8#Error_fix:_Unlock

Danke.  Habs grad probiert, es passiert dasselbe wie mit dem 
Unlock-Kommando von STM8Flash :(

Hab auch ins Errata-Sheet geschaut, dort finde ich nichts dazu.

von pegel (Gast)


Lesenswert?

Hast du das Board auch zwischendurch vom Strom getrennt?

von TU Student 1. (student0)


Lesenswert?

Klar.

Habe nun auch die Option Bytes ausgelesen mit:
1
$ ./stm8flash -c stlinkv2 -p stm8s103f3 -s opt -r test.bin

Resultat:
1
0000FF00FF00FF00FF00FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Also Factory Default, beschreiben lässt er sich trotzdem nicht.    Die 
Option Bytes lassen sich jedoch beschreiben, auch wenn ich da irgendwas 
anderes reinschreibe bleibt das erhalten.

Noch ein Phänomen:
Der "defekte" STM8 lässt sich mit STVP nicht auslesen (auch nicht die 
Option Bytes), jedoch lassen sich die Option Bytes mit stm8flash 
auslesen.

Interessanterweise lässt sich sogar der Program-Flash des "defekten" 
STM8 korrekt auslesen und hat den erwarteten Inhalt!
1
$ ./stm8flash -cstlinkv2 -pstm8s103f3 -sflash -r test.bin
2
Determine FLASH area
3
Reading 8192 bytes at 0x8000... OK
4
Bytes received: 8192

Der intakte STM8 lässt sich mit beidem (STM8Flash & STVP) 
auslesen/beschreiben.

WTF?!

von pegel (Gast)


Lesenswert?

Ich habe noch das gefunden:

https://github.com/vdudouyt/stm8flash/issues/38

läuft anscheinend auf ein Timing Problem hinaus.

von TU Student 1. (student0)


Lesenswert?

Das betrifft aber die STM8Flash-Software.   Das mysteriöse ist ja, dass 
ST's eigenes Tool STVP unter Windows sich überhaupt nicht mit dem Chip 
verbinden will und

Nachdem ich ihm jetzt ins erste Byte "AA" programmiert habe, wie im Link 
empfohlen bekomme ich beim zurücklesen der Option Bytes folgendes:
1
71717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171717171

Auf dem intakten Board bekomme ich die erwarteten Option Bytes.

Kann es sein, dass das ein Silicon Erratum ist?

von pegel (Gast)


Lesenswert?

Mehr kann ich zum STM8 leider auch nicht sagen :(

Habe mich auf den STM32 festgelegt.

von TU Student 1. (student0)


Lesenswert?

Der STM8 wurde gerettet!!!!!

Also...   Der Trick mit Factory Defaults funktioniert NICHT.

Was geklappt hat:   0xAA auf das erste Option Byte schreiben.
Danach kommen die Option Bytes mit 71717171... zurück.
Danach die Factory Defaults schreiben und der Chip lässt
sich wieder beschreiben.

Dummerweise habe ich jetzt den "Beweis" vernichtet, denn
eventuell hätte sich auch ST für dieses Exemplar interessiert.

Meiner Meinung nach ein definitiver Silicon Bug, denn wozu
soll man die "Readout Protection" erst aktivieren müssen,
um sie dann wieder zu deaktivieren um danach den Chip
beschreiben zu können.

von pegel (Gast)


Lesenswert?

Interessant aus dem link finde ich noch
"So, I installed "ST Visual Develop", have rewritten data in OPTION BYTE 
tab and my STM8S103F3P6 alive now."

Also STVD nicht STVP.

von pegel (Gast)


Lesenswert?

Dann liegt es vielleicht gar nicht am Programm, sondern wie oft und in 
welcher Reihenfolge programmiert wird.

von pegel (Gast)


Lesenswert?

Wie auch immer: Glückwunsch erst mal.

Vielleicht bzw. vermutlich wird sich noch einmal eine Möglichkeit bieten 
das Ganze zu testen. ;)

von TU Student 1. (student0)



Lesenswert?

Der Chip macht jetzt was anderes "lustiges".   Das neue Programm 
arbeitet erfolgreich, aber die Option Bytes enthalten nur noch Müll.

Ich  kann nun weder Option Bytes noch Flash beschreiben, den Flash 
jedoch erfolgreich lesen.

Mit STVD zeigt sich das gleiche wie mit STVP:  "Defekter" Chip lässt 
sich nicht verbinden, intakter jedoch problemlos.

Für mich sieht das nach einem Silicon Bug aus - eventuell interessiert 
sich ja ST dafür?

Der Chip ist somit kein "OTP", sondern ein "STP"-Device: Sometimes 
programmable.

Ich schlage ST vor, folgendes Erratum zu veröffentlichen:
"Occasionally, the device cannot be programmed on weekends
or by hobbyists.  On rare occasions, it may inhibit all
further programming attempts."

Workaround: Ensure that the device is programmed only during
work days in a certified lab environment.  On rare occasions,
If programming still fails, use a male cat's claw to scratch
the top of the device.  This reorders the electrons and thereby
causes the device to stop malfunctioning.  The cat's claw may
then be removed for further programming."

von pegel (Gast)


Lesenswert?

ST?
Kann auch sein, dass dem China Mann in der Hinterhof Fabrik ein Fehler 
unterlaufen ist :)

von TU Student 1. (student0)


Lesenswert?

Das Board ist elektrisch in Ordnung.   Das Chip ein Clone/Fake sein 
halte ich für beinahe ausgeschlossen, der Chip kostet in China ca. 0.22 
EUR und bei Mouser 0.48 EUR.    Der fast gleiche STM8S003F3P6 kostet 
0.29 EUR bei Mouser, somit würden die theoretisch sogar Gewinn machen. 
Kann auch gut sein, dass die Chips bei enormen Mengen in etwa gleich 
viel kosten.

ST ist ja bekannt dafür, Chips "downzugraden" beim STM32 was man so 
liest und mit dem STM8S001J3 haben sie sich auch nicht mit Ruhm 
bekleckert:
https://hackaday.io/project/27250-mcu-how-tos-reviews-rants/log/66992-stm8s001j3-the-good-the-bad-and-the-ugly

Oder es ist tatsächlich Ausschussware die da verlötet wurde...

von John Jennings (Gast)


Lesenswert?

Hi,
for the benefit of other users with this problem, I read this and many 
other threads seeking a solution. What solved it for me was to connect a 
.1uF cap on VCAP to Vss and 10uF on Vdd to Vss. It then worked 
immediately.
The caps are actually recommended but I was hoping to get away without 
then, but "Nicht Mehr" !

John Jennings
Ireland

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.