@@ -32,33 +32,28 @@ if (NOT DEFINED RHPORT_HOST_SPEED)
3232endif ()
3333
3434#------------------------------------
35- # BOARD_TARGET
35+ # Startup & Linker script
3636#------------------------------------
37- # only need to be built ONCE for all examples
38- function (add_board_target BOARD_TARGET)
39- if (TARGET ${BOARD_TARGET} )
40- return ()
41- endif ()
42-
43- # Startup & Linker script
44- set (STARTUP_FILE_GNU ${AT32_SDK_LIB} /cmsis/cm4/device_support/startup/gcc/startup_${AT32_FAMILY} .s)
45- set (STARTUP_FILE_Clang ${STARTUP_FILE_GNU} )
46- set (STARTUP_FILE_IAR ${AT32_SDK_LIB} /cmsis/cm4/device_support/startup/iar/startup_${AT32_FAMILY} .s)
47-
48- if (NOT DEFINED LD_FILE_GNU)
49- set (LD_FILE_GNU ${AT32_SDK_LIB} /cmsis/cm4/device_support/startup/gcc/linker/${MCU_LINKER_NAME} _FLASH.ld)
50- endif ()
51- set (LD_FILE_Clang ${LD_FILE_GNU} )
52- set (LD_FILE_IAR ${AT32_SDK_LIB} /cmsis/cm4/device_support/startup/iar/linker/${MCU_LINKER_NAME} .icf)
37+ set (STARTUP_FILE_GNU ${AT32_SDK_LIB} /cmsis/cm4/device_support/startup/gcc/startup_${AT32_FAMILY} .s)
38+ set (STARTUP_FILE_Clang ${STARTUP_FILE_GNU} )
39+ set (STARTUP_FILE_IAR ${AT32_SDK_LIB} /cmsis/cm4/device_support/startup/iar/startup_${AT32_FAMILY} .s)
40+ if (NOT DEFINED LD_FILE_GNU)
41+ set (LD_FILE_GNU ${AT32_SDK_LIB} /cmsis/cm4/device_support/startup/gcc/linker/${MCU_LINKER_NAME} _FLASH.ld)
42+ endif ()
43+ set (LD_FILE_Clang ${LD_FILE_GNU} )
44+ set (LD_FILE_IAR ${AT32_SDK_LIB} /cmsis/cm4/device_support/startup/iar/linker/${MCU_LINKER_NAME} .icf)
5345
46+ #------------------------------------
47+ # BOARD_TARGET
48+ #------------------------------------
49+ function (family_add_board BOARD_TARGET)
5450 add_library (${BOARD_TARGET} STATIC
5551 ${AT32_SDK_LIB} /cmsis/cm4/device_support/system_${AT32_FAMILY} .c
5652 ${AT32_SDK_LIB} /drivers/src/${AT32_FAMILY} _gpio.c
5753 ${AT32_SDK_LIB} /drivers/src/${AT32_FAMILY} _misc.c
5854 ${AT32_SDK_LIB} /drivers/src/${AT32_FAMILY} _usart.c
5955 ${AT32_SDK_LIB} /drivers/src/${AT32_FAMILY} _acc.c
6056 ${AT32_SDK_LIB} /drivers/src/${AT32_FAMILY} _crm.c
61- ${STARTUP_FILE_${CMAKE_C_COMPILER_ID} }
6257 )
6358 target_include_directories (${BOARD_TARGET} PUBLIC
6459 ${CMAKE_CURRENT_FUNCTION_LIST_DIR}
@@ -74,59 +69,49 @@ function(add_board_target BOARD_TARGET)
7469 )
7570
7671 update_board(${BOARD_TARGET} )
77-
78- if (CMAKE_C_COMPILER_ID STREQUAL "GNU" )
79- target_link_options (${BOARD_TARGET} PUBLIC
80- "LINKER:--script=${LD_FILE_GNU} "
81- -nostartfiles
82- --specs=nosys.specs --specs=nano.specs
83- )
84- elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang" )
85- target_link_options (${BOARD_TARGET} PUBLIC
86- "LINKER:--script=${LD_FILE_Clang} "
87- )
88- elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR" )
89- target_link_options (${BOARD_TARGET} PUBLIC
90- "LINKER:--config=${LD_FILE_IAR} "
91- )
92- endif ()
9372endfunction ()
9473
95-
9674#------------------------------------
9775# Functions
9876#------------------------------------
9977function (family_configure_example TARGET RTOS)
10078 family_configure_common(${TARGET} ${RTOS} )
79+ family_add_tinyusb(${TARGET} OPT_MCU_${AT32_FAMILY_UPPER} )
10180
102- # Board target
103- add_board_target(board_${BOARD} )
104-
105- #---------- Port Specific ----------
106- # These files are built for each example since it depends on example's tusb_config.h
10781 target_sources (${TARGET} PUBLIC
108- # BSP
10982 ${CMAKE_CURRENT_FUNCTION_LIST_DIR} /family.c
11083 ${CMAKE_CURRENT_FUNCTION_LIST_DIR} /../board.c
11184 ${CMAKE_CURRENT_FUNCTION_LIST_DIR} /${AT32_FAMILY} _clock.c
11285 ${CMAKE_CURRENT_FUNCTION_LIST_DIR} /${AT32_FAMILY} _int.c
86+ ${TOP} /src/portable/synopsys/dwc2/dcd_dwc2.c
87+ ${TOP} /src/portable/synopsys/dwc2/hcd_dwc2.c
88+ ${TOP} /src/portable/synopsys/dwc2/dwc2_common.c
89+ ${STARTUP_FILE_${CMAKE_C_COMPILER_ID} }
11390 )
11491 target_include_directories (${TARGET} PUBLIC
115- # family, hw, board
11692 ${CMAKE_CURRENT_FUNCTION_LIST_DIR}
11793 ${CMAKE_CURRENT_FUNCTION_LIST_DIR} /../../
11894 ${CMAKE_CURRENT_FUNCTION_LIST_DIR} /boards/${BOARD}
11995 )
12096
121- # Add TinyUSB target and port source
122- family_add_tinyusb(${TARGET} OPT_MCU_${AT32_FAMILY_UPPER} )
123- target_sources (${TARGET} PUBLIC
124- ${TOP} /src/portable/synopsys/dwc2/dcd_dwc2.c
125- ${TOP} /src/portable/synopsys/dwc2/hcd_dwc2.c
126- ${TOP} /src/portable/synopsys/dwc2/dwc2_common.c
127- )
128- target_link_libraries (${TARGET} PUBLIC board_${BOARD} )
97+ if (CMAKE_C_COMPILER_ID STREQUAL "GNU" )
98+ target_link_options (${TARGET} PUBLIC
99+ "LINKER:--script=${LD_FILE_GNU} "
100+ -nostartfiles
101+ --specs=nosys.specs --specs=nano.specs
102+ )
103+ elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang" )
104+ target_link_options (${TARGET} PUBLIC
105+ "LINKER:--script=${LD_FILE_Clang} "
106+ )
107+ elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR" )
108+ target_link_options (${TARGET} PUBLIC
109+ "LINKER:--config=${LD_FILE_IAR} "
110+ )
111+ endif ()
112+
129113
114+ set_source_files_properties (${STARTUP_FILE_${CMAKE_C_COMPILER_ID} } PROPERTIES SKIP_LINTING ON )
130115 # Flashing
131116 family_add_bin_hex(${TARGET} )
132117 family_flash_jlink(${TARGET} )
0 commit comments