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


von Max M. (maxmicr)


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)


Lesenswert?

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

von hp-freund (Gast)


Lesenswert?

"des Flash" natürlich.

von Max M. (maxmicr)


Lesenswert?

Wie macht man das in der IAR IDE?

von hp-freund (Gast)


Lesenswert?

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

von Max M. (maxmicr)


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)


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:

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)


Lesenswert?

Lässt sich vielleicht der Tab "Option Byte" lesen und schreiben?

von Max M. (maxmicr)


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)


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)


Lesenswert?

richtigen Rest -> richtigen Reset

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

von Max M. (maxmicr)


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)


Lesenswert?

Spannung ein, unter Reset oder ...

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

von Schops (Gast)


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)


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)


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)


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)


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)


Lesenswert?

Was ist mit dem RST Pin am ST-Link?

von Max M. (maxmicr)


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)


Lesenswert?


von Schops (Gast)


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)


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)


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)


Lesenswert?


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.