From 93cd8a1b04c1629ee50f49287601d2134d66ee3a Mon Sep 17 00:00:00 2001 From: Marian Buschsieweke Date: Wed, 20 Feb 2019 21:40:40 +0100 Subject: [PATCH 1/2] makefiles/tools: fix avrdude with ICSP programmers Currently the flag "-P ${PORT}" is added to avrdude regardless of the programmer used. But this flag should only be set for programmers that operate over a serial port - e.g. like the various Arduino bootloaders. This commit changes the behaviour so that the "-P flag" is only set for only of the default programmers of the various AVR boards supported by RIOT. This allows to use ICSP programmers (e.g. like the usbtiny) like this: make BOARD=arduino-uno PROGRAMMER=usbtiny --- makefiles/tools/avrdude.inc.mk | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/makefiles/tools/avrdude.inc.mk b/makefiles/tools/avrdude.inc.mk index b45c685f48..148db4c1ad 100644 --- a/makefiles/tools/avrdude.inc.mk +++ b/makefiles/tools/avrdude.inc.mk @@ -6,10 +6,14 @@ DEBUGSERVER_FLAGS = "-g -j usb :$(DEBUGSERVER_PORT)" DEBUGGER_FLAGS = "-x $(RIOTBOARD)/$(BOARD)/dist/gdb.conf $(ELFFILE)" DEBUGGER = $(DIST_PATH)/debug.sh $(DEBUGSERVER_FLAGS) $(DIST_PATH) $(DEBUGSERVER_PORT) -# make the flasher port configurable (e.g. with atmelice the port is usb) -# defaults to terminal's serial port if not configured -AVRDUDE_PORT ?= $(PORT) -PROGRAMMER_FLAGS = -P $(AVRDUDE_PORT) $(FFLAGS_EXTRA) +# Set flasher port only for programmers that require it +ifneq (,$(filter $(PROGRAMMER),arduino buspirate stk500v1 stk500v2 wiring)) + # make the flasher port configurable (e.g. with atmelice the port is usb) + # defaults to terminal's serial port if not configured + AVRDUDE_PORT ?= $(PORT) + PROGRAMMER_FLAGS += -P $(AVRDUDE_PORT) +endif +PROGRAMMER_FLAGS += $(FFLAGS_EXTRA) # don't force to flash HEXFILE, but set it as default FLASHFILE ?= $(HEXFILE) From 4abc41a22787f5362bd2b52b1ce2011e9911eb73 Mon Sep 17 00:00:00 2001 From: Marian Buschsieweke Date: Wed, 20 Feb 2019 21:59:06 +0100 Subject: [PATCH 2/2] makefiles/tools: Automatically set avrdude target The CPU variable in the boards Makefile.include file already contains the target CPU, so there is no reason to provide it in each board again as avrdude flag. This commit automatically sets the avrdude target from the CPU variable and removes the unneeded flags. --- boards/arduino-duemilanove/Makefile.include | 2 -- boards/arduino-mega2560/Makefile.include | 2 -- boards/arduino-uno/Makefile.include | 2 -- boards/jiminy-mega256rfr2/Makefile.include | 2 -- boards/mega-xplained/Makefile.include | 2 -- boards/waspmote-pro/Makefile.include | 2 -- makefiles/tools/avrdude.inc.mk | 2 ++ 7 files changed, 2 insertions(+), 12 deletions(-) diff --git a/boards/arduino-duemilanove/Makefile.include b/boards/arduino-duemilanove/Makefile.include index b736cb592a..0de1385de1 100644 --- a/boards/arduino-duemilanove/Makefile.include +++ b/boards/arduino-duemilanove/Makefile.include @@ -12,8 +12,6 @@ BAUD ?= 9600 # using avrdude. Can be overridden for debugging (which requires changes # that require to use an ISP) PROGRAMMER ?= arduino -# set mcu model for avrdude -FFLAGS += -p m328p # configure programmer speed in baud FFLAGS_EXTRA += -b 57600 diff --git a/boards/arduino-mega2560/Makefile.include b/boards/arduino-mega2560/Makefile.include index 676e8dc12d..748d6f5f7f 100644 --- a/boards/arduino-mega2560/Makefile.include +++ b/boards/arduino-mega2560/Makefile.include @@ -12,8 +12,6 @@ BAUD ?= 9600 # using avrdude. Can be overridden for debugging (which requires changes # that require to use an ISP) PROGRAMMER ?= stk500v2 -# set mcu model for avrdude -FFLAGS += -p m2560 # configure programmer speed in baud FFLAGS_EXTRA += -b 115200 diff --git a/boards/arduino-uno/Makefile.include b/boards/arduino-uno/Makefile.include index 6e0f63b778..1d413161b5 100644 --- a/boards/arduino-uno/Makefile.include +++ b/boards/arduino-uno/Makefile.include @@ -12,8 +12,6 @@ BAUD ?= 9600 # using avrdude. Can be overridden for debugging (which requires changes # that require to use an ISP) PROGRAMMER ?= arduino -# set mcu model for avrdude -FFLAGS += -p m328p # configure programmer speed in baud FFLAGS_EXTRA += -b 115200 diff --git a/boards/jiminy-mega256rfr2/Makefile.include b/boards/jiminy-mega256rfr2/Makefile.include index a1b36bccd8..7d8b4b7e2a 100644 --- a/boards/jiminy-mega256rfr2/Makefile.include +++ b/boards/jiminy-mega256rfr2/Makefile.include @@ -15,8 +15,6 @@ include $(RIOTMAKE)/tools/serial.inc.mk # using avrdude. Can be overridden for debugging (which requires changes # that require to use an ISP) PROGRAMMER ?= wiring -# set mcu model for avrdude (mandatory) -FFLAGS += -p atmega256rfr2 # Serial Baud rate for flasher is configured to 500kBaud # see /usr/include/asm-generic/termbits.h for availabel baudrates on your linux system FFLAGS_EXTRA += -b 0010005 diff --git a/boards/mega-xplained/Makefile.include b/boards/mega-xplained/Makefile.include index 891fb8f5cf..c82bb65d2b 100644 --- a/boards/mega-xplained/Makefile.include +++ b/boards/mega-xplained/Makefile.include @@ -14,8 +14,6 @@ include $(RIOTMAKE)/tools/serial.inc.mk # PROGRAMMER defaults to the external flasher Bus Pirate ISP using avrdude. PROGRAMMER ?= buspirate -# set mcu model for avrdude -FFLAGS += -p m1284p # set serial port for avrdude with buspirate ifeq ($(OS),Linux) AVRDUDE_PORT ?= /dev/ttyUSB0 diff --git a/boards/waspmote-pro/Makefile.include b/boards/waspmote-pro/Makefile.include index 6a098e05e6..bd13a546b2 100644 --- a/boards/waspmote-pro/Makefile.include +++ b/boards/waspmote-pro/Makefile.include @@ -17,8 +17,6 @@ include $(RIOTMAKE)/tools/serial.inc.mk # using avrdude. Can be overridden for debugging (which requires changes # that require to use an ISP) PROGRAMMER ?= stk500v1 -# set mcu model for avrdude -FFLAGS += -p m1281 # configure programmer speed in baud FFLAGS_EXTRA += -b 115200 # avoid error if mcu signature doesn't match diff --git a/makefiles/tools/avrdude.inc.mk b/makefiles/tools/avrdude.inc.mk index 148db4c1ad..8cde4f33fd 100644 --- a/makefiles/tools/avrdude.inc.mk +++ b/makefiles/tools/avrdude.inc.mk @@ -6,6 +6,8 @@ DEBUGSERVER_FLAGS = "-g -j usb :$(DEBUGSERVER_PORT)" DEBUGGER_FLAGS = "-x $(RIOTBOARD)/$(BOARD)/dist/gdb.conf $(ELFFILE)" DEBUGGER = $(DIST_PATH)/debug.sh $(DEBUGSERVER_FLAGS) $(DIST_PATH) $(DEBUGSERVER_PORT) +PROGRAMMER_FLAGS = -p $(subst atmega,m,$(CPU)) + # Set flasher port only for programmers that require it ifneq (,$(filter $(PROGRAMMER),arduino buspirate stk500v1 stk500v2 wiring)) # make the flasher port configurable (e.g. with atmelice the port is usb)