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
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.
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
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.
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
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
eventuell mal System Workbench anschauen? Geht bei mir zusammen mit CubeMX ohne Probleme... http://www.openstm32.org/HomePage
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.