Newer
Older
mbed-os / tools / cmake / upload_methods / UploadMethodSTLINK.cmake
# Copyright (c) 2020 ARM Limited. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

### stlink Upload Method
# See docs for valid parameters.

set(UPLOAD_SUPPORTS_DEBUG TRUE)

### Check if upload method can be enabled on this machine
find_package(stlink)
set(UPLOAD_STLINK_FOUND ${stlink_FOUND})

### Figure out --serial argument
if(DEFINED STLINK_PROBE_SN AND NOT "${STLINK_PROBE_SN}" STREQUAL "")
	set(STLINK_SERIAL_ARGUMENT --serial ${STLINK_PROBE_SN} CACHE INTERNAL "" FORCE)
else()
	set(STLINK_SERIAL_ARGUMENT "" CACHE INTERNAL "" FORCE)
endif()

### Function to generate upload target
function(gen_upload_target TARGET_NAME BIN_FILE)

	add_custom_target(flash-${TARGET_NAME}
		COMMENT "Flashing ${TARGET_NAME} with stlink..."
		COMMAND ${st-flash_PATH}
		--reset # Reset chip after flashing
		${STLINK_SERIAL_ARGUMENT}
		${STLINK_ARGS}
		write ${BIN_FILE} ${STLINK_LOAD_ADDRESS})

	add_dependencies(flash-${TARGET_NAME} ${TARGET_NAME})
endfunction(gen_upload_target)

### Function to generate debug target
add_custom_target(gdbserver
	COMMENT "Starting st-util GDB server"
	COMMAND
	${st-util_PATH}
	${STLINK_SERIAL_ARGUMENT}
	${STLINK_ARGS}
	--listen_port=${GDB_PORT}
	USES_TERMINAL)