mikrocontroller.net

Forum: Compiler & IDEs Probleme beim Übersetzen


Autor: markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

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

Autor: M.K. B. (mkbit)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christopher Johnson (christopher_j23)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.