Skip to content

Commit c8a1b75

Browse files
committed
refactor family.cmake: rename add_board_target() to family_add_board() and move it to family_configure_common()
also move startup and linker from board target to actual exe
1 parent 2f3b21a commit c8a1b75

File tree

73 files changed

+2253
-3363
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+2253
-3363
lines changed

examples/device/board_test/src/main.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ int main(void) {
4545

4646
uint32_t start_ms = 0;
4747
bool led_state = false;
48-
const size_t hello_len = strlen(HELLO_STR);
4948

5049
while (1) {
5150
uint32_t interval_ms = board_button_read() ? BLINK_PRESSED : BLINK_UNPRESSED;
@@ -67,12 +66,12 @@ int main(void) {
6766
printf(HELLO_STR);
6867

6968
#ifndef LOGGER_UART
70-
board_uart_write(HELLO_STR, hello_len);
69+
board_uart_write(HELLO_STR, sizeof(HELLO_STR)-1);
7170
#endif
7271
}
7372

7473
board_led_write(led_state);
75-
led_state = 1 - led_state; // toggle
74+
led_state = !led_state; // toggle
7675
}
7776
}
7877
}

hw/bsp/at32f402_405/family.cmake

Lines changed: 35 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -32,33 +32,28 @@ if (NOT DEFINED RHPORT_HOST_SPEED)
3232
endif ()
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 ()
9372
endfunction()
9473

95-
9674
#------------------------------------
9775
# Functions
9876
#------------------------------------
9977
function(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})

hw/bsp/at32f403a_407/family.cmake

Lines changed: 32 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -15,33 +15,28 @@ set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOL
1515
set(FAMILY_MCUS ${AT32_FAMILY_UPPER} CACHE INTERNAL "")
1616

1717
#------------------------------------
18-
# BOARD_TARGET
18+
# Startup & Linker script
1919
#------------------------------------
20-
# only need to be built ONCE for all examples
21-
function(add_board_target BOARD_TARGET)
22-
if (TARGET ${BOARD_TARGET})
23-
return()
24-
endif ()
25-
26-
# Startup & Linker script
27-
set(STARTUP_FILE_GNU ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/gcc/startup_${AT32_FAMILY}.s)
28-
set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
29-
set(STARTUP_FILE_IAR ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/iar/startup_${AT32_FAMILY}.s)
30-
31-
if (NOT DEFINED LD_FILE_GNU)
32-
set(LD_FILE_GNU ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/gcc/linker/${MCU_LINKER_NAME}_FLASH.ld)
33-
endif ()
34-
set(LD_FILE_Clang ${LD_FILE_GNU})
35-
set(LD_FILE_IAR ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/iar/linker/${MCU_LINKER_NAME}.icf)
20+
set(STARTUP_FILE_GNU ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/gcc/startup_${AT32_FAMILY}.s)
21+
set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
22+
set(STARTUP_FILE_IAR ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/iar/startup_${AT32_FAMILY}.s)
23+
if (NOT DEFINED LD_FILE_GNU)
24+
set(LD_FILE_GNU ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/gcc/linker/${MCU_LINKER_NAME}_FLASH.ld)
25+
endif ()
26+
set(LD_FILE_Clang ${LD_FILE_GNU})
27+
set(LD_FILE_IAR ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/iar/linker/${MCU_LINKER_NAME}.icf)
3628

29+
#------------------------------------
30+
# BOARD_TARGET
31+
#------------------------------------
32+
function(family_add_board BOARD_TARGET)
3733
add_library(${BOARD_TARGET} STATIC
3834
${AT32_SDK_LIB}/cmsis/cm4/device_support/system_${AT32_FAMILY}.c
3935
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_gpio.c
4036
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_misc.c
4137
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_usart.c
4238
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_acc.c
4339
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_crm.c
44-
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
4540
)
4641
target_include_directories(${BOARD_TARGET} PUBLIC
4742
${CMAKE_CURRENT_FUNCTION_LIST_DIR}
@@ -51,57 +46,46 @@ function(add_board_target BOARD_TARGET)
5146
)
5247

5348
update_board(${BOARD_TARGET})
54-
55-
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
56-
target_link_options(${BOARD_TARGET} PUBLIC
57-
"LINKER:--script=${LD_FILE_GNU}"
58-
-nostartfiles
59-
--specs=nosys.specs --specs=nano.specs
60-
)
61-
elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
62-
target_link_options(${BOARD_TARGET} PUBLIC
63-
"LINKER:--script=${LD_FILE_Clang}"
64-
)
65-
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
66-
target_link_options(${BOARD_TARGET} PUBLIC
67-
"LINKER:--config=${LD_FILE_IAR}"
68-
)
69-
endif ()
7049
endfunction()
7150

72-
7351
#------------------------------------
7452
# Functions
7553
#------------------------------------
7654
function(family_configure_example TARGET RTOS)
7755
family_configure_common(${TARGET} ${RTOS})
56+
family_add_tinyusb(${TARGET} OPT_MCU_${AT32_FAMILY_UPPER})
7857

79-
# Board target
80-
add_board_target(board_${BOARD})
81-
82-
#---------- Port Specific ----------
83-
# These files are built for each example since it depends on example's tusb_config.h
8458
target_sources(${TARGET} PUBLIC
85-
# BSP
8659
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/family.c
8760
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../board.c
8861
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${AT32_FAMILY}_clock.c
8962
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${AT32_FAMILY}_int.c
63+
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
64+
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
9065
)
9166
target_include_directories(${TARGET} PUBLIC
92-
# family, hw, board
9367
${CMAKE_CURRENT_FUNCTION_LIST_DIR}
9468
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../
9569
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}
9670
)
9771

98-
# Add TinyUSB target and port source
99-
family_add_tinyusb(${TARGET} OPT_MCU_${AT32_FAMILY_UPPER})
100-
target_sources(${TARGET} PUBLIC
101-
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
102-
)
103-
target_link_libraries(${TARGET} PUBLIC board_${BOARD})
72+
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
73+
target_link_options(${TARGET} PUBLIC
74+
"LINKER:--script=${LD_FILE_GNU}"
75+
-nostartfiles
76+
--specs=nosys.specs --specs=nano.specs
77+
)
78+
elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
79+
target_link_options(${TARGET} PUBLIC
80+
"LINKER:--script=${LD_FILE_Clang}"
81+
)
82+
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
83+
target_link_options(${TARGET} PUBLIC
84+
"LINKER:--config=${LD_FILE_IAR}"
85+
)
86+
endif ()
10487

88+
set_source_files_properties(${STARTUP_FILE_${CMAKE_C_COMPILER_ID}} PROPERTIES SKIP_LINTING ON)
10589
# Flashing
10690
family_add_bin_hex(${TARGET})
10791
family_flash_jlink(${TARGET})

hw/bsp/at32f413/family.cmake

Lines changed: 33 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -15,33 +15,28 @@ set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOL
1515
set(FAMILY_MCUS ${AT32_FAMILY_UPPER} CACHE INTERNAL "")
1616

1717
#------------------------------------
18-
# BOARD_TARGET
18+
# Startup & Linker script
1919
#------------------------------------
20-
# only need to be built ONCE for all examples
21-
function(add_board_target BOARD_TARGET)
22-
if (TARGET ${BOARD_TARGET})
23-
return()
24-
endif ()
25-
26-
# Startup & Linker script
27-
set(STARTUP_FILE_GNU ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/gcc/startup_${AT32_FAMILY}.s)
28-
set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
29-
set(STARTUP_FILE_IAR ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/iar/startup_${AT32_FAMILY}.s)
30-
31-
if (NOT DEFINED LD_FILE_GNU)
32-
set(LD_FILE_GNU ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/gcc/linker/${MCU_LINKER_NAME}_FLASH.ld)
33-
endif ()
34-
set(LD_FILE_Clang ${LD_FILE_GNU})
35-
set(LD_FILE_IAR ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/iar/linker/${MCU_LINKER_NAME}.icf)
20+
set(STARTUP_FILE_GNU ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/gcc/startup_${AT32_FAMILY}.s)
21+
set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
22+
set(STARTUP_FILE_IAR ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/iar/startup_${AT32_FAMILY}.s)
23+
if (NOT DEFINED LD_FILE_GNU)
24+
set(LD_FILE_GNU ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/gcc/linker/${MCU_LINKER_NAME}_FLASH.ld)
25+
endif ()
26+
set(LD_FILE_Clang ${LD_FILE_GNU})
27+
set(LD_FILE_IAR ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/iar/linker/${MCU_LINKER_NAME}.icf)
3628

29+
#------------------------------------
30+
# BOARD_TARGET
31+
#------------------------------------
32+
function(family_add_board BOARD_TARGET)
3733
add_library(${BOARD_TARGET} STATIC
3834
${AT32_SDK_LIB}/cmsis/cm4/device_support/system_${AT32_FAMILY}.c
3935
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_gpio.c
4036
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_misc.c
4137
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_usart.c
4238
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_acc.c
4339
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_crm.c
44-
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
4540
)
4641
target_include_directories(${BOARD_TARGET} PUBLIC
4742
${CMAKE_CURRENT_FUNCTION_LIST_DIR}
@@ -51,56 +46,46 @@ function(add_board_target BOARD_TARGET)
5146
)
5247

5348
update_board(${BOARD_TARGET})
54-
55-
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
56-
target_link_options(${BOARD_TARGET} PUBLIC
57-
"LINKER:--script=${LD_FILE_GNU}"
58-
-nostartfiles
59-
--specs=nosys.specs --specs=nano.specs
60-
)
61-
elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
62-
target_link_options(${BOARD_TARGET} PUBLIC
63-
"LINKER:--script=${LD_FILE_Clang}"
64-
)
65-
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
66-
target_link_options(${BOARD_TARGET} PUBLIC
67-
"LINKER:--config=${LD_FILE_IAR}"
68-
)
69-
endif ()
7049
endfunction()
7150

72-
7351
#------------------------------------
7452
# Functions
7553
#------------------------------------
7654
function(family_configure_example TARGET RTOS)
7755
family_configure_common(${TARGET} ${RTOS})
56+
family_add_tinyusb(${TARGET} OPT_MCU_${AT32_FAMILY_UPPER})
7857

79-
# Board target
80-
add_board_target(board_${BOARD})
81-
82-
#---------- Port Specific ----------
83-
# These files are built for each example since it depends on example's tusb_config.h
8458
target_sources(${TARGET} PUBLIC
85-
# BSP
8659
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/family.c
8760
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../board.c
8861
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${AT32_FAMILY}_clock.c
8962
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${AT32_FAMILY}_int.c
63+
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
64+
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
9065
)
9166
target_include_directories(${TARGET} PUBLIC
92-
# family, hw, board
9367
${CMAKE_CURRENT_FUNCTION_LIST_DIR}
9468
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../
9569
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}
9670
)
9771

98-
# Add TinyUSB target and port source
99-
family_add_tinyusb(${TARGET} OPT_MCU_${AT32_FAMILY_UPPER})
100-
target_sources(${TARGET} PUBLIC
101-
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
102-
)
103-
target_link_libraries(${TARGET} PUBLIC board_${BOARD})
72+
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
73+
target_link_options(${TARGET} PUBLIC
74+
"LINKER:--script=${LD_FILE_GNU}"
75+
-nostartfiles
76+
--specs=nosys.specs --specs=nano.specs
77+
)
78+
elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
79+
target_link_options(${TARGET} PUBLIC
80+
"LINKER:--script=${LD_FILE_Clang}"
81+
)
82+
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
83+
target_link_options(${TARGET} PUBLIC
84+
"LINKER:--config=${LD_FILE_IAR}"
85+
)
86+
endif ()
87+
88+
set_source_files_properties(${STARTUP_FILE_${CMAKE_C_COMPILER_ID}} PROPERTIES SKIP_LINTING ON)
10489

10590
# Flashing
10691
family_add_bin_hex(${TARGET})

0 commit comments

Comments
 (0)