From cde1b7999f0c5c4c91253edea4a5a80a0f0ce6c1 Mon Sep 17 00:00:00 2001 From: Ebersold Andre Date: Thu, 25 May 2023 16:15:14 +0200 Subject: [PATCH] Start with ARM STM32F boards --- rules/gcc-arm-none-eabi.cmake | 39 +++++++++++++++ rules/gcc-arm-none-eabi_cfg.cmake | 79 +++++++++++++++++++++++++++++++ rules/macros.cmake | 14 ++++++ 3 files changed, 132 insertions(+) create mode 100644 rules/gcc-arm-none-eabi.cmake create mode 100644 rules/gcc-arm-none-eabi_cfg.cmake create mode 100644 rules/macros.cmake diff --git a/rules/gcc-arm-none-eabi.cmake b/rules/gcc-arm-none-eabi.cmake new file mode 100644 index 0000000..cf3ff88 --- /dev/null +++ b/rules/gcc-arm-none-eabi.cmake @@ -0,0 +1,39 @@ +set(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_SYSTEM_PROCESSOR arm) + +set(TOOLCHAIN_NAME gcc-arm-none-eabi) +set(TOOLCHAIN_SHORT_NAME gcc) + +set(TRAIT_GCC 1) + +set(CMAKE_C_FLAGS "-std=c11" CACHE STRING "") +set(CMAKE_CXX_FLAGS "-std=c++11" CACHE STRING "") + +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) + +set(PRESIDENTE_TOOLDISK_ROOT ${CMAKE_CURRENT_LIST_DIR}/..) + +set(PRESIDENTE_TOOLCHAIN_ROOT "${PRESIDENTE_TOOLDISK_ROOT}/gcc-arm-none-eabi") +set(PRESIDENTE_TOOLCHAIN_BIN_PATH "${PRESIDENTE_TOOLCHAIN_ROOT}/bin") +set(CMAKE_ASM_COMPILER ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-as.exe) +set(CMAKE_C_COMPILER ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-gcc.exe) +set(CMAKE_CXX_COMPILER ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-g++.exe) +set(CMAKE_LINKER ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-g++.exe) +set(PRESIDENTE_TOOLCHAIN_DEBUGGER ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-gdb.exe) +set(TOOLCHAIN_SIZE_REPORTER ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-size.exe) +set(TOOLCHAIN_NM ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-nm.exe) +set(TOOLCHAIN_OBJCOPY ${PRESIDENTE_TOOLCHAIN_BIN_PATH}/arm-none-eabi-objcopy.exe) + +set(TOOLCHAIN_INCLUDE_PATHS "${PRESIDENTE_TOOLCHAIN_ROOT}/arm-none-eabi/include/c++/7.2.1" + "${PRESIDENTE_TOOLCHAIN_ROOT}/arm-none-eabi/include" + "${PRESIDENTE_TOOLCHAIN_ROOT}/arm-none-eabi/include/c++/7.2.1/arm-none-eabi" + "${PRESIDENTE_TOOLCHAIN_ROOT}/arm-none-eabi/include/c++/7.2.1/backward" + "${PRESIDENTE_TOOLCHAIN_ROOT}/lib/gcc/arm-none-eabi/7.2.1/include" + "${PRESIDENTE_TOOLCHAIN_ROOT}/lib/gcc/arm-none-eabi/7.2.1/include-fixed") + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY) + +set(BUILD_SHARED_LIBS OFF) \ No newline at end of file diff --git a/rules/gcc-arm-none-eabi_cfg.cmake b/rules/gcc-arm-none-eabi_cfg.cmake new file mode 100644 index 0000000..4105bb4 --- /dev/null +++ b/rules/gcc-arm-none-eabi_cfg.cmake @@ -0,0 +1,79 @@ +set(MODULE4G_COMPILER_FLAGS_DEBUG -ggdb + -g3 + -O0 + -Wall + -Wextra + -Warray-bounds + -mcpu=cortex-m4 + -mthumb + -mlittle-endian + -mfloat-abi=hard + -mfpu=fpv4-sp-d16 + -specs=${FWB_SPECS_NAME} + -specs=nosys.specs + -DSTM32WB55xx + -DDEBUG=1 + -DSYSVIEW_DEVICE_NAME=\"STM32WB55\" + -DSYSVIEW_RAM_BASE=0x20000000 + -D__ARM_ARCH_FPV4_SP_D16__ + -D__ARM_ARCH_7EM__ + -D__SIZEOF_WCHAR_T=4 + -ffunction-sections + -fdata-sections + -fno-exceptions + -fno-unwind-tables + -DENABLE_WATCHDOG + #ONLY FOR TEMPORARY NETWORK VERIFICATION + -DTHINGSTREAM_DEBUG + #ONLY FOR TESTS PURPOSES TO PRINT LOGS ON SERIAL -DREALTIME_LOGGING + -DREALTIME_LOGGING + #ONLY FOR TESTS PURPOSES TO PRINT POWER MANAGEMENT MEASUREMENTS ON SERIAL + -DTRACE_PWR_MGMT_MEASUREMENTS + #USE FLAG BELOW ONLY WHEN DEBUGGER IS CONNECTED TO TARGET + -DENABLE_DEBUG_IN_SLEEP + ) + +set(FWB_COMPILER_FLAGS_RELEASE -O3 + -s + -Wall + -Wextra + -Warray-bounds + -mcpu=cortex-m4 + -mthumb + -mlittle-endian + -mfloat-abi=hard + -mfpu=fpv4-sp-d16 + -specs=${FWB_SPECS_NAME} + -specs=nosys.specs + -DSTM32WB55xx + -DNDEBUG + -DSYSVIEW_DEVICE_NAME=\"STM32WB55\" + -DSYSVIEW_RAM_BASE=0x20000000 + -D__ARM_ARCH_FPV4_SP_D16__ + -D__ARM_ARCH_7EM__ + -D__SIZEOF_WCHAR_T=4 + -ffunction-sections + -fdata-sections + -fno-exceptions + -fno-unwind-tables + -DENABLE_WATCHDOG + ) + +set(FWB_COMPILER_DEFS_DEBUG + ${FWB_BOARD_COMPILATION_FLAGS} + FWB_TRAIT_DEBUG + ) + +set(FWB_COMPILER_DEFS_RELEASE + ${FWB_BOARD_COMPILATION_FLAGS} + ) + +set(FWB_LINKER_SCRIPT_PATH ${CMAKE_SOURCE_DIR}/linker/gcc/stm32wb55xx_flash_cm4.ld) + + +set(LINKER_FLAGS + --no-exceptions + -Wl,--gc-sections + -Wl,-Map,./output/${FWB_PROJECT_NAME}.map + -T ${FWB_LINKER_SCRIPT_PATH} + ) diff --git a/rules/macros.cmake b/rules/macros.cmake new file mode 100644 index 0000000..c3f9d43 --- /dev/null +++ b/rules/macros.cmake @@ -0,0 +1,14 @@ +function(FWB_MAKE_PROJECT_REPORT) + STRING(APPEND PROJECT_REPORT "Project report for ${MODULE4G_PROJECT_NAME}\n") + # STRING(APPEND PROJECT_REPORT "Selected device : ${MODULE4G_TRAIT_DEVICENAME}\n") + # STRING(APPEND PROJECT_REPORT "Selected device : ${MODULE4G_TRAIT_DEVICENAME}\n") + FILE(WRITE ${CMAKE_BINARY_DIR}/build_report.txt ${PROJECT_REPORT}) +endfunction() + +macro(build_linker_flags_string output_var_name) + foreach(flag_set IN ITEMS ${ARGN}) + foreach(flag IN ITEMS ${flag_set}) + string(APPEND ${output_var_name} ${flag} " ") + endforeach() + endforeach() +endmacro() -- 2.30.2