STM32CubeMX und OpenSTM (System Workbench)

Gast #4565033
Lesenswert?

Hallo zusammen,
ich versuche gerade mein erstes Projekt mit CubeMX und OpenSTM32 
Workbench zu flashen. Das ganze geht über das Terminal Programm JLinkExe 
(unter Linux).

/workspace-openstm/F7-Display/ $ JLinkExe -if JTAG -device STM32F746ZG
SEGGER J-Link Commander V5.12d (Compiled Apr 26 2016 19:23:38)
DLL version V5.12d, compiled Apr 26 2016 19:23:34

Connecting to J-Link via USB...O.K.
Firmware: J-Link V9 compiled Mar 29 2016 18:46:37
Hardware version: V9.30
S/N: 269301940
License(s): FlashBP, GDB
OEM: SEGGER-EDU
VTref = 3.288V

Type "connect" to establish a target connection, '?' for help
J-Link>connect
Device position in JTAG chain (IRPre,DRPre) <Default>: -1,-1 => 
Auto-detect
JTAGConf>
Specify target interface speed [kHz]. <Default>: 4000 kHz
Speed>
Device "STM32F746ZG" selected.


TotalIRLen = 9, IRPrint = 0x0011
TotalIRLen = 9, IRPrint = 0x0011
Found Cortex-M7 r0p1, Little endian.
FPUnit: 8 code (BP) slots and 0 literal slots
CoreSight components:
ROMTbl 0 @ E00FD000
ROMTbl 0 [0]: 00001000, CID: B105100D, PID: 000BB4C8 ROM Table
ROMTbl 1 @ E00FE000
ROMTbl 1 [0]: 00001000, CID: B105100D, PID: 000BB4C7 ROM Table
ROMTbl 2 @ E00FF000
ROMTbl 2 [0]: FFF0F000, CID: B105E00D, PID: 000BB00C SCS
ROMTbl 2 [1]: FFF02000, CID: B105E00D, PID: 000BB002 DWT
ROMTbl 2 [2]: FFF03000, CID: B105E00D, PID: 000BB00E FPB
ROMTbl 2 [3]: FFF01000, CID: B105E00D, PID: 000BB001 ITM
ROMTbl 1 [1]: FFF43000, CID: B105900D, PID: 000BB975 ETM-M7
ROMTbl 0 [1]: FFF43000, CID: B105900D, PID: 000BB9A9 TPIU-M7
Cache: Separate I- and D-cache.
I-Cache L1: 4 KB, 64 Sets, 32 Bytes/Line, 2-Way
D-Cache L1: 4 KB, 32 Sets, 32 Bytes/Line, 4-Way
Found 2 JTAG devices, Total IRLen = 9:
 #0 Id: 0x5BA00477, IRLen: 04, IRPrint: 0x1, CoreSight JTAG-DP (ARM)
 #1 Id: 0x06449041, IRLen: 05, Unknown device
Cortex-M7 identified.
J-Link>loadbin /home/dennis/workspace-openstm/Test/Debug/Test.bin 0
Downloading file 
[/home/dennis/workspace-openstm/Test/Debug/Test.bin]...O.K.

Das sieht doch eigentlich so aus als ob er das alles richtig in den 
Flash schreibt oder übersehe ich was? Ein einfaches Testprogramm nach 
dem generierten Code von CubeMX ist folgendes Programm:
1
HAL_Delay(100);
2
HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_2);
3
HAL_Delay(100);
4
HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_3);
5
HAL_Delay(100);
6
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);

Hab ich irgendetwas übersehen bei der Arbeit mit CubeMX und OpenSTM?
Wäre um jede Idee dankbar!
Gast #4565047
Lesenswert?

Also im QubeMX bin ich auf Bypass und HSE ist auf 25MHz gesetzt. Der 
Oszillator schwingt auch genau mit dieser Frequenz. Dachte auch erst ich 
hab hier was falsch eingestellt, aber das sollte dann doch so passen 
oder? Mich hat es etwas verwundert, dass er selbst bei Oszillator die 
beiden Pins grün markiert hat, aber das ist ja nur Darstellung.
Gast #4565321
Lesenswert?

hp-freund schrieb:
> Habe keine Ahnung von J-Link, aber bist Du sicher das loadbin durch
> Angabe der 0 weiß das es eigentlich auf 0x08000000 schreiben soll?

Okay, ja da hätte ich auch selbst drauf kommen können :(

J-Link>loadbin 
/home/dennis/workspace-openstm/F7-Display/SW4STM32/F7-Display/Debug/F7-D 
isplay.bin  0x08000000
Downloading file 
[/home/dennis/workspace-openstm/F7-Display/SW4STM32/F7-Display/Debug/F7- 
Display.bin]...Comparing  flash   [100%] Done.
Erasing flash     [100%] Done.
Programming flash [100%] Done.
Verifying flash   [100%] Done.
J-Link: Flash download: Flash programming performed for 1 range (32768 
bytes)
J-Link: Flash download: Total time needed: 0.813s (Prepare: 0.065s, 
Compare: 0.010s, Erase: 0.378s, Program: 0.341s, Verify: 0.000s, 
Restore: 0.016s)
O.K.
J-Link>

Jetzt schreibt er zumindest mal offensichtlich in den Flash. Aber 
blinken tut bei mir immer noch nichts.
Ich erzeuge den Code als SW4STM32 Projekt und importiere ihn dann in 
OpenSTM32. Das hatte ich mal irgendwo gelesen und er kann nach dem 
einfügen den Code einwandfrei compilieren. Irgendwo fehlt leider noch 
was :(

Kommando zurück: Die SD-Karte einmal neu mit FAT16 bespielen, sodass der 
Controller sich nicht mehr in der Initialisierung aufhängt (Vermutung) 
hat geholfen. Jetzt läuft alles nach Plan. Flashen auf die Adresse 
0x08000000 und das erzeugte Projekt als SW4STM32 in OpenSTM32 
importieren und alles läuft!
Gast #4565347
Lesenswert?

Also so langsam glaub ich es waren, wie doch so oft, mehrere Fehler auf 
einmal. Die SD-Karte war auf jeden Fall nicht formatiert / zerstört.
Dann sollte über JLinkExe immer ein Reset durchgeführt werden. Dieser 
passiert nicht automatisch, sondern muss extra eingeleitet werden. Und 
ja Flash ab Adresse 0x08000000 kommt noch dazu.
Initialisiert wird ja alles über CubeMX generierten Code.

Edit:
Hier mal angehängt noch ein paar Zeilen wie man ganz bequem über ein 
j-link einfach seinen Controller flasht. Unter Linux getestet und 
funktioniert einwandfrei. Ggf. an das eigene Projekt anpassen.

Danke nochmal!
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren