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
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.
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.