Forum: Mikrocontroller und Digitale Elektronik STM32 Nucleo-F303K8 führt plötzlich kein Programm mehr aus


von Matthias S. (da_user)


Lesenswert?

Hi,

ich habe mal auf einer Messe ein "STM32F303 - Nucleo-32 - ST part 
number: Nucleo-F303K8" Board geschenkt bekommen und wollte das jetzt 
einfach mal ausprobieren.

Da ich das ganze mit Arduino machen wollte, habe ich gestern ewig 
rumgegoogelt und ausprobiert, einen Thread hier aufmachen wollen, doch 
nochmal gegoogelt, Thread wieder gecancelt,.. usw. usf....
Fündig wurde ich dann mit dem STM32duino Projekt, welches mein Board 
angeblich unterstützt: https://github.com/stm32duino/Arduino_Core_STM32 
.

Leider habe ich trotzdem in der Arduino IDE genau mein Board nicht 
gefunden, aber trotzdem einfach mal eines ausprobiert, welches am 
nächsten rankam: "Board Nucleo-64" - "Board part number: F303RE".
Das Beispielprojekt "blink.ino" lies sich dann mit dem STL-Link ohne 
Probleme übertragen und lief. Also dann erstmal auf die Socken gemacht, 
mehr Infos zusammengekramt und dann war der Tag auch schon zuende.

Heute wollte ich dann mal ein bisschen weitermachen, also Board 
angeklemmt und... es blinkt nicht mehr?! Testweise nochmal die blink.ino 
aufgespielt, es werden keine Fehler gemeldet, die entsprechende 
ÜbertragungsLED-blinkt dabei:
1
Der Sketch verwendet 10.364 Bytes (1%) des Programmspeicherplatzes. Das Maximum sind 524.288 Bytes.
2
Globale Variablen verwenden 2.416 Bytes (3%) des dynamischen Speichers, 63.120 Bytes für lokale Variablen verbleiben. Das Maximum sind 65.536 Bytes.
3
STM32 ST-LINK CLI v3.0.0.0
4
STM32 ST-LINK Command Line Interface
5
6
ST-LINK SN : 066FFF544956845187095523
7
ST-LINK Firmware version : V2J25M14
8
Connected via SWD.
9
SWD Frequency = 4000K.
10
Target voltage = 3.3 V.
11
Connection mode : Normal.
12
Device ID:0x438 
13
Device flash Size : 64 Kbytes
14
Device family :STM32F303x4-x6-x8/F328xx/F334xx
15
16
Loading file...
17
Flash Programming:
18
  File : C:\Users\user\AppData\Local\Temp\build9c9ef3bdfe2fccb480bc6e4bac749e41.tmp\Blink.ino.bin
19
  Address : 0x08000000
20
Memory programming...
21
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± 0%
22
 0%ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ 90%ÛÛÛÛÛ 100%
23
Memory programmed in 0s and 672ms.
24
Programming Complete.
25
26
MCU Reset.
27
28
run application to exit
29
Application started.

Aber das Programm läuft nicht. Auch am Breadboard mit div. anderen Pins 
und LEDs probiert, probiert ob ich ein Serialprogramm aufspielen kann 
und mir dieses was meldet,.. nichts. Es ist, als hätte sich das Board in 
einen WROM verwandelt.

Also: hat wer Erfahrung mit den Dingern? Kann mir hier wer weiterhelfen?

von pegel (Gast)


Lesenswert?

Mit den Dinger schon, aber nicht mit Ardu-Dingsda.
Falls du vor hast CubeMX und STM32SW4 zu benutzen könnte ich dir helfen.

von pegel (Gast)


Lesenswert?

SW4STM32 muss es natürlich heissen.

von pegel (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang eine kleine Blinky.hex

von Matthias S. (da_user)


Lesenswert?

Hi,

danke für die Hex. Leider kann die Arduino IDE wohl nur hex-Files 
exportieren, frisst aber keine zum Übertragen. St empfiehlt gefühlt 
trölf Software development tools.

Ich wollte jetzt erstmal SW4STM32 probieren, aber sowohl bei der 32- wie 
auch bei der 64-bit Variante beschwert sich der Installer über fehlendes 
Java:
Console:
1
UnZipSFX 6.00 of 20 April 2009, by Info-ZIP (http://www.info-zip.org).
2
   creating: __sw4stm32_tmp/
3
  inflating: __sw4stm32_tmp/autorun.bat
4
  inflating: __sw4stm32_tmp/install_sw4stm32_win_64bits.exe
5
  inflating: __sw4stm32_tmp/msys-1.0.dll
6
  inflating: __sw4stm32_tmp/gzip.exe
7
  inflating: __sw4stm32_tmp/jre-8u131-windows-x64.tar.gz
8
  inflating: __sw4stm32_tmp/tar.exe
9
      0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
10
AllocationBase 0x0, BaseAddress 0x68560000, RegionSize 0x490000, State 0x10000
11
D:\Downloads\__sw4stm32_tmp\tar.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
12
"Failed to extract the bundled Java Runtime Environment"
13
"Trying to continue with some already installed..."
14
15
D:\Downloads\__sw4stm32_tmp>install_sw4stm32_win_64bits.exe

Fehlermeldungsbox:
1
You have no JavaRE or have a JavaRE 32bits.This application requires a Java Runtime Environment 64bits. Please download and install the JavaSE JRE 64bits. Press [OK] to get redirected to the website. Min Version : JavaSE 1.7.0_45 (64bit)

Obwohl ich jetzt extra dafür "jre-9.0.1_windows-x64_bin" installiert 
habe...

Ich habe jetzt noch das Atollic TureStudio for ARM Lite ausprobiert, 
finde dort aber auf Anhieb nix, wo ich eine .hex-File hochladen 
könnte...

von Haas (Gast)


Lesenswert?


von Matthias S. (da_user)


Lesenswert?

Hi,

danke, damit konnte ich die .hex rüberschieben. Da blinkt aber leider 
auch nix.
@pegel: du hast schon D13/PB_3 blinken lassen?

VG
Matthias

von --- (Gast)


Lesenswert?

Wie man sieht, führt die Methode des unbekümmerten Herumprobierens
nicht immer zum Ziel.
Für Mitmenschen die das eher systematisch angehen, eine beruhigende
Tatsache.

von pegel (Gast)


Lesenswert?

Matthias S. schrieb:
> @pegel: du hast schon D13/PB_3 blinken lassen?

Hallo,
ja, habe ich. So wie der Schaltplan vom Board das vorgibt.
Wenn nichts mehr geht, mach mit ST Link Utility erst mal ein 
vollständiges Löschen und sieh dir auch die Schutzbits an.

von Matthias S. (da_user)


Angehängte Dateien:

Lesenswert?

pegel schrieb:
> Wenn nichts mehr geht, mach mit ST Link Utility erst mal ein
> vollständiges Löschen und sieh dir auch die Schutzbits an.

Ein komplettes Löschen habe ich schon gemacht. Mit den Schutzbites 
meinst du wohl die "Option Bytes"? Mit denen kann ich jetzt gar nix 
anfangen, darum davon ein Screenshot im Anhang.
Wäre allerdings tatsächlich sehr komisch, wenn da was geändert wäre...

Ich habe jetzt übrigens nochmal alles um die Diode durchgemessen, schaut 
alles super aus. Zudem mal über einen Widerstand den Pin D13 auf die 
3,3V geklemmt => LED leuchtet. Von dieser Seite kann ich also schonmal 
einen Hardwaredefekt ausschließen.

--- schrieb:
> Für Mitmenschen die das eher systematisch angehen, eine beruhigende
> Tatsache.

Dann verrat mir doch bitte deine Weisheit, wie ich systematisch weiter 
vorgehen soll. Danke.

von Stefan F. (Gast)


Lesenswert?

Ich würde ein erprobtes Programm mit einer erprobten Prozedur auf den 
Chip laden. Wenn es dann immer noch nicht klappt, könnte der Chip defekt 
sein.

Für deinen konkreten Chip kann ich Dir nichts bieten, aber für einen 
anderen STM32 Controller. Mit etwas Glück passt diese Anleitung auch bei 
Dir. Also wenn gar nichts geht, versuche das mal: 
http://stefanfrings.de/stm32/index.html

von R. F. (rfr)


Lesenswert?

Das Programmieren eines Forth systems könnte helfen. Flashe es und 
versuche, Werte der einzelnen Register zu ermitteln (indem man sie 
ausgibt). Falls kein Prompt am putty erscheint, ist der Chip wohl im 
Eimer.

Robert

von pegel (Gast)


Angehängte Dateien:

Lesenswert?

Wie ist es zum setzen der Boot Bits gekommen? Audu-Sowieso?

In Anhang meine OptionBytes für ein Nucleo144-F746.

von Matthias S. (da_user)


Lesenswert?

Stefan U. schrieb:
> Ich würde ein erprobtes Programm mit einer erprobten Prozedur auf den
> Chip laden. Wenn es dann immer noch nicht klappt, könnte der Chip defekt
> sein.

Ich habe das Dingens zum ersten mal in den Händen, ich habe als 
erprobtes Programm nur das von pegel. Wie geschrieben, anfangs lief 
er,...

pegel schrieb:
> Wie ist es zum setzen der Boot Bits gekommen? Audu-Sowieso?
>
> In Anhang meine OptionBytes für ein Nucleo144-F746.

Da kann ich ehrlich gesagt nur mit den Schultern zucken. Aktiv habe ich 
nix gesetzt, die Arduino IDE bietet von sich aus, auch keine Option 
dazu. Allerdings kann die, zumindest beim AVRs, beim aufspielen eines 
Bootloades wohl Fuses setzen.
Du meinst, wenn ich nBoot1 rausnehme (an nBoot0 kann ich nix ändern, ist 
ausgegraut), könnte es klappen?

von pegel (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe jetzt auch meine ST-Link-Utility auf Version 4.1 erneuert.
Ändert nichts an den Bytes.

Versuch mal deine so einzustellen.

Beitrag #5196660 wurde von einem Moderator gelöscht.
von pegel (Gast)


Lesenswert?

Matthias S. schrieb:
> wenn ich nBoot1 rausnehme

Ja, eine andere Möglichkeit bietet dein µC nicht an.

von Matthias S. (da_user)


Angehängte Dateien:

Lesenswert?

pegel schrieb:
> Versuch mal deine so einzustellen.

Das geht nicht ganz so. nBoot1 konnte ich rausnehmen, ändert aber nix.
IWDG_SW habe ich gar nicht. IWDG_STOP und WWDG_SW sind ausgegraut & 
deaktiviert.
nBoot0_SW_Cfg und nBoot0 sind ausgegraut & aktiviert.

Wenn ich mir die Hilfsanzeige so ansehe (siehe Anhang), spielt da aber 
auch nBoot0 mit...

Edit:
Weil ich auf der mbed-Seite von meinem Board im Forum einen Thread 
gefunden habe, der darauf hinweist, habe ich mal mein Board sowohl mit 
7V per Vin, und 5V per 5V versorgt. Hat aber auch nix geändert.

: Bearbeitet durch User
von pegel (Gast)


Lesenswert?

Hast du versucht meine hex zu flashen und dann zu vergleichen?
Dann geh auf Target -> MCU Core, da siehst du wo das Programm liegt und 
kannst es starten.

von pegel (Gast)


Lesenswert?

BOOT0 ist laut Schaltplan = 0.
Brücke SB12 ist geschlossen?

von pegel (Gast)


Lesenswert?

Matthias S. schrieb:
> Zudem mal über einen Widerstand den Pin D13 auf die
> 3,3V geklemmt => LED leuchtet.

Hoffentlich hat der Pin das verziehen falls er Ausgang war.

von Matthias S. (da_user)


Lesenswert?

pegel schrieb:
> Hast du versucht meine hex zu flashen und dann zu vergleichen?
> Dann geh auf Target -> MCU Core, da siehst du wo das Programm liegt und
> kannst es starten.

Ich lade nur deine hex hoch ;-)
Target => compare hat keine Unterschiede gefunden

pegel schrieb:
> Dann geh auf Target -> MCU Core, da siehst du wo das Programm liegt und
> kannst es starten.

Ähm.. damit kann ich ehrlich gesagt nix anfangen. Als ich da 
reingegangen bin, stand der CoreState auf "Halted". Hab mal auf "Run" 
umgeschaltet, wieder auf "Halted", Resets durchgeführt, usw. usf., die 
Registerwerte haben sich dabei aber nicht geändert.

pegel schrieb:
> BOOT0 ist laut Schaltplan = 0.
> Brücke SB12 ist geschlossen?

Ach, das bezieht sich auf BOOT0 und nicht auf nBoot0 kling. 
Entsprechend macht es aber keinen Unterschied, ob nBoot1 gesetzt oder 
nicht gesetzt ist.

pegel schrieb:
> Hoffentlich hat der Pin das verziehen falls er Ausgang war.

grmlzefu
Da aber anscheind kein Programm läuft, wird der auch nicht als Ausgang 
gesetzt gewesen sein... hoff

von pegel (Gast)


Lesenswert?

Matthias S. schrieb:
> Registerwerte haben sich dabei aber nicht geändert.

Wo steht der PC? 0x8....

Jetzt kann ich nur noch anbieten den internen Oszillator zu benutzen um 
Taktprobleme auszuschliessen und noch einen anderen Pin zu benutzen.
Welcher soll es sein?

von pegel (Gast)


Lesenswert?

Der PC sollte bei STEP weiter zählen.

von pegel (Gast)


Lesenswert?

Hast du schon ein ST-Link Firmware Update gemacht?

von Matthias S. (da_user)


Lesenswert?

PC steht bei 0x80011f8 und bewegt sich weder bei Run noch bei Step.

Interner Osz. hört sich gut an. Nimm bitte einen zusätzlichen Pin, 
welcher ist egal, Hauptsache herausgeführt. Sinnvoll könnte sein, einen 
von nem anderen Port zu nehmen, Wie wärs mit PA_9/D1?

Die ST-Link Firmware habe ich bereits geupdated.

von pegel (Gast)


Lesenswert?

Bin wieder da.
PA9 und interner Takt folgen.

von pegel (Gast)


Angehängte Dateien:

Lesenswert?

HSI + PA9.

von Matthias S. (da_user)


Lesenswert?

LED blinkt. DANKE pegel!

Hab natürlich vorhin übersehen, dass PA_9 gleichzeitig UART1_TX ist, 
aber zumindest konnte ich damit jetzt mein Problem schonmal auf den Takt 
eingrenzen (und D13 ist nicht abgeraucht!)
Entsprechend habe ich jetzt mal im Schaltplan nachgeguckt, und siehe da: 
X1+Hühnerfutter ist gar nicht bestückt! Da käme auch nur ein 32,768kHz 
Kristall rein.

Wie kriege ich jetzt meine Arduino-Programme dazu, mit internen Takt zu 
laufen? Und kriege ich da auch die 72Mhz hin?

VG
Matthias

von pegel (Gast)


Lesenswert?

Matthias S. schrieb:
> Wie kriege ich jetzt meine Arduino-Programme dazu

Da kann ich dir nicht helfen.


Du solltest aber nachsehen, ob der Takt von ST-Link auch am F303 Pin 
ankommt.

von pegel (Gast)


Lesenswert?

X1 ist nicht das Problem.
Die 8MHz sollen vom ST-Link an Pin PF0/OSC_IN gehen.

von pegel (Gast)


Lesenswert?

Matthias S. schrieb:
> welches am nächsten rankam: "Board Nucleo-64"

Das kann auf Grund der unterschiedlichen Pinzahl nicht passen.
Musst für dein A...... ein passendes Board erstellen bzw. finden.

von Nop (Gast)


Lesenswert?

Beim Nucleo32 sagt das User Manual (UM1956, Kapitel 6.8) auch noch, daß 
per Default der Takt auf HSI läuft. Wenn man aber den MCO vom ST-Link 
auf OSC_IN haben will, muß man auch noch die Lötbrücke SB6 öffnen und 
SB4 schließen.

von Matthias S. (da_user)


Lesenswert?

Da kann ich auch nochmal gucken.

Auf jeden Fall habe ich jetzt herausgefunden, dass sich die boards.txt 
von Arduino_Core/stm32duino auf GitHub von der unterscheidet, die der 
Arduino-Board-Manger heruntergeladen hat. Bei letzteren fehlt nämlich 
das Nucleo-F303k8,.... hrmpf

von Nop (Gast)


Lesenswert?

Matthias S. schrieb:
> Da kann ich auch nochmal gucken.

Guck Dir auch noch in Kapitel 7 die Abbildung 10 an. So wie ich das 
lese, wäre mit MCO vom ST-Link dann der Pin D7 am externen Connector 
nicht mehr nutzbar, weil der MCO auf PF0 geht, der ident mit PC14 ist, 
welcher gerade D7 ausmacht. Durch das Öffnen von SB6 hängt dann D7 am 
externen Connector in der Luft.

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.