From 5087e6c3032e2f018c01a751961b94b65062208d Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Sun, 8 Jul 2012 19:38:38 +0000 Subject: [PATCH] Clean up HID EEPROM loader shim application code, simplify project makefile. Ensure shim application is properly rebuild by explicitly cleaning it before requesting a rebuild. --- .../HID_EEPROM_Loader/HID_EEPROM_Loader.c | 19 ++++++++++++++++--- LUFA/Build/HID_EEPROM_Loader/makefile | 15 +++++++-------- LUFA/Build/lufa.hid.in | 4 ++-- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c b/LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c index 812b1b24ae..2d20153e0e 100644 --- a/LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c +++ b/LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c @@ -28,14 +28,27 @@ this software. */ +/** \file + * + * Special application to extract an EEPROM image stored in FLASH memory, and + * copy it to the device EEPROM. This application is designed to be used with + * the HID build system module of LUFA to program the EEPROM of a target device + * that uses the HID bootloader protocol, which does not have native EEPROM + * programming support. + */ + #include #include #include /* References to the binary EEPROM data linked in the AVR's FLASH memory space */ -extern const char InputEEData[]; -extern const char InputEEData_size_sym[]; -#define InputEEData_size ((int)InputEEData_size_sym) +extern const char _binary_InputEEData_bin_start[]; +extern const char _binary_InputEEData_bin_end[]; +extern const char _binary_InputEEData_bin_size[]; + +/* Friendly names for the embedded binary data stored in FLASH memory space */ +#define InputEEData _binary_InputEEData_bin_start +#define InputEEData_size ((int)_binary_InputEEData_bin_size) int main(void) { diff --git a/LUFA/Build/HID_EEPROM_Loader/makefile b/LUFA/Build/HID_EEPROM_Loader/makefile index 6cdd8cf0d6..76058d3bf8 100644 --- a/LUFA/Build/HID_EEPROM_Loader/makefile +++ b/LUFA/Build/HID_EEPROM_Loader/makefile @@ -13,7 +13,7 @@ MCU = at90usb1287 ARCH = AVR8 F_CPU = 1000000 F_USB = $(F_CPU) -OPTIMIZATION = 0 +OPTIMIZATION = s TARGET = HID_EEPROM_Loader SRC = $(TARGET).c LUFA_PATH = ../../../LUFA/ @@ -22,16 +22,15 @@ LD_FLAGS = OBJECT_FILES = InputEEData.o # Default target -all: InputEEData.o hex +all: -.PHONY: InputEEData.o +# Determine the AVR sub-architecture of the build main application object file +FIND_AVR_SUBARCH = avr$(shell avr-objdump -f $(TARGET).o | grep architecture | cut -d':' -f3 | cut -d',' -f1) + +# Create a linkable object file with the input binary EEPROM data stored in the FLASH section InputEEData.o: InputEEData.bin $(TARGET).o $(MAKEFILE_LIST) @echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a object file \"$@\" - avr-objcopy -I binary -O elf32-avr -B avr$(shell avr-objdump -f $(TARGET).o | grep architecture | cut -d':' -f3 | cut -d',' -f1) \ - --rename-section .data=.progmem.data,contents,alloc,readonly,data \ - --redefine-sym _binary_$(basename $@)_bin_start=$(basename $@) \ - --redefine-sym _binary_$(basename $@)_bin_size=$(basename $@)_size_sym \ - $< $@ + avr-objcopy -I binary -O elf32-avr -B $(call FIND_AVR_SUBARCH) --rename-section .data=.progmem.data,contents,alloc,readonly,data $< $@ # Include LUFA build script makefiles include $(LUFA_PATH)/Build/lufa.core.in diff --git a/LUFA/Build/lufa.hid.in b/LUFA/Build/lufa.hid.in index 8fd246864a..60be46ddbc 100644 --- a/LUFA/Build/lufa.hid.in +++ b/LUFA/Build/lufa.hid.in @@ -72,7 +72,7 @@ hid-ee: $(TARGET).eep $(MAKEFILE_LIST) @echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a binary file \"InputEEData.bin\" avr-objcopy -I ihex -O binary $< $(patsubst %/,%,$(LUFA_PATH))/Build/HID_EEPROM_Loader/InputEEData.bin @echo $(MSG_MAKE_CMD) Making EEPROM loader application for \"$<\" - make -C $(patsubst %/,%,$(LUFA_PATH))/Build/HID_EEPROM_Loader/ MCU=$(MCU) hid clean + make -C $(patsubst %/,%,$(LUFA_PATH))/Build/HID_EEPROM_Loader/ MCU=$(MCU) clean hid hid-teensy: $(TARGET).hex $(MAKEFILE_LIST) @echo $(MSG_HID_BOOTLOADER_CMD) Programming FLASH with teensy_loader_cli using \"$<\" @@ -82,7 +82,7 @@ hid-teensy-ee: $(TARGET).hex $(MAKEFILE_LIST) @echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a binary file \"InputEEData.bin\" avr-objcopy -I ihex -O binary $< $(patsubst %/,%,$(LUFA_PATH))/Build/HID_EEPROM_Loader/InputEEData.bin @echo $(MSG_MAKE_CMD) Making EEPROM loader application for \"$<\" - make -s -C $(patsubst %/,%,$(LUFA_PATH))/Build/HID_EEPROM_Loader/ MCU=$(MCU) hid-teensy clean + make -s -C $(patsubst %/,%,$(LUFA_PATH))/Build/HID_EEPROM_Loader/ MCU=$(MCU) clean hid-teensy # Phony build targets for this module .PHONY: hid hid-ee hid-teensy hid-teensy-ee