clang samd51 compile but does not run, rom is correct, but ram is lacking bss. Got stkerr -> hardfault
This commit is contained in:
@@ -7,7 +7,11 @@ if (TOOLCHAIN STREQUAL "gcc")
|
|||||||
set(FREERTOS_PORT GCC_ARM_CM0 CACHE INTERNAL "")
|
set(FREERTOS_PORT GCC_ARM_CM0 CACHE INTERNAL "")
|
||||||
|
|
||||||
elseif (TOOLCHAIN STREQUAL "clang")
|
elseif (TOOLCHAIN STREQUAL "clang")
|
||||||
message(FATAL_ERROR "Clang is not supported for this target")
|
set(TOOLCHAIN_COMMON_FLAGS
|
||||||
|
--target=arm-none-eabi
|
||||||
|
-mcpu=cortex-m0plus
|
||||||
|
)
|
||||||
|
set(FREERTOS_PORT GCC_ARM_CM0 CACHE INTERNAL "")
|
||||||
|
|
||||||
elseif (TOOLCHAIN STREQUAL "iar")
|
elseif (TOOLCHAIN STREQUAL "iar")
|
||||||
set(TOOLCHAIN_COMMON_FLAGS
|
set(TOOLCHAIN_COMMON_FLAGS
|
||||||
|
@@ -7,7 +7,11 @@ if (TOOLCHAIN STREQUAL "gcc")
|
|||||||
set(FREERTOS_PORT GCC_ARM_CM23_NTZ_NONSECURE CACHE INTERNAL "")
|
set(FREERTOS_PORT GCC_ARM_CM23_NTZ_NONSECURE CACHE INTERNAL "")
|
||||||
|
|
||||||
elseif (TOOLCHAIN STREQUAL "clang")
|
elseif (TOOLCHAIN STREQUAL "clang")
|
||||||
message(FATAL_ERROR "Clang is not supported for this target")
|
set(TOOLCHAIN_COMMON_FLAGS
|
||||||
|
--target=arm-none-eabi
|
||||||
|
-mcpu=cortex-m23
|
||||||
|
)
|
||||||
|
set(FREERTOS_PORT GCC_ARM_CM23_NTZ_NONSECURE CACHE INTERNAL "")
|
||||||
|
|
||||||
elseif (TOOLCHAIN STREQUAL "iar")
|
elseif (TOOLCHAIN STREQUAL "iar")
|
||||||
set(TOOLCHAIN_COMMON_FLAGS
|
set(TOOLCHAIN_COMMON_FLAGS
|
||||||
|
@@ -6,7 +6,11 @@ if (TOOLCHAIN STREQUAL "gcc")
|
|||||||
set(FREERTOS_PORT GCC_ARM_CM3 CACHE INTERNAL "")
|
set(FREERTOS_PORT GCC_ARM_CM3 CACHE INTERNAL "")
|
||||||
|
|
||||||
elseif (TOOLCHAIN STREQUAL "clang")
|
elseif (TOOLCHAIN STREQUAL "clang")
|
||||||
message(FATAL_ERROR "Clang is not supported for this target")
|
set(TOOLCHAIN_COMMON_FLAGS
|
||||||
|
--target=arm-none-eabi
|
||||||
|
-mcpu=cortex-m3
|
||||||
|
)
|
||||||
|
set(FREERTOS_PORT GCC_ARM_CM3 CACHE INTERNAL "")
|
||||||
|
|
||||||
elseif (TOOLCHAIN STREQUAL "iar")
|
elseif (TOOLCHAIN STREQUAL "iar")
|
||||||
set(TOOLCHAIN_COMMON_FLAGS
|
set(TOOLCHAIN_COMMON_FLAGS
|
||||||
|
@@ -8,7 +8,12 @@ if (TOOLCHAIN STREQUAL "gcc")
|
|||||||
set(FREERTOS_PORT GCC_ARM_CM33_NTZ_NONSECURE CACHE INTERNAL "")
|
set(FREERTOS_PORT GCC_ARM_CM33_NTZ_NONSECURE CACHE INTERNAL "")
|
||||||
|
|
||||||
elseif (TOOLCHAIN STREQUAL "clang")
|
elseif (TOOLCHAIN STREQUAL "clang")
|
||||||
message(FATAL_ERROR "Clang is not supported for this target")
|
set(TOOLCHAIN_COMMON_FLAGS
|
||||||
|
--target=arm-none-eabi
|
||||||
|
-mcpu=cortex-m33
|
||||||
|
-mfpu=fpv5-sp-d16
|
||||||
|
)
|
||||||
|
set(FREERTOS_PORT GCC_ARM_CM33_NTZ_NONSECURE CACHE INTERNAL "")
|
||||||
|
|
||||||
elseif (TOOLCHAIN STREQUAL "iar")
|
elseif (TOOLCHAIN STREQUAL "iar")
|
||||||
set(TOOLCHAIN_COMMON_FLAGS
|
set(TOOLCHAIN_COMMON_FLAGS
|
||||||
|
@@ -31,11 +31,13 @@ if (TOOLCHAIN STREQUAL "gcc")
|
|||||||
-Wl,--gc-sections
|
-Wl,--gc-sections
|
||||||
-Wl,--cref
|
-Wl,--cref
|
||||||
)
|
)
|
||||||
|
|
||||||
elseif (TOOLCHAIN STREQUAL "iar")
|
elseif (TOOLCHAIN STREQUAL "iar")
|
||||||
#list(APPEND TOOLCHAIN_COMMON_FLAGS)
|
#list(APPEND TOOLCHAIN_COMMON_FLAGS)
|
||||||
list(APPEND TOOLCHAIN_EXE_LINKER_FLAGS
|
list(APPEND TOOLCHAIN_EXE_LINKER_FLAGS
|
||||||
--diag_suppress=Li065
|
--diag_suppress=Li065
|
||||||
)
|
)
|
||||||
|
|
||||||
elseif (TOOLCHAIN STREQUAL "clang")
|
elseif (TOOLCHAIN STREQUAL "clang")
|
||||||
list(APPEND TOOLCHAIN_COMMON_FLAGS
|
list(APPEND TOOLCHAIN_COMMON_FLAGS
|
||||||
-fdata-sections
|
-fdata-sections
|
||||||
@@ -45,7 +47,7 @@ elseif (TOOLCHAIN STREQUAL "clang")
|
|||||||
list(APPEND TOOLCHAIN_EXE_LINKER_FLAGS
|
list(APPEND TOOLCHAIN_EXE_LINKER_FLAGS
|
||||||
-Wl,--print-memory-usage
|
-Wl,--print-memory-usage
|
||||||
-Wl,--gc-sections
|
-Wl,--gc-sections
|
||||||
#-Wl,--cref
|
-Wl,--cref
|
||||||
)
|
)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
@@ -219,8 +219,9 @@ function(family_configure_common TARGET RTOS)
|
|||||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0)
|
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0)
|
||||||
target_link_options(${TARGET} PUBLIC "LINKER:--no-warn-rwx-segments")
|
target_link_options(${TARGET} PUBLIC "LINKER:--no-warn-rwx-segments")
|
||||||
endif ()
|
endif ()
|
||||||
endif()
|
elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
||||||
if (CMAKE_C_COMPILER_ID STREQUAL "IAR")
|
target_link_options(${TARGET} PUBLIC "LINKER:-Map=$<TARGET_FILE:${TARGET}>.map")
|
||||||
|
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
|
||||||
target_link_options(${TARGET} PUBLIC "LINKER:--map=$<TARGET_FILE:${TARGET}>.map")
|
target_link_options(${TARGET} PUBLIC "LINKER:--map=$<TARGET_FILE:${TARGET}>.map")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
include_guard()
|
include_guard()
|
||||||
|
|
||||||
set(SDK_DIR ${TOP}/hw/mcu/microchip/samd51)
|
set(SDK_DIR ${TOP}/hw/mcu/microchip/samd51)
|
||||||
|
set(CMSIS_5 ${TOP}/lib/CMSIS_5)
|
||||||
|
|
||||||
# include board specific
|
# include board specific
|
||||||
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
|
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
|
||||||
@@ -18,6 +19,16 @@ set(OPENOCD_OPTION "-f interface/cmsis-dap.cfg -c \"transport select swd\" -c \"
|
|||||||
# only need to be built ONCE for all examples
|
# only need to be built ONCE for all examples
|
||||||
function(add_board_target BOARD_TARGET)
|
function(add_board_target BOARD_TARGET)
|
||||||
if (NOT TARGET ${BOARD_TARGET})
|
if (NOT TARGET ${BOARD_TARGET})
|
||||||
|
set(LD_FILE_Clang ${LD_FILE_GNU})
|
||||||
|
if (NOT DEFINED LD_FILE_${CMAKE_C_COMPILER_ID})
|
||||||
|
message(FATAL_ERROR "LD_FILE_${CMAKE_C_COMPILER_ID} not defined")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if (NOT DEFINED STARTUP_FILE_${CMAKE_C_COMPILER_ID})
|
||||||
|
set(STARTUP_FILE_GNU ${SDK_DIR}/gcc/gcc/startup_samd51.c)
|
||||||
|
set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
|
||||||
|
endif ()
|
||||||
|
|
||||||
add_library(${BOARD_TARGET} STATIC
|
add_library(${BOARD_TARGET} STATIC
|
||||||
${SDK_DIR}/gcc/system_samd51.c
|
${SDK_DIR}/gcc/system_samd51.c
|
||||||
${SDK_DIR}/hpl/gclk/hpl_gclk.c
|
${SDK_DIR}/hpl/gclk/hpl_gclk.c
|
||||||
@@ -25,6 +36,7 @@ function(add_board_target BOARD_TARGET)
|
|||||||
${SDK_DIR}/hpl/osc32kctrl/hpl_osc32kctrl.c
|
${SDK_DIR}/hpl/osc32kctrl/hpl_osc32kctrl.c
|
||||||
${SDK_DIR}/hpl/oscctrl/hpl_oscctrl.c
|
${SDK_DIR}/hpl/oscctrl/hpl_oscctrl.c
|
||||||
${SDK_DIR}/hal/src/hal_atomic.c
|
${SDK_DIR}/hal/src/hal_atomic.c
|
||||||
|
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
|
||||||
)
|
)
|
||||||
target_include_directories(${BOARD_TARGET} PUBLIC
|
target_include_directories(${BOARD_TARGET} PUBLIC
|
||||||
${SDK_DIR}/
|
${SDK_DIR}/
|
||||||
@@ -34,29 +46,22 @@ function(add_board_target BOARD_TARGET)
|
|||||||
${SDK_DIR}/hal/utils/include
|
${SDK_DIR}/hal/utils/include
|
||||||
${SDK_DIR}/hpl/port
|
${SDK_DIR}/hpl/port
|
||||||
${SDK_DIR}/hri
|
${SDK_DIR}/hri
|
||||||
${SDK_DIR}/CMSIS/Include
|
${CMSIS_5}/CMSIS/Core/Include
|
||||||
)
|
)
|
||||||
|
|
||||||
update_board(${BOARD_TARGET})
|
update_board(${BOARD_TARGET})
|
||||||
|
|
||||||
if (NOT DEFINED LD_FILE_${CMAKE_C_COMPILER_ID})
|
|
||||||
message(FATAL_ERROR "LD_FILE_${CMAKE_C_COMPILER_ID} not defined")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (NOT DEFINED STARTUP_FILE_${CMAKE_C_COMPILER_ID})
|
|
||||||
set(STARTUP_FILE_GNU ${SDK_DIR}/gcc/gcc/startup_samd51.c)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
target_sources(${BOARD_TARGET} PRIVATE
|
|
||||||
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
|
|
||||||
)
|
|
||||||
|
|
||||||
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||||
target_link_options(${BOARD_TARGET} PUBLIC
|
target_link_options(${BOARD_TARGET} PUBLIC
|
||||||
"LINKER:--script=${LD_FILE_GNU}"
|
"LINKER:--script=${LD_FILE_GNU}"
|
||||||
-nostartfiles
|
-nostartfiles
|
||||||
--specs=nosys.specs --specs=nano.specs
|
--specs=nosys.specs --specs=nano.specs
|
||||||
)
|
)
|
||||||
|
elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
||||||
|
target_link_options(${BOARD_TARGET} PUBLIC
|
||||||
|
"LINKER:--script=${LD_FILE_Clang}"
|
||||||
|
#"LINKER:-lcrt0"
|
||||||
|
)
|
||||||
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
|
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
|
||||||
target_link_options(${BOARD_TARGET} PUBLIC
|
target_link_options(${BOARD_TARGET} PUBLIC
|
||||||
"LINKER:--config=${LD_FILE_IAR}"
|
"LINKER:--config=${LD_FILE_IAR}"
|
||||||
|
Reference in New Issue
Block a user