Forum: Mikrocontroller und Digitale Elektronik CubeMX mit Coocox verwenden


von Michael B. (michael1990)


Lesenswert?

Hallo liebe Community,

ich bin gerade bei dem Versuch die Konfiguration die ich in STM32 CubeMX 
für mein STM32F4 Discoveryboard gemacht habe irgendwie funktionell in 
die IDE Coocox zu bekommen.

Die Source und Include Files einzubinden, das Linkerfile anpassen und 
noch ein paar andere Dinge habe ich gemacht, er beginnt auch damit zu 
Compilieren, aber spätestens beim Linken bricht er ab mit der 
Fehlermeldung:

GCC HOME: C:\Program Files (x86)\GNU Tools ARM Embedded\4.9 2015q3\bin
compile:
    [mkdir] Skipping 
C:\Users\Michael\Desktop\Testprojekt\Test\test\Debug\bin because it 
already exists.
    [mkdir] Skipping 
C:\Users\Michael\Desktop\Testprojekt\Test\test\Debug\obj because it 
already exists.
       [cc] Starting dependency analysis for 22 files.
       [cc] Parsing ..\..\..\Inc\stm32f4xx_hal_conf.h
       [cc] Parsing 
..\..\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f405xx.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f415xx.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f407xx.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f417xx.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f427xx.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f437xx.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f429xx.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f439xx.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f401xc.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f401xe.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f410tx.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f410cx.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f410rx.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f411xe.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f446xx.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f469xx.h
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f479xx.h
       [cc] Parsing ..\..\..\Drivers\CMSIS\Include\core_cm4.h
       [cc] Parsing ..\..\..\Drivers\CMSIS\Include\core_cmInstr.h
       [cc] Parsing ..\..\..\Drivers\CMSIS\Include\core_cmFunc.h
       [cc] Parsing ..\..\..\Drivers\CMSIS\Include\core_cmSimd.h
       [cc] Parsing 
..\..\..\components\coocox-master\C_library\source\syscalls.c
       [cc] Parsing 
..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\gcc\startup_ 
stm32f407xx.s
       [cc] 22 files are up to date.
       [cc] 0 files to be recompiled from dependency analysis.
       [cc] 0 total files to be compiled.
       [cc] 0 total files to be compiled.
       [cc] Starting link
       [cc] arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -g2 
-Wl,-Map=Test.map -O0 -Wl,--gc-sections 
-LC:\Users\Michael\AppData\Roaming\CooCox\CoIDE\configuration\ProgramDat 
a\Test 
-Wl,-TC:\Users\Michael\AppData\Roaming\CooCox\CoIDE\configuration\Progra 
mData\Test/arm-gcc-link.ld  -g -o Test.elf ..\obj\stm32f4xx_hal_tim.o 
..\obj\stm32f4xx_hal_flash.o ..\obj\stm32f4xx_hal.o 
..\obj\stm32f4xx_hal_rcc.o ..\obj\stm32f4xx_hal_tim_ex.o 
..\obj\stm32f4xx_hal_rcc_ex.o ..\obj\startup_stm32f407xx.o 
..\obj\stm32f4xx_hal_msp.o ..\obj\stm32f4xx_hal_dma.o 
..\obj\stm32f4xx_hal_pwr.o ..\obj\system_stm32f4xx.o 
..\obj\stm32f4xx_hal_cortex.o ..\obj\stm32f4xx_hal_pwr_ex.o 
..\obj\stm32f4xx_hal_flash_ex.o ..\obj\stm32f4xx_it.o ..\obj\syscalls.o 
..\obj\stm32f4xx_hal_flash_ramfunc.o ..\obj\stm32f4xx_hal_dma_ex.o 
..\obj\stm32f4xx_hal_rtc_ex.o ..\obj\stm32f4xx_hal_rtc.o 
..\obj\stm32f4xx_hal_gpio.o ..\obj\main.o
       [cc] ..\obj\startup_stm32f407xx.o: In function `LoopFillZerobss':
       [cc] 
C:\Users\Michael\Desktop\Testprojekt\Test\Drivers\CMSIS\Device\ST\STM32F 
4xx\Source\Templates\gcc/startup_stm32f407xx.s:80:  undefined reference 
to `_estack'
       [cc] ..\obj\startup_stm32f407xx.o:(.isr_vector+0x0): undefined 
reference to `_estack'
       [cc] collect2.exe: error: ld returned 1 exit status

Das ist die komplette Ausgabe des Builds.

Im main.c steht aktuell außer der Ausgabe die CubeMX macht absolut 
nichts selbst geschriebenes.

Leider kann ich mit dem Error wenig anfangen, da ich noch nicht so tief 
in C / bzw. dem Thema stecke, trotzdem währe es super wenn ich für die 
Konfig des Boards nicht jedesmal etliche Stunden arbeite und es mit dem 
Tool hinbekommen würde. Zumal die Arbeit mit RTOS und Ethernet in 
Planung ist, da währe mir das schon ganz lieb wenn es den funktionieren 
würde.

Ich hoffe jemand von euch kann mir hierbei weiterhelfen.

Mit freundlichen Grüßen
Michael

von Sebastian E. (sbe_15)


Lesenswert?

Die startup_stm32f407xx.c oder .S verwendet die undefinierte Variable 
"_estack", welche, denke ich, die Adresse des Stackendes ist. 
Typischerweise wird diese im Linkerskript definiert (arm-gcc-link.ld). 
Schau mal da rein, evtl. heißt die Variable im Linkerskript anders.

von Michael B. (michael1990)


Angehängte Dateien:

Lesenswert?

Ich hab eben mal nachgeschaut, die angehängt Datei ist mein 
Linkerscript, es befindet sich darin die aufgerufene Variable und ihr 
wird auch ein Wert zugewiesen. Oder hab ich jetzt irgendwas übersehen?

Gruß Michael

von sbe_15 (Gast)


Lesenswert?

Moin, schau noch mal in deinen Build-Einstellungen nach. Laut deinem Log 
wird 
"C:\Users\Michael\AppData\Roaming\CooCox\CoIDE\configuration\ProgramData 
\Test/arm-gcc-link.ld"  verwendet.

von Michael B. (michael1990)


Lesenswert?

Hi Leute,
ich habs jetzt mehrere Tage lang versucht, egal welchen Fehler ich 
irgendwo irgendwie erfolgreich behoben hatte hat sich ein anderer Fehler 
irgendwo aufgetan. Ich hab mittlerweile die Faxen dick mit Coocox.

Ich werd in Zukunft bei IAR Workbench bleiben, damit kann ich in Cube MX 
direkt meine Konfig erstellen und habe innerhalb weniger Minuten alles 
richtig eingestellt und kann mich an die eigentliche Funktion des 
Programms machen.

Falls wer zufällig weis wieviel eine Lizenz kostet für Privatpersonen 
sodass die 32kb Grenze aufgehoben wird, währe das sehr interessant für 
mich.

Gruß Michael

von Marc (Gast)


Lesenswert?

Hallo,
es gibt keine speziellen Lizenzen für private Personen.
Du musst eine normale einzelplatz Lizenz erwerben.
Sofern ich mich erinnere ~3000 €


Aber am besten nochmal den Vertrieb fragen.
Gruß
Marc

von Justus S. (jussa)


Lesenswert?

eventuell mal System Workbench anschauen? Geht bei mir zusammen mit 
CubeMX ohne Probleme...
http://www.openstm32.org/HomePage

von Tom P. (tom_p89)


Lesenswert?

Hallo,
wenn du Coocox zusammen mit der CubeMX verwenden möchtest musst du ein 
Projekt mit COOCOX erstellen. Unter Peripherals wällst du NUR M4 CMSIS 
Core und CMSIS BOOT aus, anschließend löschst du alles was Coocox im 
Projektverzeichnis erstellt AUßER 
cmsis_boot/startup/startup_stm32f4xx.c. Danach kannst du die Dateien 
hinzufügen die du mit CubeMX erstellt hast. Die Datei 
"startup_stm32f407xx.c" musst du dann natürlich aus dem gcc Ordner 
löschen. Anschließend musst du unter Configuration -> Compile -> defined 
Symbols noch USE_HAL_DRIVER und STM32F401xC (je nachdem welchen du hast) 
hinzufügen.
Ist ein bisschen umständlich aber danach funktioniert alles.

Grüße,

Tom

von Pete K. (pete77)


Lesenswert?

Eventuell ist Atollic TrueStudio eine Alternative? Ist kostenlos ohne 
Beschränkung einsetzbar.

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.