Forum: Mikrocontroller und Digitale Elektronik STM8S103F3 lässt sich nicht mehr flashen - IAR - STLink


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Max M. (maxmicr)


Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,

mein STM8S103F3 lässt sich nicht mehr flashen (verbaut auf dem 
günstigen, blauen China-Board). Der letzte Code, den ich flashen konnte, 
war dieser hier:
1
#include "iostm8s103f3.h"
2
3
#pragma vector = TIM4_OVR_UIF_vector
4
__interrupt void TIM4_UPD_OVF_IRQHandler(void){
5
  PC_ODR ^= (1<<4);     //Toggle Pin
6
  TIM4_SR &=~(1<<0);     //Clear Update interrupt flag
7
}
8
9
void initTimer(){
10
  CLK_PCKENR1 |= (1<<4); //Enable Clock for Timer 4
11
  TIM4_PSCR = (0x0F);    //Prescaler, Divide Clock by Max
12
  TIM4_IER = 1;          //Enable Update Interrupt
13
  TIM4_CR1 |= 1;         //Enable Timer
14
  asm("rim");            //Enable Interrupts     
15
}
16
17
void initGPIO(){
18
  PC_DDR |= (1<<4);     //Set Pin as Output
19
  PC_CR1 |= (1<<4);     //Set Pin as PushPull
20
  PC_ODR |= (1<<4);     //Set to High
21
}
22
23
void main()
24
{
25
  initTimer();
26
  initGPIO();
27
  CLK_CKDIVR = 0x08; //nur das hier wurde hinzugefügt
28
  while(1){
29
    ;
30
  }
31
}

Nach dem ich die kommentierte Zeile hinzugefügt hatte, kam das erste mal 
diese Fehlermeldung:
1
Mon Jan 16, 2017 20:06:24: C-SPY Processor Descriptor V2.20.1.176 for STM8 
2
Mon Jan 16, 2017 20:06:24: C-SPY Debugger Driver, ST-LINK V2.20.1.176 for STM8 
3
Mon Jan 16, 2017 20:06:24: Errors while setting configuration with MCU name STM8S103F3P: gdi-error [40409]: No answer from the SWIM: check chip connections and power supply; try a power on reset

Wenn ich eine STM8S003F3 flashen will, klappt das wunderbar. Damit kann 
man den ST-Link als Fehlerquelle wohl schon mal ausschließen. Kann es 
sein, dass ich den Takt so weit runtergeteilt habe, dass das Flashen 
nicht mehr funktioniert? Ich hatte das früher schon mal gemacht und hab 
damals gemerkt, dass das Flashen noch ging, aber Debuggen funktionierte 
erst wieder, als ich den Prescaler verringert habe.

Hat jemand eine Idee?

P.S. Wenn ich die CLK und SWIM Leitungen bewusst trenne (so das es gar 
nicht funktionieren kann), erhalte ich diese Fehlermeldung:
1
Mon Jan 16, 2017 20:10:22: C-SPY Processor Descriptor V2.20.1.176 for STM8 
2
Mon Jan 16, 2017 20:10:22: C-SPY Debugger Driver, ST-LINK V2.20.1.176 for STM8 
3
Mon Jan 16, 2017 20:10:22: Failed to set configuration with MCU name STM8S103F3P: SWIM error [30006]: Comm init error: chip does not answer

Anscheinend wird der Chip noch erkannt aber er antwortet nicht mehr?

: Bearbeitet durch User
von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
STM8 kenne ich nicht, aber beim STM32 half in solchen Fällen ein 
Komplettlöschen der Flash.

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
"des Flash" natürlich.

von Max M. (maxmicr)


Bewertung
0 lesenswert
nicht lesenswert
Wie macht man das in der IAR IDE?

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das weiss ich leider nicht.
Aber mit dem "ST Visual Programmer" sollte es gehen.

von Max M. (maxmicr)


Bewertung
0 lesenswert
nicht lesenswert
In STVP bekomme ich folgende Fehlermeldung:
1
Error : Cannot communicate with the device !
2
Check the SWIM cable connection and check all the needed pin connections on the SWIM connector.
3
4
If the application code uses Swim Disable and Reset pin as Output or has disabled SWIM Clock Divider:
5
Try Now to SWITCH OFF and ON the application Power Supply while NRST Reset pin is forced low.
6
7
Error : < PROGRAM MEMORY programming failed.

Kann es sein, dass der Flash hinüber ist? Das zuletzt geflashte Programm 
wird noch ausgeführt.

Ich hab den NRST-Pin auf GND gelegt und dann Power aus / an, hat nichts 
bewirkt.

: Bearbeitet durch User
von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hast Du den richtigen µC eingestellt?

Wenn ich den STM8S103F3 einstelle und einen STM32 dran hänge - ja ich 
weiss, habe aber keinen STM8 - dann bekomme ich genau diese Meldung.

von Max M. (maxmicr)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hp-freund schrieb:
> Hast Du den richtigen µC eingestellt?

Jop, denke schon (siehe Bild).

Das seltsame ist, dass das Flashen in IAR plötzlich nicht mehr möglich 
war, nach dem ich diese Codezeile hinzugefügt hatte.

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Lässt sich vielleicht der Tab "Option Byte" lesen und schreiben?

von Max M. (maxmicr)


Bewertung
0 lesenswert
nicht lesenswert
hp-freund schrieb:
> Lässt sich vielleicht der Tab "Option Byte" lesen und schreiben?

Leider nicht, da kommt die gleiche Meldung :(

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich denke dann wird es nur noch mit dem richtigen Rest funktionieren.
Im "RM0016 Reference manual" werden 9 Reset Arten beschrieben.

Vermutlich musst Du zur richtigen Zeit Reset auf L legen.

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
richtigen Rest -> richtigen Reset

Oh man.
Schon in Gedanken bei Arte 22:10 Idiocracy ;-)

von Max M. (maxmicr)


Bewertung
0 lesenswert
nicht lesenswert
hp-freund schrieb:
> Vermutlich musst Du zur richtigen Zeit Reset auf L legen.

Und wann ist diese richtige Zeit? Ich vermute, dass macht der ST-Link 
schon korrekt, korrekter als ich es machen kann? Und da der ST-Link 
nicht defekt ist (wie im ersten Post beschrieben) weiß ich nicht, ob da 
wirklich der Reset drann schuld ist (das wird der ST-Link wohl schon 
machen, oder)?

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Spannung ein, unter Reset oder ...

Sorry, muss erst mal Film zur aktuellen Lage ansehen ;-)

von Schops (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>If the application code uses Swim Disable and Reset pin as Output or has disabled 
SWIM Clock Divider:
>Try Now to SWITCH OFF and ON the application Power Supply while NRST Reset pin is 
forced low.

Ich würde 'mal probieren, den Reset low zu halten und währenddessen den 
ST-Link Connect versuchen.

Mglw (ich kenne weder STM8 noch die Tools) kann man auch eine Option
"Connect under Reset" oder ähnlich irgendwo wählen.

Flash kaputt ist äusserst unwahrscheinlich.

von Max M. (maxmicr)


Bewertung
0 lesenswert
nicht lesenswert
Schops schrieb:
> Mglw (ich kenne weder STM8 noch die Tools) kann man auch eine Option
> "Connect under Reset" oder ähnlich irgendwo wählen.

Gibt es weder bei STVP noch bei IAR sondern nur beim STM32 ST-Link 
Utility (habs nur durch googlen gefunden). Aber die Software arbeitet 
mit SWD von dem her ist klar, dass die den STM8 nicht erkennt. Ich bin 
echt am verzweifeln, warum gibt ein Chip einfach so den Geist auf? Nach 
dem Datenblatt müsste der Flash mind. 10k Schreibzyklen aushalten, die 
hab ich bestimmt noch nicht erreicht.

Schops schrieb:
> Ich würde 'mal probieren, den Reset low zu halten und währenddessen den
> ST-Link Connect versuchen.

Das hört sich an, als würdest du von der STM32 ST-Link Utility sprechen, 
funktioniert die überhaupt mit STM8 Controllern?

: Bearbeitet durch User
von Schops (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hast Du

>Ich würde 'mal probieren, den Reset low zu halten und währenddessen den
>ST-Link Connect versuchen.

probiert?

von Max M. (maxmicr)


Bewertung
0 lesenswert
nicht lesenswert
Schops schrieb:
> probiert?

So hab ichs verbunden:

https://www.squirrel-labs.net/media/catalog/product/cache/1/image/650x/040ec09b1e35df139433887a97daa66f/s/t/st-linkv2_pinout.jpg

SWIM -> SWIM
3V3 -> 3.3V
GND -> GND

und auf dem Board vom NRST-Pin zum GND-Pin.

Funktioniert nicht :(

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Max M. schrieb:
> und auf dem Board vom NRST-Pin zum GND-Pin.

Aber nicht dauerhaft oder?
Nur während des Verbindens.

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Was ist mit dem RST Pin am ST-Link?

von Max M. (maxmicr)


Bewertung
0 lesenswert
nicht lesenswert
hp-freund schrieb:
> Nur während des Verbindens.

Ich setzt NRST auf GND, dann trenne / verbinde ich Vcc, steck NRST auf 
"SWIM_RST" und versuche erneut den Controller zu programmieren -> 
funktioniert nicht.

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert

von Schops (Gast)


Bewertung
0 lesenswert
nicht lesenswert
UM0470 gelesen?
(Ich hab's nicht getan)

Könnte vielleicht nützliche Hinweise enthalten.

Ansonsten gibt's sicher bei ST auch ein STM8 Forum, wo vielleicht die 
richtigen Experten für das Thema zu finden sind...

Ich sehe gerade in RM0016, das Ding hat auch ein BootROM....
Der kennt z.B ein "Erase Mem" Kommando...

von Max M. (maxmicr)


Bewertung
0 lesenswert
nicht lesenswert
Schops schrieb:
> Ich sehe gerade in RM0016, das Ding hat auch ein BootROM....
1
The bootloader code is stored in the internal boot ROM memory. After a reset, the
2
bootloader code checks whether the program memory is virgin or whether a specific option
3
byte is set allowing code modifications.
4
If these conditions are not fulfilled, the bootloader resumes and the user application is
5
started.

Ich kann die Option Bytes nicht programmieren, ergo fällt das auch raus, 
denke ich?

Schops schrieb:
> Ansonsten gibt's sicher bei ST auch ein STM8 Forum, wo vielleicht die
> richtigen Experten für das Thema zu finden sind...

Das Forum ist so gut wie tot, hab da ein paar mal Fragen gestellt und 
nur sehr selten eine Antwort bekommen. Versuchen wer ich es trotzdem 
mal, danke.

von Ralph S. (jjflash)


Bewertung
0 lesenswert
nicht lesenswert
Schops schrieb:
> Ich sehe gerade in RM0016, das Ding hat auch ein BootROM....

User manual UM0560 Page 7 :

Table 2. STM8 subfamilies without bootloader

STM8 part numbers : STM8AF621x/2x, STM8Sx03xx

==> ergo: der STM8S103F3P6 hat keinen Bootloader von Haus aus

von aSma>> (Gast)


Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.