Skip to content

Commit 07a6d75

Browse files
authored
Merge pull request #446 from BrentK-ADI/add-max32-support
Add Port for ADI MCUs
2 parents c900774 + 2e1dc7f commit 07a6d75

40 files changed

+2484
-5
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ jobs:
8383
matrix:
8484
port:
8585
# Alphabetical order by family
86+
- 'maxim'
8687
# - 'stm32f303disco' # overflows flash
8788
- 'stm32f4'
8889
- 'stm32h5'

.idea/cmake.xml

Lines changed: 5 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ports/family_support.cmake

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ if (NOT DEFINED TOOLCHAIN)
3333
set(TOOLCHAIN gcc)
3434
endif ()
3535

36+
if (NOT DEFINED CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
37+
set(CMAKE_BUILD_TYPE MinSizeRel CACHE STRING "Build type" FORCE)
38+
endif ()
39+
3640
#-------------------------------------------------------------
3741
# FAMILY and BOARD
3842
#-------------------------------------------------------------
@@ -228,13 +232,22 @@ endfunction()
228232
# Add flash jlink target, optional parameter is the extension of the binary file
229233
function(family_flash_jlink TARGET)
230234
if (NOT DEFINED JLINKEXE)
231-
set(JLINKEXE JLinkExe)
235+
if(CMAKE_HOST_WIN32)
236+
set(JLINKEXE JLink.exe)
237+
else()
238+
set(JLINKEXE JLinkExe)
239+
endif()
232240
endif ()
233241

234242
if (NOT DEFINED JLINK_IF)
235243
set(JLINK_IF swd)
236244
endif ()
237245

246+
if (NOT DEFINED JLINK_OPTION)
247+
set(JLINK_OPTION "")
248+
endif ()
249+
separate_arguments(JLINK_OPTION UNIX_COMMAND ${JLINK_OPTION})
250+
238251
if (ARGC GREATER 1)
239252
set(BIN_FILE $<TARGET_FILE_DIR:${TARGET}>/${TARGET}.${ARGV1})
240253
else ()
@@ -253,7 +266,7 @@ exit"
253266

254267
add_custom_target(${TARGET}-jlink
255268
DEPENDS ${TARGET}
256-
COMMAND ${JLINKEXE} -device ${JLINK_DEVICE} -if ${JLINK_IF} -JTAGConf -1,-1 -speed auto -CommandFile ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.jlink
269+
COMMAND ${JLINKEXE} -device ${JLINK_DEVICE} ${JLINK_OPTION} -if ${JLINK_IF} -JTAGConf -1,-1 -speed auto -CommandFile ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.jlink
257270
)
258271

259272
# erase with jlink
@@ -292,13 +305,17 @@ function(family_flash_openocd TARGET)
292305
set(OPENOCD_OPTION2 "")
293306
endif ()
294307

308+
if (DEFINED OPENOCD_SERIAL)
309+
set(OPENOCD_OPTION "-c \"adapter serial ${OPENOCD_SERIAL}\" ${OPENOCD_OPTION}")
310+
endif ()
311+
295312
separate_arguments(OPTION_LIST UNIX_COMMAND ${OPENOCD_OPTION})
296313
separate_arguments(OPTION_LIST2 UNIX_COMMAND ${OPENOCD_OPTION2})
297314

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

316333

334+
# Add flash openocd adi (Analog Devices) target
335+
# included with msdk or compiled from release branch of https://github.com/analogdevicesinc/openocd
336+
function(family_flash_openocd_adi TARGET)
337+
if (DEFINED MAXIM_PATH)
338+
# use openocd from msdk with MAXIM_PATH cmake variable first if the user
339+
# specified it
340+
set(OPENOCD ${MAXIM_PATH}/Tools/OpenOCD/openocd)
341+
set(OPENOCD_OPTION2 "-s ${MAXIM_PATH}/Tools/OpenOCD/scripts")
342+
elseif (DEFINED ENV{MAXIM_PATH})
343+
# use openocd from msdk with MAXIM_PATH environment variable. Normalize
344+
# since msdk can be Windows (MinGW) or Linux
345+
file(TO_CMAKE_PATH "$ENV{MAXIM_PATH}" MAXIM_PATH_NORM)
346+
set(OPENOCD ${MAXIM_PATH_NORM}/Tools/OpenOCD/openocd)
347+
set(OPENOCD_OPTION2 "-s ${MAXIM_PATH_NORM}/Tools/OpenOCD/scripts")
348+
else()
349+
# compiled from source
350+
if (NOT DEFINED OPENOCD_ADI_PATH)
351+
set(OPENOCD_ADI_PATH $ENV{HOME}/app/openocd_adi)
352+
endif ()
353+
set(OPENOCD ${OPENOCD_ADI_PATH}/src/openocd)
354+
set(OPENOCD_OPTION2 "-s ${OPENOCD_ADI_PATH}/tcl")
355+
endif ()
356+
357+
family_flash_openocd(${TARGET})
358+
endfunction()
359+
360+
317361
# Flash with UF2
318362
function(family_flash_uf2 TARGET FAMILY_ID)
319363
add_custom_target(${TARGET}-uf2

ports/maxim/CMakeLists.txt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
cmake_minimum_required(VERSION 3.17)
2+
3+
include(${CMAKE_CURRENT_LIST_DIR}/../family_support.cmake)
4+
5+
project(tinyuf2 C ASM)
6+
set(CMAKE_EXECUTABLE_SUFFIX .elf)
7+
8+
#------------------------------------
9+
# TinyUF2
10+
#------------------------------------
11+
add_executable(tinyuf2
12+
board_flash.c
13+
boards.c
14+
${TOP}/lib/tinyusb/src/portable/mentor/musb/dcd_musb.c
15+
)
16+
target_link_options(tinyuf2 PUBLIC
17+
"LINKER:--script=${CMAKE_CURRENT_LIST_DIR}/linker/${MAX_DEVICE}/${MAX_DEVICE}_boot.ld"
18+
"LINKER:--script=${CMAKE_CURRENT_LIST_DIR}/linker/${MAX_DEVICE}/${MAX_DEVICE}_common.ld"
19+
)
20+
21+
family_configure_tinyuf2(tinyuf2 OPT_MCU_${MAX_DEVICE_UPPER})
22+
family_flash_jlink(tinyuf2)
23+
family_flash_openocd_adi(tinyuf2)
24+
25+
#------------------------------------
26+
# Application
27+
#------------------------------------
28+
add_subdirectory(${TOP}/apps/self_update ${CMAKE_BINARY_DIR}/apps/self_update)
29+
add_subdirectory(${TOP}/apps/blinky ${CMAKE_BINARY_DIR}/apps/blinky)
30+
add_subdirectory(${TOP}/apps/erase_firmware ${CMAKE_BINARY_DIR}/apps/erase_firmware)

0 commit comments

Comments
 (0)