Start with ARM STM32F boards
authorEbersold Andre <aebersol@md2p7zxc.ad001.siemens.net>
Thu, 25 May 2023 14:15:14 +0000 (16:15 +0200)
committerEbersold Andre <aebersol@md2p7zxc.ad001.siemens.net>
Thu, 25 May 2023 14:15:14 +0000 (16:15 +0200)
rules/gcc-arm-none-eabi.cmake [new file with mode: 0644]
rules/gcc-arm-none-eabi_cfg.cmake [new file with mode: 0644]
rules/macros.cmake [new file with mode: 0644]

diff --git a/rules/gcc-arm-none-eabi.cmake b/rules/gcc-arm-none-eabi.cmake
new file mode 100644 (file)
index 0000000..cf3ff88
--- /dev/null
@@ -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 (file)
index 0000000..4105bb4
--- /dev/null
@@ -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 (file)
index 0000000..c3f9d43
--- /dev/null
@@ -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()