diff --git a/makefiles/tools/edbg.inc.mk b/makefiles/tools/edbg.inc.mk index 2fe20b108412d..38e598ffae235 100644 --- a/makefiles/tools/edbg.inc.mk +++ b/makefiles/tools/edbg.inc.mk @@ -1,9 +1,15 @@ include $(RIOTMAKE)/tools/edbg-devices.inc.mk +# Edbg use a bin file for flashing +FLASHFILE ?= $(BINFILE) + RIOT_EDBG = $(RIOTTOOLS)/edbg/edbg EDBG ?= $(RIOT_EDBG) -FLASHER ?= $(EDBG) -FLASHFILE ?= $(BINFILE) +ifneq (0,$(shell command -v $(EDBG) 2>&1 > /dev/null ; echo $$?)) + FLASHDEPS += $(RIOT_EDBG) + EDBG := $(RIOT_EDBG) +endif + # 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 +21,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 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.