Update to latest DMBS version.
authorDean Camera <dean@fourwalledcubicle.com>
Sun, 3 Apr 2016 01:35:25 +0000 (11:35 +1000)
committerDean Camera <dean@fourwalledcubicle.com>
Sun, 3 Apr 2016 01:35:25 +0000 (11:35 +1000)
LUFA/Build/DMBS/DMBS/atprogram.mk
LUFA/Build/DMBS/DMBS/avrdude.mk
LUFA/Build/DMBS/DMBS/core.mk
LUFA/Build/DMBS/DMBS/gcc.mk
LUFA/Build/DMBS/Readme.md

index de801b0..7e3815e 100644 (file)
@@ -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
 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       ?=
 
 ATPROGRAM_INTERFACE  ?= jtag
 ATPROGRAM_PORT       ?=
 
index d9b4df0..149cf5c 100644 (file)
@@ -9,7 +9,7 @@
 DMBS_BUILD_MODULES         += AVRDUDE
 DMBS_BUILD_TARGETS         += avrdude avrdude-ee
 DMBS_BUILD_MANDATORY_VARS  += MCU TARGET
 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 +=
 
 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_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:
 #
 #
 # 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_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)))
 
 # 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)\"
 # 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)
 
 # Programs in the target EEPROM memory using AVRDUDE
 avrdude-ee: $(TARGET).eep $(MAKEFILE_LIST)
index 4199256..bc85777 100644 (file)
@@ -55,7 +55,7 @@ SHELL = /bin/sh
 
 
 # Current DMBS release version
 
 
 # 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
 
 
 # Converts a given input to a printable output using "(None)" if no items are in the list
index b9347a6..f3c6955 100644 (file)
@@ -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
 
 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)
 # 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)
index f5533a9..448db1e 100644 (file)
@@ -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.
 
 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
 Here's an example user makefile:
 
        MCU          = atmega128