Forum: Mikrocontroller und Digitale Elektronik Startschwierigkeiten mit Stm32F4 Discovery Board


von Haro (Gast)


Lesenswert?

Guten Abend zusammen,

ich hab heut mein F4 Discovery bekommen und gleich angesteckt.
Die Demo-Applikation lief sofort los (LED Blinken und Demo des 
Beschleunigungssensors).

Ich hatte vor die GNU Toolchain unter Ubuntu zu verwenden, welche ich 
bereits die Tage installiert hatte.
Zum Flashen war st-flash vorgesehen, das hab ich gerade frisch aus den 
Quellen kompiliert.

Auf der ST Seite gibt es ja die Demosoftware als Quellcode zum 
herunterladen. Dabei liegt auch ein fertiges Hexfile.

Dieses wollte ich probehalber mal mittels st-flash aufs Board spielen.
Folgendes Kommando hab ich benutzt:
1
st-flash write demo.hex 0x8000000
wobei demo.hex das Demoprojekt von ST ist (ich habs nur umbenannt).

Das Flash-Tool lief einwandfrei durch (nachdem ich ihm Rechte zur 
USB-Benutzung verpasst habe)
1
2014-01-31T18:16:01 INFO ../src/stlink-usb.c: -- exit_dfu_mode
2
2014-01-31T18:16:01 INFO ../src/stlink-common.c: Loading device parameters....
3
2014-01-31T18:16:01 INFO ../src/stlink-common.c: Device connected is: F4 device, id 0x10016413
4
2014-01-31T18:16:01 INFO ../src/stlink-common.c: SRAM size: 0x30000 bytes (192 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 16384 bytes
5
2014-01-31T18:16:01 INFO ../src/stlink-common.c: Attempting to write 72906 (0x11cca) bytes to stm32 address: 134217728 (0x8000000)
6
EraseFlash - Sector:0x0 Size:0x4000
7
Flash page at addr: 0x08000000 erasedEraseFlash - Sector:0x1 Size:0x4000
8
Flash page at addr: 0x08004000 erasedEraseFlash - Sector:0x2 Size:0x4000
9
Flash page at addr: 0x08008000 erasedEraseFlash - Sector:0x3 Size:0x4000
10
Flash page at addr: 0x0800c000 erasedEraseFlash - Sector:0x4 Size:0x10000
11
Flash page at addr: 0x08010000 erased
12
2014-01-31T18:16:04 INFO ../src/stlink-common.c: Finished erasing 5 pages of 65536 (0x10000) bytes
13
2014-01-31T18:16:04 INFO ../src/stlink-common.c: Starting Flash write for F2/F4
14
2014-01-31T18:16:04 INFO ../src/stlink-common.c: Successfully loaded flash loader in sram
15
size: 32768
16
size: 32768
17
size: 7370
18
2014-01-31T18:16:06 INFO ../src/stlink-common.c: Starting verification of write complete
19
2014-01-31T18:16:07 INFO ../src/stlink-common.c: Flash written and verified! jolly good!

Seitdem ist das Board tot.
Keine LEDs leuchten (abgesehen von den roten Power LEDs). Auf 
Tasterdruck wird auch nicht reagiert.

Was kann da falsch gelaufen sein?
Mein st-flash Aufruf scheint mir plausibel, ich hab ihn auch so im 
Internet (unter anderem in einem ST-Tutorial) gefunden.
Die hex-Datei stammt von ST selbst.

Was kann da also nicht passen?

Viele Grüße!

von Christian B. (chbalnuweit)


Lesenswert?

Was sagt lsusb wenn du das Board ansteckst?
Ansonsten muss man sagen das dieses Board echt ziemlich empfindlich ist. 
Der kleinsten Kurzschluss führt zum kompletten Hirntod. Ich habe selber 
schon 1-2 Boards "zerschossen".

: Bearbeitet durch User
von Haro (Gast)


Lesenswert?

Auf dem Programmer Port sagt es:
1
ID 0483:3748 STMicroelectronics ST-LINK/V2

Auf dem Applikationsport nichts. Das bestätigt wohl, dass die Firmware 
NICHT läuft. Leider hab ich vorher nicht nachgesehen wie sich der 
Applikationsport anmeldet (als es noch ging).

Übrigens, weitere Flashversuche sind erfolglos:
1
2014-01-31T19:03:10 INFO ../src/stlink-common.c: Loading device parameters....
2
2014-01-31T19:03:10 INFO ../src/stlink-common.c: Device connected is: F4 device, id 0x10016413
3
2014-01-31T19:03:10 INFO ../src/stlink-common.c: SRAM size: 0x30000 bytes (192 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 16384 bytes
4
2014-01-31T19:03:10 INFO ../src/stlink-common.c: Attempting to write 72906 (0x11cca) bytes to stm32 address: 134217728 (0x8000000)
5
EraseFlash - Sector:0x0 Size:0x4000
6
Flash page at addr: 0x08000000 erasedEraseFlash - Sector:0x1 Size:0x4000
7
Flash page at addr: 0x08004000 erasedEraseFlash - Sector:0x2 Size:0x4000
8
Flash page at addr: 0x08008000 erasedEraseFlash - Sector:0x3 Size:0x4000
9
Flash page at addr: 0x0800c000 erasedEraseFlash - Sector:0x4 Size:0x10000
10
Flash page at addr: 0x08010000 erased
11
2014-01-31T19:03:11 INFO ../src/stlink-common.c: Finished erasing 5 pages of 65536 (0x10000) bytes
12
2014-01-31T19:03:11 INFO ../src/stlink-common.c: Starting Flash write for F2/F4
13
2014-01-31T19:03:11 INFO ../src/stlink-common.c: Successfully loaded flash loader in sram
14
size: 32768
15
2014-01-31T19:03:15 ERROR ../src/stlink-common.c: flash loader run error
16
2014-01-31T19:03:15 ERROR ../src/stlink-common.c: run_flash_loader(0x8000000) failed! == -1
17
stlink_fwrite_flash() == -1

Kann des wirklich sein dass ich mir so leicht was zerschieß? Hab das 
Teil eigentlich sehr vorsichtig behandelt. Mein AVR Dragon (dem ja nicht 
gerade Robustheit nachgesagt wird) musste schon ganz anderes erdulden...

Hat noch jemand eine Idee?
Jumper sind übrigens unverändert, beide gesteckt.
Viele Grüße!

von Martin B. (martin_b97)


Lesenswert?

Hallo,

hat du eine .bin - Datei? Probier mal die zu Flashen.

Martin

von Dr. Sommer (Gast)


Lesenswert?

Haro schrieb:
> st-flash write demo.hex 0x8000000
st-flash schreibt direkt den Inhalt der Datei in den Flash, d.h. schön 
das .hex Format so wie es ist... Du musst die Datei erst ins Binärformat 
konvertieren, und die dann flashen, z.B.:
1
arm-none-eabi-objcopy -O binary demo.hex demo.bin
2
st-flash write demo.bin 0x08000000

Wenn st-util keine Verbindung herstellen kann, halte Reset gedrückt und 
lasse genau in dem Moment los wo du st-util startest. Das genaue Timing 
muss man üben. Bedanke dich bei ST für die enorme Qualität des ST-Link 
sowie den Hardware-Bug in allen STM32, der das manchmal nötig macht (im 
Gegensatz zu allen anderen Cortex-M* Controllern aller anderer 
Hersteller).

von holger (Gast)


Lesenswert?

>Device connected is: F4 device, id 0x10016413

Das Board meldet sich doch noch. Da ist nichts kaputt.
Dieser flash loader scheint zu spinnen.

Versuchs mal mit Windows und dem ST-Link Utility.
Du wirst sehen das das Board noch völlig intakt ist.

von Dr. Sommer (Gast)


Angehängte Dateien:

Lesenswert?

holger schrieb:
> Versuchs mal mit Windows und dem ST-Link Utility.
> Du wirst sehen das das Board noch völlig intakt ist.
Das heißt gar nix. Der STM32 kann durchgebrannt sein während das ST-Link 
noch läuft. Das durch eine kaputte Firmware zu verursachen ist aber 
nicht sehr wahrscheinlich.
Für die wichtigste Funktion des ST-Link Utility siehe Anhang; manchmal 
will das Utility nicht während Texane st-link sehr wohl funktioniert, 
und umgekehrt.

von Christian B. (chbalnuweit)


Lesenswert?

Das ST-Link Utility hat unter Windows die Funktion "Connect under 
Reset". Damit kann man den Controller auch oft retten, wenn er zunächst 
nicht mehr zu reagieren scheint.

von Haro (Gast)


Lesenswert?

Danke erstmal für die Antworten.

@ DrSommer: das objcopy bringt leider nichts...
1
Unable to recognise the format of the input file `demo.hex'

Die Datei ist im Intel-Hex Format.
In meinem jugendlichen Leichtsinn dachte ich, ich könnte diese direkt 
draufspielen (analog zum avrdude).

Wie auch immer, auch wenn die Datei das falsche Format hatte, deswegen 
müsste sich doch der Prozessor trotzdem neu bespielen lassen.

Der JTAG-Coprozessor scheint zu laufen, auch die Verbindung zum "Main" 
klappt anscheinend (laut st-util)
1
2014-01-31T19:55:51 INFO ../src/stlink-usb.c: -- exit_dfu_mode
2
2014-01-31T19:55:51 INFO ../src/stlink-common.c: Loading device parameters....
3
2014-01-31T19:55:51 INFO ../src/stlink-common.c: Device connected is: F4 device, id 0x10016413
4
2014-01-31T19:55:51 INFO ../src/stlink-common.c: SRAM size: 0x30000 bytes (192 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 16384 bytes
5
Chip ID is 00000413, Core ID is  2ba01477.
6
Target voltage is 2892 mV.
7
Listening at *:4242...

von Dr. Sommer (Gast)


Lesenswert?

Haro schrieb:
> @ DrSommer: das objcopy bringt leider nichts...Unable to recognise the
> format of the input file `demo.hex'
Ok dann muss man dem noch ein bisschen auf die Sprünge helfen:
1
arm-none-eabi-objcopy -I ihex -O binary demo.hex demo.bin
> Die Datei ist im Intel-Hex Format.
> In meinem jugendlichen Leichtsinn dachte ich, ich könnte diese direkt
> draufspielen (analog zum avrdude).
Leider nein, st-flash kann kein ihex einlesen...

Haro schrieb:
> Der JTAG-Coprozessor scheint zu laufen, auch die Verbindung zum "Main"
> klappt anscheinend (laut st-util)
Dann ist er nicht gegrillt, schonmal etwas :o)

von Haro (Gast)


Lesenswert?

Vielen Dank DrSommer, jetzt läuft wieder alles!

Naja, ich hätt mich eigentlich einlesen können, dann hätt ich gewusst 
dass st-link kein iHex mag. Bin aber irgendwie davon ausgegangen, da ja 
ST auch eins mit der Demosoftware ausliefert...

Aaaber: was ist denn da passiert?
Ich hab st-link meine iHex Datei gegeben. Diese wurde wahrscheinlich raw 
eingelesen und geflasht. Dementsprechend ist der Prozessor Amok gelaufen 
weil die Firmware natürlich nicht sinnvoll war.
Aber wieso konnte ich das iHex kein zweites mal flashen?
Wär noch interessant.

Wie auch immer, jetzt kommt der nächste Schritt: Demoprojekt selber 
kompilieren :-)

von Dr. Sommer (Gast)


Lesenswert?

Haro schrieb:
> Bin aber irgendwie davon ausgegangen, da ja
> ST auch eins mit der Demosoftware ausliefert...
ST hat ja auch nix mit st-link zu tun, das ist ein unabhängiges Open 
Source Projekt.

Haro schrieb:
> Ich hab st-link meine iHex Datei gegeben. Diese wurde wahrscheinlich raw
> eingelesen und geflasht. Dementsprechend ist der Prozessor Amok gelaufen
> weil die Firmware natürlich nicht sinnvoll war.
Ja.
> Aber wieso konnte ich das iHex kein zweites mal flashen?
Keine Ahnung, vermutlich zufällig auftretende Bugs in st-link, dem 
ST-Link-Chip, dem Debug-Core im STM32...

von Haro (Gast)


Lesenswert?

Dr. Sommer schrieb:
> ST hat ja auch nix mit st-link zu tun, das ist ein unabhängiges Open
> Source Projekt.

Stimmt. Kam da durcheinand. Immerhin pflegen die sogar eine 
Binärdistribution der GNU Toolchain. (Leider nicht für mein OS).

Die .bin ist ja wieder eine Binärdatei...
Was ist denn da alles drin? Ist das ne abgespeckte .elf?

von Dr. Sommer (Gast)


Lesenswert?

Haro schrieb:
> Stimmt. Kam da durcheinand. Immerhin pflegen die sogar eine
> Binärdistribution der GNU Toolchain. (Leider nicht für mein OS).
Was?? wo??
> Die .bin ist ja wieder eine Binärdatei...
> Was ist denn da alles drin? Ist das ne abgespeckte .elf?
Nee, das ist einfach nur eine Abfolge von Bytes die so 1:1 ins Flash 
geschrieben werden. Ein .elf ist ein komplexes Format, welches solche 
Bytefolgen, Symbolnamen, Debug-Informationen etc. enthalten kann. Daher 
wird es vom Debugger GDB verwendet um mehr als nur Maschinencode 
anzeigen zu können.

von Eeeeinfach (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Nee, das ist einfach nur eine Abfolge von Bytes die so 1:1 ins Flash
> geschrieben werden.

Nenn es einfach IMAGE.

von Dr. Sommer (Gast)


Lesenswert?

Eeeeinfach schrieb:
> Nenn es einfach IMAGE.
Das eine Fremdwort ("Binary") durch ein anderes ("Image") ersetzen? 
hmm...

von Helmut S. (helmuts)


Lesenswert?

Das Problem hatte ich auch mal, weil ich sämtliche Pins von Port-A auf 
Input gesetzt hatte und damit die Debug-Schnittstelle totgelegt habe.

Ich habe mich dann erinnert, dass es da noch ein Programmier-Programm
"STM32 ST-Link Utility" gibt.
http://www.st.com/web/en/catalog/tools/PF258168
Das Flashen ging aber erst auch nicht. Dann habe ich in Settings das
gewählt:
Target->Settings   Connection Mode: Connect under Reset
Damit konnte ich dann den "guten" Code wieder flashen und ab da klappte
auch das Flashen und Debuggen in CooCox wieder.

von Haro (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Haro schrieb:
>> Stimmt. Kam da durcheinand. Immerhin pflegen die sogar eine
>> Binärdistribution der GNU Toolchain. (Leider nicht für mein OS).
> Was?? wo??

Sorry, das war ARM. Habs durcheinandergeschmissen. Das wars, ich leg 
mich auf die Couch :-)

von Dr. Sommer (Gast)


Lesenswert?

Haro schrieb:
> Sorry, das war ARM. Habs durcheinandergeschmissen. Das wars, ich leg
> mich auf die Couch :-)
https://launchpad.net/gcc-arm-embedded Meinst du die? Die ist für Linux, 
Windows und sogar Mac OS X. Programmierst du auf einem iPad oder was...

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.