Merge pull request #16050 from aabadie/pr/make/edbg_script

tools/edbg: add and use wrapper shell script
This commit is contained in:
Francisco 2021-02-21 19:52:46 +01:00 committed by GitHub
commit e0211f4574
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 67 additions and 15 deletions

51
dist/tools/edbg/edbg.sh vendored Executable file
View File

@ -0,0 +1,51 @@
#!/usr/bin/env bash
# Default edbg command
: "${EDBG:=edbg}"
# Edbg command base arguments
: "${EDBG_ARGS:=}"
test_imagefile() {
if [ ! -f "${IMAGE_FILE}" ]; then
echo "Error: Unable to locate IMAGE_FILE"
echo " (${IMAGE_FILE})"
exit 1
fi
}
do_flash() {
IMAGE_FILE=$1
test_imagefile
# Configure edbg flash flags
local _fflags="${EDBG_ARGS} --verbose --file ${IMAGE_FILE} --verify"
# flash device
sh -c "${EDBG} ${_fflags} || ${EDBG} ${_fflags} --program" && echo 'Done flashing'
}
do_reset() {
sh -c "${EDBG} ${EDBG_ARGS}"
}
#
# parameter dispatching
#
ACTION="$1"
shift # pop $1 from $@
case "${ACTION}" in
flash)
echo "### Flashing Target ###"
do_flash "$@"
;;
reset)
echo "### Resetting Target ###"
do_reset
;;
*)
echo "Usage: $0 {flash|reset}"
echo " flash <flashfile>"
exit 2
;;
esac

View File

@ -1,9 +1,11 @@
include $(RIOTMAKE)/tools/edbg-devices.inc.mk
RIOT_EDBG = $(RIOTTOOLS)/edbg/edbg
EDBG ?= $(RIOT_EDBG)
FLASHER ?= $(EDBG)
# Edbg use a bin file for flashing
FLASHFILE ?= $(BINFILE)
EDBG ?= $(RIOTTOOLS)/edbg/edbg
FLASHDEPS += $(EDBG)
# Use USB serial number to select device when more than one is connected
# Use /dist/tools/usb-serial/list-ttys.sh to find out serial number.
# Usage:
@ -15,22 +17,21 @@ endif
# Set offset according to IMAGE_OFFSET if it's defined
EDBG_ARGS += $(if $(IMAGE_OFFSET),--offset $(IMAGE_OFFSET))
EDBG_ARGS += --target $(EDBG_DEVICE_TYPE)
FFLAGS ?= $(EDBG_ARGS) --target $(EDBG_DEVICE_TYPE) --verbose \
--file $(FLASHFILE)
EDBG_TARGETS = flash flash-only reset
# Export EDBG to required targets
$(call target-export-variables,$(EDBG_TARGETS),EDBG)
ifeq ($(RIOT_EDBG),$(FLASHER))
FLASHDEPS += $(RIOT_EDBG)
endif
RESET ?= $(EDBG)
RESET_FLAGS ?= $(EDBG_ARGS) --target $(EDBG_DEVICE_TYPE)
# Export EDBG_ARGS to required targets
$(call target-export-variables,$(EDBG_TARGETS),EDBG_ARGS)
define edbg-flash-recipe
$(call check_cmd,$(FLASHER),Flash program)
$(FLASHER) $(FFLAGS) --verify || $(FLASHER) $(FFLAGS) --verify --program
endef
# Set flasher and reset for the RIOT build system
FLASHER ?= $(RIOTTOOLS)/edbg/edbg.sh
FFLAGS ?= flash $(FLASHFILE)
flash-recipe = $(edbg-flash-recipe)
RESET ?= $(RIOTTOOLS)/edbg/edbg.sh
RESET_FLAGS ?= reset
# use openocd for debugging, must be included at the end so FLASHER/RESET
# variables are already set for edbg.