forked from hathach/tinyusb
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
244 additions
and
12 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
set(MCU_VARIANT stm32u575xx) | ||
set(JLINK_DEVICE stm32u575ai) | ||
|
||
set(LD_FILE_GNU ${ST_CMSIS}/Source/Templates/gcc/linker/STM32U575xx_FLASH.ld) | ||
|
||
function(update_board TARGET) | ||
target_compile_definitions(${TARGET} PUBLIC | ||
STM32U575xx | ||
) | ||
endfunction() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,216 @@ | ||
include_guard() | ||
|
||
if (NOT BOARD) | ||
message(FATAL_ERROR "BOARD not specified") | ||
endif () | ||
|
||
set(ST_FAMILY u5) | ||
set(ST_PREFIX stm32${ST_FAMILY}xx) | ||
|
||
set(ST_HAL_DRIVER ${TOP}/hw/mcu/st/stm32${ST_FAMILY}xx_hal_driver) | ||
set(ST_CMSIS ${TOP}/hw/mcu/st/cmsis_device_${ST_FAMILY}) | ||
set(CMSIS_5 ${TOP}/lib/CMSIS_5) | ||
|
||
# include board specific | ||
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake) | ||
|
||
# toolchain set up | ||
set(CMAKE_SYSTEM_PROCESSOR cortex-m33 CACHE INTERNAL "System Processor") | ||
set(CMAKE_TOOLCHAIN_FILE ${TOP}/tools/cmake/toolchain/arm_${TOOLCHAIN}.cmake) | ||
|
||
set(FAMILY_MCUS STM32U5 CACHE INTERNAL "") | ||
|
||
|
||
#------------------------------------ | ||
# BOARD_TARGET | ||
#------------------------------------ | ||
# only need to be built ONCE for all examples | ||
function(add_board_target BOARD_TARGET) | ||
if (NOT TARGET ${BOARD_TARGET}) | ||
# Startup & Linker script | ||
set(STARTUP_FILE_GNU ${ST_CMSIS}/Source/Templates/gcc/startup_${MCU_VARIANT}.s) | ||
set(STARTUP_FILE_IAR ${ST_CMSIS}/Source/Templates/iar/startup_${MCU_VARIANT}.s) | ||
set(LD_FILE_IAR ${ST_CMSIS}/Source/Templates/iar/linker/${MCU_VARIANT}_flash.icf) | ||
|
||
add_library(${BOARD_TARGET} STATIC | ||
${ST_CMSIS}/Source/Templates/system_${ST_PREFIX}.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_cortex.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_gpio.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_pwr_ex.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_rcc.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_rcc_ex.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_uart.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_uart_ex.c | ||
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}} | ||
) | ||
target_include_directories(${BOARD_TARGET} PUBLIC | ||
${CMAKE_CURRENT_FUNCTION_LIST_DIR} | ||
${CMSIS_5}/CMSIS/Core/Include | ||
${ST_CMSIS}/Include | ||
${ST_HAL_DRIVER}/Inc | ||
) | ||
update_board(${BOARD_TARGET}) | ||
|
||
if (CMAKE_C_COMPILER_ID STREQUAL "GNU") | ||
target_link_options(${BOARD_TARGET} PUBLIC | ||
"LINKER:--script=${LD_FILE_GNU}" | ||
-nostartfiles | ||
# nanolib | ||
--specs=nosys.specs --specs=nano.specs | ||
) | ||
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR") | ||
target_link_options(${BOARD_TARGET} PUBLIC | ||
"LINKER:--config=${LD_FILE_IAR}" | ||
) | ||
endif () | ||
endif () | ||
endfunction() | ||
|
||
|
||
#------------------------------------ | ||
# Functions | ||
#------------------------------------ | ||
function(family_configure_example TARGET RTOS) | ||
family_configure_common(${TARGET} ${RTOS}) | ||
|
||
# Board target | ||
add_board_target(board_${BOARD}) | ||
|
||
#---------- Port Specific ---------- | ||
# These files are built for each example since it depends on example's tusb_config.h | ||
target_sources(${TARGET} PUBLIC | ||
# BSP | ||
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/family.c | ||
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../board.c | ||
) | ||
target_include_directories(${TARGET} PUBLIC | ||
# family, hw, board | ||
${CMAKE_CURRENT_FUNCTION_LIST_DIR} | ||
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../ | ||
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD} | ||
) | ||
|
||
# Add TinyUSB target and port source | ||
family_add_tinyusb(${TARGET} OPT_MCU_STM32G4 ${RTOS}) | ||
target_sources(${TARGET}-tinyusb PUBLIC | ||
${TOP}/src/portable/synopsys/dwc2/dcd_dwc2.c | ||
#${TOP}/src/portable/st/typec/typec_stm32.c | ||
) | ||
target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD}) | ||
|
||
# Link dependencies | ||
target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb) | ||
|
||
# Flashing | ||
family_flash_stlink(${TARGET}) | ||
family_flash_jlink(${TARGET}) | ||
endfunction() | ||
include_guard() | ||
|
||
if (NOT BOARD) | ||
message(FATAL_ERROR "BOARD not specified") | ||
endif () | ||
|
||
set(ST_FAMILY u5) | ||
set(ST_PREFIX stm32${ST_FAMILY}xx) | ||
|
||
set(ST_HAL_DRIVER ${TOP}/hw/mcu/st/stm32${ST_FAMILY}xx_hal_driver) | ||
set(ST_CMSIS ${TOP}/hw/mcu/st/cmsis_device_${ST_FAMILY}) | ||
set(CMSIS_5 ${TOP}/lib/CMSIS_5) | ||
|
||
# include board specific | ||
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake) | ||
|
||
# toolchain set up | ||
set(CMAKE_SYSTEM_PROCESSOR cortex-m33 CACHE INTERNAL "System Processor") | ||
set(CMAKE_TOOLCHAIN_FILE ${TOP}/tools/cmake/toolchain/arm_${TOOLCHAIN}.cmake) | ||
|
||
set(FAMILY_MCUS STM32U5 CACHE INTERNAL "") | ||
|
||
|
||
#------------------------------------ | ||
# BOARD_TARGET | ||
#------------------------------------ | ||
# only need to be built ONCE for all examples | ||
function(add_board_target BOARD_TARGET) | ||
if (NOT TARGET ${BOARD_TARGET}) | ||
# Startup & Linker script | ||
set(STARTUP_FILE_GNU ${ST_CMSIS}/Source/Templates/gcc/startup_${MCU_VARIANT}.s) | ||
set(STARTUP_FILE_IAR ${ST_CMSIS}/Source/Templates/iar/startup_${MCU_VARIANT}.s) | ||
set(LD_FILE_IAR ${ST_CMSIS}/Source/Templates/iar/linker/${MCU_VARIANT}_flash.icf) | ||
|
||
add_library(${BOARD_TARGET} STATIC | ||
${ST_CMSIS}/Source/Templates/system_${ST_PREFIX}.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_cortex.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_gpio.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_pwr_ex.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_rcc.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_rcc_ex.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_uart.c | ||
${ST_HAL_DRIVER}/Src/${ST_PREFIX}_hal_uart_ex.c | ||
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}} | ||
) | ||
target_include_directories(${BOARD_TARGET} PUBLIC | ||
${CMAKE_CURRENT_FUNCTION_LIST_DIR} | ||
${CMSIS_5}/CMSIS/Core/Include | ||
${ST_CMSIS}/Include | ||
${ST_HAL_DRIVER}/Inc | ||
) | ||
update_board(${BOARD_TARGET}) | ||
|
||
if (CMAKE_C_COMPILER_ID STREQUAL "GNU") | ||
target_link_options(${BOARD_TARGET} PUBLIC | ||
"LINKER:--script=${LD_FILE_GNU}" | ||
-nostartfiles | ||
# nanolib | ||
--specs=nosys.specs --specs=nano.specs | ||
) | ||
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR") | ||
target_link_options(${BOARD_TARGET} PUBLIC | ||
"LINKER:--config=${LD_FILE_IAR}" | ||
) | ||
endif () | ||
endif () | ||
endfunction() | ||
|
||
|
||
#------------------------------------ | ||
# Functions | ||
#------------------------------------ | ||
function(family_configure_example TARGET RTOS) | ||
family_configure_common(${TARGET} ${RTOS}) | ||
|
||
# Board target | ||
add_board_target(board_${BOARD}) | ||
|
||
#---------- Port Specific ---------- | ||
# These files are built for each example since it depends on example's tusb_config.h | ||
target_sources(${TARGET} PUBLIC | ||
# BSP | ||
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/family.c | ||
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../board.c | ||
) | ||
target_include_directories(${TARGET} PUBLIC | ||
# family, hw, board | ||
${CMAKE_CURRENT_FUNCTION_LIST_DIR} | ||
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../ | ||
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD} | ||
) | ||
|
||
# Add TinyUSB target and port source | ||
family_add_tinyusb(${TARGET} OPT_MCU_STM32G4 ${RTOS}) | ||
target_sources(${TARGET}-tinyusb PUBLIC | ||
${TOP}/src/portable/synopsys/dwc2/dcd_dwc2.c | ||
#${TOP}/src/portable/st/typec/typec_stm32.c | ||
) | ||
target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD}) | ||
|
||
# Link dependencies | ||
target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb) | ||
|
||
# Flashing | ||
family_flash_stlink(${TARGET}) | ||
family_flash_jlink(${TARGET}) | ||
endfunction() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters