Tweak upload method dependencies to be specified at a higher level, add LinkServer version check (#404)

pull/15531/head
Jamie Smith 2024-12-18 01:23:09 -08:00 committed by GitHub
parent 156cd15c50
commit 15ab0c38fd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 31 additions and 19 deletions

View File

@ -146,4 +146,10 @@ function(mbed_generate_upload_target target)
else()
gen_upload_target(${target} ${CMAKE_CURRENT_BINARY_DIR}/$<TARGET_FILE_BASE_NAME:${target}>.hex)
endif()
# Make sure building the upload target causes the target to be built first
if(TARGET flash-${target})
add_dependencies(flash-${target} ${target})
endif()
endfunction()

View File

@ -7,6 +7,7 @@
# This module defines:
# LinkServer - Whether the reqested tools were found.
# LinkServer_PATH - full path to the LinkServer command line tool.
# LinkServer_VERSION - version number of LinkServer
# Check for LinkServer install folders on Windows
if("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
@ -26,6 +27,16 @@ find_program(LinkServer_PATH
HINTS ${LINKSERVER_HINTS}
)
find_package_handle_standard_args(LinkServer REQUIRED_VARS LinkServer_PATH)
if(EXISTS "${LinkServer_PATH}")
# Detect version
execute_process(COMMAND ${LinkServer_PATH} --version
OUTPUT_VARIABLE LinkServer_VERSION_OUTPUT)
# The output looks like "LinkServer v1.2.45 [Build 45] [2023-07-25 09:54:50]", so use a regex to grab the version
string(REGEX REPLACE "LinkServer v([0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" LinkServer_VERSION ${LinkServer_VERSION_OUTPUT})
endif()
find_package_handle_standard_args(LinkServer REQUIRED_VARS LinkServer_PATH VERSION_VAR LinkServer_VERSION)

View File

@ -28,6 +28,4 @@ function(gen_upload_target TARGET_NAME BINARY_FILE)
--write ${BINARY_FILE}
--reset)
add_dependencies(flash-${TARGET_NAME} ${TARGET_NAME})
endfunction(gen_upload_target)

View File

@ -71,9 +71,6 @@ exit
-ExitOnError
-CommandFile ${COMMAND_FILE_PATH})
add_dependencies(flash-${TARGET_NAME} ${TARGET_NAME})
endfunction(gen_upload_target)
### Commands to run the debug server.

View File

@ -23,6 +23,12 @@ endif()
find_package(LinkServer)
set(UPLOAD_LINKSERVER_FOUND ${LinkServer_FOUND})
if(LinkServer_FOUND)
if(${LinkServer_VERSION} VERSION_LESS 1.5.30 AND "${MBED_OUTPUT_EXT}" STREQUAL "hex")
message(FATAL_ERROR "LinkServer <1.5.30 does not support flashing hex files! Please upgrade LinkServer and then clean and rebuild the project.")
endif()
endif()
### Function to generate upload target
function(gen_upload_target TARGET_NAME BINARY_FILE)
@ -37,8 +43,6 @@ function(gen_upload_target TARGET_NAME BINARY_FILE)
--addr ${MBED_UPLOAD_BASE_ADDR}
${BINARY_FILE})
add_dependencies(flash-${TARGET_NAME} ${TARGET_NAME})
endfunction(gen_upload_target)
### Commands to run the debug server.

View File

@ -25,6 +25,4 @@ function(gen_upload_target TARGET_NAME BINARY_FILE)
${mbed-os_SOURCE_DIR}/tools/python
VERBATIM)
add_dependencies(flash-${TARGET_NAME} ${TARGET_NAME})
endfunction(gen_upload_target)

View File

@ -41,7 +41,6 @@ endif()
function(gen_upload_target TARGET_NAME BINARY_FILE)
# unlike other upload methods, OpenOCD uses the elf file
add_custom_target(flash-${TARGET_NAME}
COMMENT "Flashing ${TARGET_NAME} with OpenOCD..."
COMMAND ${OpenOCD}
@ -51,7 +50,6 @@ function(gen_upload_target TARGET_NAME BINARY_FILE)
-c "program ${BINARY_FILE} ${MBED_UPLOAD_BASE_ADDR} reset exit"
VERBATIM)
add_dependencies(flash-${TARGET_NAME} ${TARGET_NAME})
endfunction(gen_upload_target)
### Commands to run the debug server.

View File

@ -29,12 +29,16 @@ function(gen_upload_target TARGET_NAME BINARY_FILE)
list(APPEND PICOTOOL_TARGET_ARGS --address ${PICOTOOL_TARGET_ADDRESS})
endif()
if("${MBED_OUTPUT_EXT}" STREQUAL "hex")
message(FATAL_ERROR "Bin file output must be enabled to use picotool. Set MBED_OUTPUT_EXT to empty string or to 'bin' in your top level CMakeLists.txt!")
endif()
add_custom_target(flash-${TARGET_NAME}
COMMAND ${Picotool}
load
--verify
--execute
$<TARGET_FILE:${TARGET_NAME}>)
add_dependencies(flash-${TARGET_NAME} ${TARGET_NAME})
--offset ${MBED_UPLOAD_BASE_ADDR}
${CMAKE_CURRENT_BINARY_DIR}/$<TARGET_FILE_BASE_NAME:${TARGET_NAME}>.bin)
endfunction(gen_upload_target)

View File

@ -34,7 +34,6 @@ function(gen_upload_target TARGET_NAME BINARY_FILE)
--base-address ${MBED_UPLOAD_BASE_ADDR}
${BINARY_FILE})
add_dependencies(flash-${TARGET_NAME} ${TARGET_NAME})
endfunction(gen_upload_target)
### Commands to run the debug server.

View File

@ -32,7 +32,6 @@ function(gen_upload_target TARGET_NAME BINARY_FILE)
${STLINK_ARGS}
write ${BINARY_FILE} ${MBED_UPLOAD_BASE_ADDR})
add_dependencies(flash-${TARGET_NAME} ${TARGET_NAME})
endfunction(gen_upload_target)
### Commands to run the debug server.

View File

@ -36,8 +36,6 @@ function(gen_upload_target TARGET_NAME BINARY_FILE)
-w ${BINARY_FILE} ${MBED_UPLOAD_BASE_ADDR}
-rst)
add_dependencies(flash-${TARGET_NAME} ${TARGET_NAME})
endfunction(gen_upload_target)
### Commands to run the debug server.