From 299c5924fa355de05c1e31835f2ef0a8e0c6d139 Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Sat, 18 Feb 2017 00:52:52 +0100 Subject: [PATCH] Projectkk2glider/hardware floating point (#4477) * Turn on compiler hardware floating point support for F4 targets * Fixes, works on Horus * Comment updated --- radio/src/CMakeLists.txt | 1 + radio/src/targets/common/arm/stm32/f2/CMakeLists.txt | 1 + radio/src/targets/common/arm/stm32/f4/CMakeLists.txt | 1 + radio/src/thirdparty/CoOS/OsConfig.h | 9 +++++++-- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 8972184a9..47546737f 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -434,6 +434,7 @@ if(NOT MSVC) set(CMAKE_ASM_COMPILE_OBJECT " -o ") set(COMMON_FLAGS "-mcpu=${MCU} -mthumb -fomit-frame-pointer -fverbose-asm -Wa,-ahlms=firmware.lst -O${OPT} -gdwarf-2 -DHSE_VALUE=${HSE_VALUE} -fno-exceptions -fdata-sections -ffunction-sections ${WARNING_FLAGS}") + set(COMMON_FLAGS "${COMMON_FLAGS} ${FPU_FLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_FLAGS} -Wimplicit") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_FLAGS}") diff --git a/radio/src/targets/common/arm/stm32/f2/CMakeLists.txt b/radio/src/targets/common/arm/stm32/f2/CMakeLists.txt index bc19e329a..1dec044f2 100644 --- a/radio/src/targets/common/arm/stm32/f2/CMakeLists.txt +++ b/radio/src/targets/common/arm/stm32/f2/CMakeLists.txt @@ -1,5 +1,6 @@ set(CPU_FAMILY STM32) set(MCU cortex-m3) +set(FPU_FLAGS "") set(STM32LIB_DIR ${THIRDPARTY_DIR}/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries) include_directories(${STM32LIB_DIR}/STM32F2xx_StdPeriph_Driver/inc) include_directories(${STM32LIB_DIR}/CMSIS/Device/ST/STM32F2xx/Include) diff --git a/radio/src/targets/common/arm/stm32/f4/CMakeLists.txt b/radio/src/targets/common/arm/stm32/f4/CMakeLists.txt index 73ba54944..297c76dba 100644 --- a/radio/src/targets/common/arm/stm32/f4/CMakeLists.txt +++ b/radio/src/targets/common/arm/stm32/f4/CMakeLists.txt @@ -1,5 +1,6 @@ set(CPU_FAMILY STM32) set(MCU cortex-m4) +set(FPU_FLAGS "-mfloat-abi=hard -mfpu=fpv4-sp-d16") set(STM32LIB_DIR ${THIRDPARTY_DIR}/STM32F4xx_DSP_StdPeriph_Lib_V1.4.0/Libraries) include_directories(${STM32LIB_DIR}/STM32F4xx_StdPeriph_Driver/inc) include_directories(${STM32LIB_DIR}/CMSIS/Device/ST/STM32F4xx/Include) diff --git a/radio/src/thirdparty/CoOS/OsConfig.h b/radio/src/thirdparty/CoOS/OsConfig.h index f6e66f19f..d07972914 100644 --- a/radio/src/thirdparty/CoOS/OsConfig.h +++ b/radio/src/thirdparty/CoOS/OsConfig.h @@ -43,9 +43,14 @@ /*!< -Defines chip type,cortex-m3(1),cortex-m0(2) +Defines chip type,cortex-m3(1),cortex-m0(2), cortex-m4 without FPU(1), cortex-m4 with FPU(3) */ -#define CFG_CHIP_TYPE (1) + +#if defined(STM32F4) + #define CFG_CHIP_TYPE (3) // this add support for hardware floating point unit (saves registers on stack) +#else + #define CFG_CHIP_TYPE (1) +#endif /*!< Defines the lowest priority that be assigned.