From febf68503cfe7771c0cccd5febaf7e273e34fe9a Mon Sep 17 00:00:00 2001 From: Yi Date: Mon, 8 Oct 2018 09:55:12 -0700 Subject: [PATCH 1/5] Add toolchain support for cortex-m7 --- c/cmake/Toolchain-gcc-arm-embedded.cmake | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/c/cmake/Toolchain-gcc-arm-embedded.cmake b/c/cmake/Toolchain-gcc-arm-embedded.cmake index b2e6b19e8e..8ce07e2c17 100644 --- a/c/cmake/Toolchain-gcc-arm-embedded.cmake +++ b/c/cmake/Toolchain-gcc-arm-embedded.cmake @@ -41,13 +41,11 @@ message(STATUS "Cross-compiling with the gcc-arm-embedded toolchain") message(STATUS "Toolchain prefix: ${CMAKE_INSTALL_PREFIX}") set(CMAKE_FIND_ROOT_PATH ${CMAKE_INSTALL_PREFIX}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) set(CMAKE_C_FLAGS "-fno-common -ffunction-sections -fdata-sections") - if (CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m4") set(CMAKE_C_FLAGS @@ -55,6 +53,13 @@ if (CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m4") "-mcpu=cortex-m4 -march=armv7e-m -mthumb" "-mfloat-abi=hard -mfpu=fpv4-sp-d16" ) +else if () + + set(CMAKE_C_FLAGS + "${CMAKE_C_FLAGS}" + "-mcpu=cortex-m7 -march=armv7e-m -mthumb" + "-mfpu=fpv5-d16 -mfloat-abi=hard" + ) elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m3") @@ -86,11 +91,12 @@ else () ) endif () + + # When we break up long strings in CMake we get semicolon # separated lists, undo this here... string(REGEX REPLACE ";" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "") -set(BUILD_SHARED_LIBS OFF) From 4e5436542147685b33eafa62247951b69f0ee3fb Mon Sep 17 00:00:00 2001 From: Yi Date: Mon, 8 Oct 2018 09:59:18 -0700 Subject: [PATCH 2/5] Added condition statement --- c/cmake/Toolchain-gcc-arm-embedded.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/c/cmake/Toolchain-gcc-arm-embedded.cmake b/c/cmake/Toolchain-gcc-arm-embedded.cmake index 8ce07e2c17..af4b5f73ed 100644 --- a/c/cmake/Toolchain-gcc-arm-embedded.cmake +++ b/c/cmake/Toolchain-gcc-arm-embedded.cmake @@ -53,7 +53,7 @@ if (CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m4") "-mcpu=cortex-m4 -march=armv7e-m -mthumb" "-mfloat-abi=hard -mfpu=fpv4-sp-d16" ) -else if () +else if (CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m7") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" From d74aa019f74d8799201e9513894066296af95944 Mon Sep 17 00:00:00 2001 From: Yi Date: Mon, 8 Oct 2018 10:12:29 -0700 Subject: [PATCH 3/5] put BUILD_SHARED_LIBS off back --- c/cmake/Toolchain-gcc-arm-embedded.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/c/cmake/Toolchain-gcc-arm-embedded.cmake b/c/cmake/Toolchain-gcc-arm-embedded.cmake index af4b5f73ed..e15d909e8a 100644 --- a/c/cmake/Toolchain-gcc-arm-embedded.cmake +++ b/c/cmake/Toolchain-gcc-arm-embedded.cmake @@ -99,4 +99,6 @@ string(REGEX REPLACE ";" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "") +set(BUILD_SHARED_LIBS OFF) + From 81ac89ad4a8146421e30940a7ec05c7316702e4d Mon Sep 17 00:00:00 2001 From: Yi Date: Mon, 8 Oct 2018 10:31:35 -0700 Subject: [PATCH 4/5] fixed syntax error --- c/cmake/Toolchain-gcc-arm-embedded.cmake | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/c/cmake/Toolchain-gcc-arm-embedded.cmake b/c/cmake/Toolchain-gcc-arm-embedded.cmake index e15d909e8a..5e8f6a92bd 100644 --- a/c/cmake/Toolchain-gcc-arm-embedded.cmake +++ b/c/cmake/Toolchain-gcc-arm-embedded.cmake @@ -44,7 +44,6 @@ set(CMAKE_FIND_ROOT_PATH ${CMAKE_INSTALL_PREFIX}) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) - set(CMAKE_C_FLAGS "-fno-common -ffunction-sections -fdata-sections") if (CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m4") @@ -53,14 +52,15 @@ if (CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m4") "-mcpu=cortex-m4 -march=armv7e-m -mthumb" "-mfloat-abi=hard -mfpu=fpv4-sp-d16" ) -else if (CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m7") + +elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m7") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" "-mcpu=cortex-m7 -march=armv7e-m -mthumb" "-mfpu=fpv5-d16 -mfloat-abi=hard" ) - + elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m3") set(CMAKE_C_FLAGS @@ -91,8 +91,6 @@ else () ) endif () - - # When we break up long strings in CMake we get semicolon # separated lists, undo this here... string(REGEX REPLACE ";" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") From c43f8352a032400eb7f3658d77145abfbaae5a4b Mon Sep 17 00:00:00 2001 From: Yi Date: Mon, 8 Oct 2018 10:34:53 -0700 Subject: [PATCH 5/5] Removed -march=armv7e-m --- c/cmake/Toolchain-gcc-arm-embedded.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/c/cmake/Toolchain-gcc-arm-embedded.cmake b/c/cmake/Toolchain-gcc-arm-embedded.cmake index 5e8f6a92bd..87e0bbaa46 100644 --- a/c/cmake/Toolchain-gcc-arm-embedded.cmake +++ b/c/cmake/Toolchain-gcc-arm-embedded.cmake @@ -57,7 +57,7 @@ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "cortex-m7") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" - "-mcpu=cortex-m7 -march=armv7e-m -mthumb" + "-mcpu=cortex-m7 -mthumb" "-mfpu=fpv5-d16 -mfloat-abi=hard" )