Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ jobs:
matrix:
port:
# Alphabetical order by family
- 'maxim'
# - 'stm32f303disco' # overflows flash
- 'stm32f4'
- 'stm32h5'
Expand Down
6 changes: 5 additions & 1 deletion .idea/cmake.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

50 changes: 47 additions & 3 deletions ports/family_support.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ if (NOT DEFINED TOOLCHAIN)
set(TOOLCHAIN gcc)
endif ()

if (NOT DEFINED CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
set(CMAKE_BUILD_TYPE MinSizeRel CACHE STRING "Build type" FORCE)
endif ()

#-------------------------------------------------------------
# FAMILY and BOARD
#-------------------------------------------------------------
Expand Down Expand Up @@ -228,13 +232,22 @@ endfunction()
# Add flash jlink target, optional parameter is the extension of the binary file
function(family_flash_jlink TARGET)
if (NOT DEFINED JLINKEXE)
set(JLINKEXE JLinkExe)
if(CMAKE_HOST_WIN32)
set(JLINKEXE JLink.exe)
else()
set(JLINKEXE JLinkExe)
endif()
endif ()

if (NOT DEFINED JLINK_IF)
set(JLINK_IF swd)
endif ()

if (NOT DEFINED JLINK_OPTION)
set(JLINK_OPTION "")
endif ()
separate_arguments(JLINK_OPTION UNIX_COMMAND ${JLINK_OPTION})

if (ARGC GREATER 1)
set(BIN_FILE $<TARGET_FILE_DIR:${TARGET}>/${TARGET}.${ARGV1})
else ()
Expand All @@ -253,7 +266,7 @@ exit"

add_custom_target(${TARGET}-jlink
DEPENDS ${TARGET}
COMMAND ${JLINKEXE} -device ${JLINK_DEVICE} -if ${JLINK_IF} -JTAGConf -1,-1 -speed auto -CommandFile ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.jlink
COMMAND ${JLINKEXE} -device ${JLINK_DEVICE} ${JLINK_OPTION} -if ${JLINK_IF} -JTAGConf -1,-1 -speed auto -CommandFile ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.jlink
)

# erase with jlink
Expand Down Expand Up @@ -292,13 +305,17 @@ function(family_flash_openocd TARGET)
set(OPENOCD_OPTION2 "")
endif ()

if (DEFINED OPENOCD_SERIAL)
set(OPENOCD_OPTION "-c \"adapter serial ${OPENOCD_SERIAL}\" ${OPENOCD_OPTION}")
endif ()

separate_arguments(OPTION_LIST UNIX_COMMAND ${OPENOCD_OPTION})
separate_arguments(OPTION_LIST2 UNIX_COMMAND ${OPENOCD_OPTION2})

# note skip verify since it has issue with rp2040
add_custom_target(${TARGET}-openocd
DEPENDS ${TARGET}
COMMAND ${OPENOCD} ${OPTION_LIST} -c "program $<TARGET_FILE:${TARGET}> reset" ${OPTION_LIST2} -c exit
COMMAND ${OPENOCD} -c "tcl_port disabled; gdb_port disabled" ${OPTION_LIST} -c "init; halt; program $<TARGET_FILE:${TARGET}>" -c reset ${OPTION_LIST2} -c exit
VERBATIM
)
endfunction()
Expand All @@ -314,6 +331,33 @@ function(family_flash_openocd_wch TARGET)
endfunction()


# Add flash openocd adi (Analog Devices) target
# included with msdk or compiled from release branch of https://github.com/analogdevicesinc/openocd
function(family_flash_openocd_adi TARGET)
if (DEFINED MAXIM_PATH)
# use openocd from msdk with MAXIM_PATH cmake variable first if the user
# specified it
set(OPENOCD ${MAXIM_PATH}/Tools/OpenOCD/openocd)
set(OPENOCD_OPTION2 "-s ${MAXIM_PATH}/Tools/OpenOCD/scripts")
elseif (DEFINED ENV{MAXIM_PATH})
# use openocd from msdk with MAXIM_PATH environment variable. Normalize
# since msdk can be Windows (MinGW) or Linux
file(TO_CMAKE_PATH "$ENV{MAXIM_PATH}" MAXIM_PATH_NORM)
set(OPENOCD ${MAXIM_PATH_NORM}/Tools/OpenOCD/openocd)
set(OPENOCD_OPTION2 "-s ${MAXIM_PATH_NORM}/Tools/OpenOCD/scripts")
else()
# compiled from source
if (NOT DEFINED OPENOCD_ADI_PATH)
set(OPENOCD_ADI_PATH $ENV{HOME}/app/openocd_adi)
endif ()
set(OPENOCD ${OPENOCD_ADI_PATH}/src/openocd)
set(OPENOCD_OPTION2 "-s ${OPENOCD_ADI_PATH}/tcl")
endif ()

family_flash_openocd(${TARGET})
endfunction()


# Flash with UF2
function(family_flash_uf2 TARGET FAMILY_ID)
add_custom_target(${TARGET}-uf2
Expand Down
30 changes: 30 additions & 0 deletions ports/maxim/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
cmake_minimum_required(VERSION 3.17)

include(${CMAKE_CURRENT_LIST_DIR}/../family_support.cmake)

project(tinyuf2 C ASM)
set(CMAKE_EXECUTABLE_SUFFIX .elf)

#------------------------------------
# TinyUF2
#------------------------------------
add_executable(tinyuf2
board_flash.c
boards.c
${TOP}/lib/tinyusb/src/portable/mentor/musb/dcd_musb.c
)
target_link_options(tinyuf2 PUBLIC
"LINKER:--script=${CMAKE_CURRENT_LIST_DIR}/linker/${MAX_DEVICE}/${MAX_DEVICE}_boot.ld"
"LINKER:--script=${CMAKE_CURRENT_LIST_DIR}/linker/${MAX_DEVICE}/${MAX_DEVICE}_common.ld"
)

family_configure_tinyuf2(tinyuf2 OPT_MCU_${MAX_DEVICE_UPPER})
family_flash_jlink(tinyuf2)
family_flash_openocd_adi(tinyuf2)

#------------------------------------
# Application
#------------------------------------
add_subdirectory(${TOP}/apps/self_update ${CMAKE_BINARY_DIR}/apps/self_update)
add_subdirectory(${TOP}/apps/blinky ${CMAKE_BINARY_DIR}/apps/blinky)
add_subdirectory(${TOP}/apps/erase_firmware ${CMAKE_BINARY_DIR}/apps/erase_firmware)
Loading
Loading