Skip to content

Commit b67e008

Browse files
committed
add ci build for all at32, use linker and startup from mcu cmsis instead of local files
1 parent b531f43 commit b67e008

Some content is hidden

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

50 files changed

+1030
-4844
lines changed

.github/workflows/ci_set_matrix.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
# family: [supported toolchain]
1717
family_list = {
18-
"at32f403a_407 at32f423": ["arm-gcc"],
18+
"at32f402_405 at32f403a_407 at32f413 at32f415 at32f423 at32f425 at32f435_437": ["arm-gcc"],
1919
"broadcom_32bit": ["arm-gcc"],
2020
"broadcom_64bit": ["aarch64-gcc"],
2121
"ch32v10x ch32v20x ch32v307 fomu gd32vf103": ["riscv-gcc"],
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
if (TOOLCHAIN STREQUAL "gcc")
2+
set(TOOLCHAIN_COMMON_FLAGS
3+
-mthumb
4+
-mcpu=cortex-m4
5+
-mfloat-abi=soft
6+
)
7+
if (NOT DEFINED FREERTOS_PORT)
8+
set(FREERTOS_PORT GCC_ARM_CM3 CACHE INTERNAL "")
9+
endif ()
10+
11+
elseif (TOOLCHAIN STREQUAL "clang")
12+
set(TOOLCHAIN_COMMON_FLAGS
13+
--target=arm-none-eabi
14+
-mcpu=cortex-m4
15+
)
16+
if (NOT DEFINED FREERTOS_PORT)
17+
set(FREERTOS_PORT GCC_ARM_CM3 CACHE INTERNAL "")
18+
endif ()
19+
20+
elseif (TOOLCHAIN STREQUAL "iar")
21+
set(TOOLCHAIN_COMMON_FLAGS
22+
--cpu cortex-m4
23+
--fpu none
24+
)
25+
26+
if (NOT DEFINED FREERTOS_PORT)
27+
set(FREERTOS_PORT IAR_ARM_CM3 CACHE INTERNAL "")
28+
endif ()
29+
30+
endif ()
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
ifeq ($(TOOLCHAIN),gcc)
2+
CFLAGS += \
3+
-mthumb \
4+
-mcpu=cortex-m4 \
5+
-mfloat-abi=soft
6+
7+
else ifeq ($(TOOLCHAIN),clang)
8+
CFLAGS += \
9+
--target=arm-none-eabi \
10+
-mcpu=cortex-m4
11+
12+
else ifeq ($(TOOLCHAIN),iar)
13+
CFLAGS += --cpu cortex-m4 --fpu none
14+
ASFLAGS += --cpu cortex-m4 --fpu none
15+
16+
else
17+
$(error "TOOLCHAIN is not supported")
18+
endif
19+
20+
FREERTOS_PORTABLE_SRC ?= $(FREERTOS_PORTABLE_PATH)/ARM_CM3

examples/device/net_lwip_webserver/skip.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ mcu:STM32N6
1515
family:broadcom_64bit
1616
family:broadcom_32bit
1717
family:espressif
18+
board:AT_START_F425
1819
board:curiosity_nano
1920
board:frdm_kl25z
2021
# lpc55 has weird error 'ncm_interface' causes a section type conflict with 'ntb_parameters'

hw/bsp/at32f402_405/boards/AT_START_F402_405/AT32F405xC_FLASH.ld

Lines changed: 0 additions & 154 deletions
This file was deleted.

hw/bsp/at32f402_405/boards/AT_START_F402_405/board.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
set(MCU_VARIANT AT32F405RCT7)
2+
set(MCU_LINKER_NAME AT32F405xC)
3+
24
set(JLINK_DEVICE ${MCU_VARIANT})
35

46
function(update_board TARGET)
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
JLINK_DEVICE = AT32F405RCT7
2-
LD_FILE = $(BOARD_PATH)/AT32F405xC_FLASH.ld
1+
MCU_VARIANT = AT32F405RCT7
2+
MCU_LINKER_NAME = AT32F405xC
3+
4+
JLINK_DEVICE = ${MCU_VARIANT}
35

46
CFLAGS += \
5-
-DAT32F405RCT7
7+
-D${MCU_VARIANT}

hw/bsp/at32f402_405/family.cmake

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
include_guard()
22

3-
set(AT_FAMILY at32f402_405)
4-
set(AT_SDK_LIB ${TOP}/hw/mcu/artery/${AT_FAMILY}/libraries)
3+
set(AT32_FAMILY at32f402_405)
4+
set(AT32_SDK_LIB ${TOP}/hw/mcu/artery/${AT32_FAMILY}/libraries)
55

6-
string(TOUPPER ${AT_FAMILY} AT_FAMILY_UPPER)
6+
string(TOUPPER ${AT32_FAMILY} AT32_FAMILY_UPPER)
77

88
# include board specific
99
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
@@ -12,15 +12,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
1212
set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
1313
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
1414

15-
set(FAMILY_MCUS ${AT_FAMILY_UPPER} CACHE INTERNAL "")
16-
17-
# extract variant linker name
18-
string(LENGTH ${MCU_VARIANT} MCU_VARIANT_LEN)
19-
math(EXPR MCU_FLASH_CODE_INDEX "${MCU_VARIANT_LEN} - 3")
20-
math(EXPR MCU_VARIANT_PREFIX_LEN "${MCU_FLASH_CODE_INDEX} - 1")
21-
string(SUBSTRING ${MCU_VARIANT} ${MCU_FLASH_CODE_INDEX} 1 MCU_FLASH_CODE)
22-
string(SUBSTRING ${MCU_VARIANT} 0 ${MCU_VARIANT_PREFIX_LEN} MCU_VARIANT_PREFIX)
23-
set(MCU_LINKER_NAME ${MCU_VARIANT_PREFIX}x${MCU_FLASH_CODE})
15+
set(FAMILY_MCUS ${AT32_FAMILY_UPPER} CACHE INTERNAL "")
2416

2517
#------------------------------------
2618
# BOARD_TARGET
@@ -32,30 +24,30 @@ function(add_board_target BOARD_TARGET)
3224
endif ()
3325

3426
# Startup & Linker script
35-
set(STARTUP_FILE_GNU ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/startup_${AT_FAMILY}.s)
27+
set(STARTUP_FILE_GNU ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/gcc/startup_${AT32_FAMILY}.s)
3628
set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
37-
set(STARTUP_FILE_IAR ${AT_SDK_LIB}/cmsis/cm4/device_support/startup/iar/startup_${AT_FAMILY}.s)
29+
set(STARTUP_FILE_IAR ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/iar/startup_${AT32_FAMILY}.s)
3830

3931
if (NOT DEFINED LD_FILE_GNU)
40-
set(LD_FILE_GNU ${AT_SDK_LIB}/cmsis/cm4/device_support/startup/gcc/linker/${MCU_LINKER_NAME}_FLASH.ld)
32+
set(LD_FILE_GNU ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/gcc/linker/${MCU_LINKER_NAME}_FLASH.ld)
4133
endif ()
4234
set(LD_FILE_Clang ${LD_FILE_GNU})
43-
set(LD_FILE_IAR ${AT_SDK_LIB}/cmsis/cm4/device_support/startup/iar/linker/${MCU_LINKER_NAME}.icf)
35+
set(LD_FILE_IAR ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/iar/linker/${MCU_LINKER_NAME}.icf)
4436

4537
add_library(${BOARD_TARGET} STATIC
46-
${AT_SDK_LIB}/cmsis/cm4/device_support/system_${AT_FAMILY}.c
47-
${AT_SDK_LIB}/drivers/src/${AT_FAMILY}_gpio.c
48-
${AT_SDK_LIB}/drivers/src/${AT_FAMILY}_misc.c
49-
${AT_SDK_LIB}/drivers/src/${AT_FAMILY}_usart.c
50-
${AT_SDK_LIB}/drivers/src/${AT_FAMILY}_acc.c
51-
${AT_SDK_LIB}/drivers/src/${AT_FAMILY}_crm.c
38+
${AT32_SDK_LIB}/cmsis/cm4/device_support/system_${AT32_FAMILY}.c
39+
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_gpio.c
40+
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_misc.c
41+
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_usart.c
42+
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_acc.c
43+
${AT32_SDK_LIB}/drivers/src/${AT32_FAMILY}_crm.c
5244
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
5345
)
5446
target_include_directories(${BOARD_TARGET} PUBLIC
5547
${CMAKE_CURRENT_FUNCTION_LIST_DIR}
56-
${AT_SDK_LIB}/cmsis/cm4/core_support
57-
${AT_SDK_LIB}/cmsis/cm4/device_support
58-
${AT_SDK_LIB}/drivers/inc
48+
${AT32_SDK_LIB}/cmsis/cm4/core_support
49+
${AT32_SDK_LIB}/cmsis/cm4/device_support
50+
${AT32_SDK_LIB}/drivers/inc
5951
)
6052
target_compile_definitions(${BOARD_TARGET} PUBLIC
6153
BOARD_TUD_RHPORT=0
@@ -97,8 +89,8 @@ function(family_configure_example TARGET RTOS)
9789
# BSP
9890
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/family.c
9991
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../board.c
100-
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${AT_FAMILY}_clock.c
101-
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${AT_FAMILY}_int.c
92+
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${AT32_FAMILY}_clock.c
93+
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${AT32_FAMILY}_int.c
10294
)
10395
target_include_directories(${TARGET} PUBLIC
10496
# family, hw, board
@@ -108,7 +100,7 @@ function(family_configure_example TARGET RTOS)
108100
)
109101

110102
# Add TinyUSB target and port source
111-
family_add_tinyusb(${TARGET} OPT_MCU_${AT_FAMILY_UPPER})
103+
family_add_tinyusb(${TARGET} OPT_MCU_${AT32_FAMILY_UPPER})
112104
target_sources(${TARGET} PUBLIC
113105
${TOP}/src/portable/synopsys/dwc2/dcd_dwc2.c
114106
${TOP}/src/portable/synopsys/dwc2/hcd_dwc2.c

hw/bsp/at32f402_405/family.mk

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
# Submodules
2-
AT32F402_405_SDK = hw/mcu/artery/at32f402_405
3-
4-
# AT32 SDK path
5-
AT32F402_405_SDK_SRC = $(AT32F402_405_SDK)/libraries
1+
AT32_FAMILY = at32f402_405
2+
AT32_SDK_LIB = hw/mcu/artery/${AT32_FAMILY}/libraries
63

74
include $(TOP)/$(BOARD_PATH)/board.mk
85

@@ -13,6 +10,7 @@ CFLAGS_GCC += \
1310

1411
CFLAGS += \
1512
-DCFG_TUSB_MCU=OPT_MCU_AT32F402_405 \
13+
-DBOARD_TUD_RHPORT=0 \
1614
-DBOARD_TUD_MAX_SPEED=OPT_MODE_HIGH_SPEED
1715

1816
LDFLAGS_GCC += \
@@ -22,23 +20,26 @@ SRC_C += \
2220
src/portable/synopsys/dwc2/dcd_dwc2.c \
2321
src/portable/synopsys/dwc2/hcd_dwc2.c \
2422
src/portable/synopsys/dwc2/dwc2_common.c \
25-
$(AT32F402_405_SDK_SRC)/drivers/src/at32f402_405_gpio.c \
26-
$(AT32F402_405_SDK_SRC)/drivers/src/at32f402_405_misc.c \
27-
$(AT32F402_405_SDK_SRC)/drivers/src/at32f402_405_usart.c \
28-
$(AT32F402_405_SDK_SRC)/drivers/src/at32f402_405_crm.c \
29-
$(AT32F402_405_SDK_SRC)/drivers/src/at32f402_405_acc.c \
30-
$(AT32F402_405_SDK_SRC)/cmsis/cm4/device_support/system_at32f402_405.c
23+
$(AT32_SDK_LIB)/drivers/src/${AT32_FAMILY}_gpio.c \
24+
$(AT32_SDK_LIB)/drivers/src/${AT32_FAMILY}_misc.c \
25+
$(AT32_SDK_LIB)/drivers/src/${AT32_FAMILY}_usart.c \
26+
$(AT32_SDK_LIB)/drivers/src/${AT32_FAMILY}_crm.c \
27+
$(AT32_SDK_LIB)/drivers/src/${AT32_FAMILY}_acc.c \
28+
$(AT32_SDK_LIB)/cmsis/cm4/device_support/system_${AT32_FAMILY}.c
3129

3230
INC += \
3331
$(TOP)/$(BOARD_PATH) \
34-
$(TOP)/$(AT32F402_405_SDK_SRC)/drivers/inc \
35-
$(TOP)/$(AT32F402_405_SDK_SRC)/cmsis/cm4/core_support \
36-
$(TOP)/$(AT32F402_405_SDK_SRC)/cmsis/cm4/device_support
32+
$(TOP)/$(AT32_SDK_LIB)/drivers/inc \
33+
$(TOP)/$(AT32_SDK_LIB)/cmsis/cm4/core_support \
34+
$(TOP)/$(AT32_SDK_LIB)/cmsis/cm4/device_support
35+
36+
SRC_S_GCC += ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/gcc/startup_${AT32_FAMILY}.s
37+
SRC_S_IAR += ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/iar/startup_${AT32_FAMILY}.s
3738

38-
SRC_S += \
39-
$(FAMILY_PATH)/startup_at32f402_405.s
39+
LD_FILE_GCC ?= ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/gcc/linker/${MCU_LINKER_NAME}_FLASH.ld
40+
LD_FILE_IAR ?= ${AT32_SDK_LIB}/cmsis/cm4/device_support/startup/iar/linker/${MCU_LINKER_NAME}.icf
4041

4142
# For freeRTOS port source
42-
#FREERTOS_PORTABLE_SRC = $(FREERTOS_PORTABLE_PATH)/ARM_CM4
43+
FREERTOS_PORTABLE_SRC = $(FREERTOS_PORTABLE_PATH)/ARM_CM4F
4344

4445
flash: flash-atlink

0 commit comments

Comments
 (0)