diff --git a/LUFA/Build/DMBS/DMBS/atprogram.mk b/LUFA/Build/DMBS/DMBS/atprogram.mk index de801b0031..7e3815e4c8 100644 --- a/LUFA/Build/DMBS/DMBS/atprogram.mk +++ b/LUFA/Build/DMBS/DMBS/atprogram.mk @@ -55,7 +55,7 @@ ERROR_IF_EMPTY ?= $(if $(strip $($(strip $(1)))), , $(error Makefile $(strip $ ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(strip $(1)) option must be Y or N)) # Default values of optionally user-supplied variables -ATPROGRAM_PROGRAMMER ?= jtagice3 +ATPROGRAM_PROGRAMMER ?= atmelice ATPROGRAM_INTERFACE ?= jtag ATPROGRAM_PORT ?= diff --git a/LUFA/Build/DMBS/DMBS/avrdude.mk b/LUFA/Build/DMBS/DMBS/avrdude.mk index d9b4df048f..149cf5c14b 100644 --- a/LUFA/Build/DMBS/DMBS/avrdude.mk +++ b/LUFA/Build/DMBS/DMBS/avrdude.mk @@ -9,7 +9,7 @@ DMBS_BUILD_MODULES += AVRDUDE DMBS_BUILD_TARGETS += avrdude avrdude-ee DMBS_BUILD_MANDATORY_VARS += MCU TARGET -DMBS_BUILD_OPTIONAL_VARS += AVRDUDE_PROGRAMMER AVRDUDE_PORT AVRDUDE_FLAGS +DMBS_BUILD_OPTIONAL_VARS += AVRDUDE_PROGRAMMER AVRDUDE_PORT AVRDUDE_FLAGS AVRDUDE_MEMORY DMBS_BUILD_PROVIDED_VARS += DMBS_BUILD_PROVIDED_MACROS += @@ -37,6 +37,8 @@ DMBS_BUILD_PROVIDED_MACROS += # AVRDUDE_PROGRAMMER - Name of programming hardware to use # AVRDUDE_PORT - Name of communication port to use # AVRDUDE_FLAGS - Flags to pass to avr-dude +# AVRDUDE_MEMORY - Memory space to program application into (e.g. +# "application" for an XMEGA DFU device) # # PROVIDED VARIABLES: # @@ -58,6 +60,7 @@ ERROR_IF_NONBOOL ?= $(if $(filter Y N, $($(strip $(1)))), , $(error Makefile $(s AVRDUDE_PROGRAMMER ?= jtagicemkii AVRDUDE_PORT ?= usb AVRDUDE_FLAGS ?= +AVRDUDE_MEMORY ?= flash # Sanity check user supplied values $(foreach MANDATORY_VAR, $(DMBS_BUILD_MANDATORY_VARS), $(call ERROR_IF_UNSET, $(MANDATORY_VAR))) @@ -75,7 +78,7 @@ BASE_AVRDUDE_FLAGS := -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) # Programs in the target FLASH memory using AVRDUDE avrdude: $(TARGET).hex $(MAKEFILE_LIST) @echo $(MSG_AVRDUDE_CMD) Programming device \"$(MCU)\" FLASH using \"$(AVRDUDE_PROGRAMMER)\" on port \"$(AVRDUDE_PORT)\" - avrdude $(BASE_AVRDUDE_FLAGS) -U flash:w:$< $(AVRDUDE_FLAGS) + avrdude $(BASE_AVRDUDE_FLAGS) -U $(AVRDUDE_MEMORY):w:$< $(AVRDUDE_FLAGS) # Programs in the target EEPROM memory using AVRDUDE avrdude-ee: $(TARGET).eep $(MAKEFILE_LIST) diff --git a/LUFA/Build/DMBS/DMBS/core.mk b/LUFA/Build/DMBS/DMBS/core.mk index 41992566d5..bc85777a71 100644 --- a/LUFA/Build/DMBS/DMBS/core.mk +++ b/LUFA/Build/DMBS/DMBS/core.mk @@ -55,7 +55,7 @@ SHELL = /bin/sh # Current DMBS release version -DMBS_VERSION = 0.3 +DMBS_VERSION = 0.4 # Converts a given input to a printable output using "(None)" if no items are in the list diff --git a/LUFA/Build/DMBS/DMBS/gcc.mk b/LUFA/Build/DMBS/DMBS/gcc.mk index b9347a60bc..f3c695502f 100644 --- a/LUFA/Build/DMBS/DMBS/gcc.mk +++ b/LUFA/Build/DMBS/DMBS/gcc.mk @@ -192,6 +192,12 @@ BASE_C_FLAGS := -x c -O$(OPTIMIZATION) -std=$(C_STANDARD) -Wstrict-prototypes BASE_CPP_FLAGS := -x c++ -O$(OPTIMIZATION) -std=$(CPP_STANDARD) BASE_ASM_FLAGS := -x assembler-with-cpp +# This flag is required for bootloaders as GCC will emit invalid jump table +# assembly code for devices with large amounts of flash; the jump table target +# is extracted from FLASH without using the correct ELPM instruction, resulting +# in a pseudo-random jump target. +BASE_CC_FLAGS += -fno-jump-tables + # Create a list of flags to pass to the linker BASE_LD_FLAGS := -lm -Wl,-Map=$(TARGET).map,--cref -Wl,--gc-sections ifeq ($(LINKER_RELAXATIONS), Y) diff --git a/LUFA/Build/DMBS/Readme.md b/LUFA/Build/DMBS/Readme.md index f5533a9abf..448db1e703 100644 --- a/LUFA/Build/DMBS/Readme.md +++ b/LUFA/Build/DMBS/Readme.md @@ -35,6 +35,10 @@ are included via a GNU Make `include` directive. While the DMBS `core` module is always required, you can pick and choose what other modules you wish to add to your user project. +DMBS is also used in the LUFA Project which provides a +[detailed documentation](http://www.fourwalledcubicle.com/files/LUFA/Doc/151115/html/_page__build_system.html) +of DMBS. + Here's an example user makefile: MCU = atmega128