Forum: Compiler & IDEs Probleme beim Übersetzen


von markus (Gast)


Lesenswert?

Hallo zusammen,

ich habe versucht folgendes Tutorial versucht auf meinem Nucleo Board 
zum Laufen zu bekommen. Darauf ist ein STM32F429ZI.

https://www.carminenoviello.com/2016/01/22/getting-started-stm32-nucleo-f746zg/

Nun habe ich es versucht das erste Mal zu übersetzen allerdings bekomme 
ich da einen Fehler beim Übersetzen:

Building file: ../system/src/cmsis/system_stm32f429.c
Invoking: GNU ARM Cross C Compiler
arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=hard 
-mfpu=fpv4-sp-d16 -Og -fmessage-length=0 -fsigned-char 
-ffunction-sections -fdata-sections -fno-move-loop-invariants -Wall 
-Wextra  -g3 -DDEBUG -DOS_USE_SEMIHOSTING -DTRACE 
-DOS_USE_TRACE_SEMIHOSTING_DEBUG -DSTM32F429xx -I"../include" 
-I"../system/include" -I"../system/include/cmsis" 
-I"../system/include/stm32f429" -I"../system/include/stm32f4xx" 
-I"../system/include/cmsis/device" 
-I"../Middlewares/Third_Party/LwIP/src/include" 
-I"../Middlewares/Third_Party/LwIP/system" 
-I"../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F" 
-I"../Middlewares/Third_Party/FreeRTOS/Source/include" 
-I"../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS" 
-I"../Middlewares/Third_Party/LwIP/src/include/lwip" 
-I"../Middlewares/Third_Party/LwIP/src/include/lwip/apps" 
-I"../Middlewares/Third_Party/LwIP/src/include/lwip/priv" 
-I"../Middlewares/Third_Party/LwIP/src/include/lwip/prot" 
-I"../Middlewares/Third_Party/LwIP/src/include/netif" 
-I"../Middlewares/Third_Party/LwIP/src/include/netif/ppp" 
-I"../Middlewares/Third_Party/LwIP/src/include/netif/ppp/polarssl" 
-I"../Middlewares/Third_Party/LwIP/src/include/posix" 
-I"../Middlewares/Third_Party/LwIP/src/include/posix/sys" 
-I"../Middlewares/Third_Party/LwIP/system/arch" -std=gnu11 -MMD -MP 
-MF"system/src/cmsis/system_stm32f429.d" 
-MT"system/src/cmsis/system_stm32f429.o" -c -o 
"system/src/cmsis/system_stm32f429.o" 
"../system/src/cmsis/system_stm32f429.c"
In file included from ../system/include/cmsis/stm32f429.h:147:0,
                 from ../system/src/cmsis/system_stm32f429.c:40:
../system/include/cmsis/core_cm4.h:153:8: error: #error "Compiler 
generates FPU instructions for a device without an FPU (check 
__FPU_PRESENT)"
       #error "Compiler generates FPU instructions for a device without 
an FPU (check __FPU_PRESENT)"
        ^
make: *** [system/src/cmsis/system_stm32f429.o] Error 1
system/src/cmsis/subdir.mk:38: recipe for target 
'system/src/cmsis/system_stm32f429.o' failed

Es scheint eine Problem mit der FPU zugeben. Was ich nicht ganz verstehe 
ist, dass in der Datei stm32f429xx.h das __FPU_PRESENT afu 1U gesetzt 
wird aber trotzdem wird der Fehler ausgegeben. Der Code ist eigentlich 
ja auch nur durch cubeMX generiert worden.

Ich muss dazusagen ich bin totaler Anfänger was das Thema 
Microcontroller angeht und dachte mit dem Tutorial wirst du es schon 
irgendwie hinbekommen, aber man sieht es ja.

Hat jemand von euch einen Tip für mich?

Danke

Gruß
Markus

von M.K. B. (mkbit)


Lesenswert?

Es sieht so aus, als ob in core_cm4.h erwartet wird, dass es eine FPU 
gibt, aber __FPU_PRESENT nicht gesetzt ist. Vermutlich includiert 
core_cm4.h deine Datei stm32f429xx.h mit dem define nicht. Es würde mich 
auch wundern, wenn eine allgemeine Datei, wie core_cm4.h einen Header 
für einen speziellen Controller includiert.

Ich würde das define __FPU_PRESENT direkt in den Compilereinstellungen 
machen, damit es dann auch allen Dateien bekannt ist.

Unter Eclipse machst du das unter:
C/C++Build->Settings->CrossARM C/C++ Compiler->Preprocessor
Dort fügst du dann unter Defined symbols __FPU_PRESENT=1 ein. Am besten 
du machst es gleich beim C und C++ Compiler.

Wenn du dann baust müsste deine Kommandozeile einen weitern Eintrag 
-D__FPU_PRESENT=1 haben.

von Christopher J. (christopher_j23)


Lesenswert?

M.K. B. schrieb:
> Vermutlich includiert
> core_cm4.h deine Datei stm32f429xx.h mit dem define nicht.

Es ist genau umgekehrt: stm32f429xx.h includiert core_cm4.h.

Warum genau der Compiler meckert ist schwer zu sagen, weil 
GNU-MCU-Eclipse im Hintergrund doch relativ viel macht, wovon man nach 
außen hin nicht unbedingt etwas mitbekommt.

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.