Gast
#5012466
Hallo, ich versuche mich an der FPU des STM32F4 mit CooCox und 'gcc-arm-none-eabi'. Die Multiplikation zweier Float-Zahlen aus der 'main.c' im Anhang funktioniert und erzeugt im Disassembler den Befehl 08000288: vmul.f32 s15, s14, s15 Jedoch wird bei 'sqrtf()' die FPU anscheinend nicht benutzt, denn der Disassembler zeigt 08000294: bl 0x8000570 <sqrtf> statt vsqrt.f32 wie es lt. http://www.atmel.com/Images/Atmel-42144-SAM4E-FPU-and-CMSIS-DSP-Library_AP-Note_AT03157.pdf und Beitrag "Re: Floating Pointing Unit STM32F4" eigentlich sein sollte. Ich benutze 'gcc-arm-none-eabi 5.4'. Als libm.a verwende ich die aus dem Verzeichnis \arm-none-eabi\lib\armv7e-m\fpu Andere Versuche mit \arm-none-eabi\lib\fpu\libm.a \arm-none-eabi\lib\armv7e-m\fpu\libm.a \arm-none-eabi\lib\armv7-m\libm.a \arm-none-eabi\lib\armv7-ar\thumb\fpu\libm.a \arm-none-eabi\lib\armv7e-m\fpu\fpv5-d16\libm.a bringen bestenfalls das gleiche Ergebnis, in manchen Fällen läuft auch das Programm nicht mehr oder das Kompilieren/Linken bricht mit einer Fehlermeldung ab. Ich hatte irgendwo gelesen, dass die o.g. \arm-none-eabi\lib\armv7e-m\fpu\libm.a benutzt werden soll. Allerdings ist ARMv7E-M meines Wissens die Architektur des Cortex-M7. Die Architektur des Cortex-M4 ist lt. https://de.wikipedia.org/wiki/ARM-Architektur die ARMv7-M. Ein Verzeichnis \arm-none-eabi\lib\armv7-m\fpu ist aber leider bei mir nicht vorhanden. Kann mir jemand helfen? Gruß Dirk P.S.: Compileraufruf: arm-none-eabi-gcc -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wall -ffunction-sections -g -O0 -c -DSTM32F407VG -DSTM32F4XX -DUSE_STDPERIPH_DRIVER -D__ASSEMBLY__ -D__FPU_USED -IC:\CooCox\CoIDE\workspace\Testprojekt_02 -IC:\CooCox\CoIDE\workspace\Testprojekt_02\cmsis_boot -IC:\CooCox\CoIDE\workspace -IC:\CooCox\CoIDE\workspace\Testprojekt_02\cmsis_lib -IC:\CooCox\CoIDE\workspace\Testprojekt_02\cmsis -IC:\CooCox\CoIDE\workspace\Testprojekt_02\cmsis_lib\include C:\CooCox\CoIDE\workspace\Testprojekt_02\main.c Linkeraufruf: arm-none-eabi-gcc -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wall -g -nostartfiles -Wl,-Map=Testprojekt_02.map -O0 -Wl,--gc-sections -LC:\CooCox\CoIDE\configuration\ProgramData\Testprojekt_02 -Wl,-TC:\CooCox\CoIDE\configuration\ProgramData\Testprojekt_02/arm-gcc-l ink.ld -g -o Testprojekt_02.elf ..\obj\startup_stm32f4xx.o ..\obj\main.o ..\obj\stm32f4xx_rcc.o ..\obj\stm32f4xx_gpio.o ..\obj\system_stm32f4xx.o -L..\..\.. -lm