@@ -33,6 +33,10 @@ if (NOT DEFINED TOOLCHAIN)
3333 set (TOOLCHAIN gcc)
3434endif ()
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
229233function (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 )
304321endfunction ()
@@ -314,6 +331,33 @@ function(family_flash_openocd_wch TARGET)
314331endfunction ()
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
318362function (family_flash_uf2 TARGET FAMILY_ID)
319363 add_custom_target (${TARGET} -uf2
0 commit comments