Clean up HID EEPROM loader shim application code, simplify project makefile. Ensure...
authorDean Camera <dean@fourwalledcubicle.com>
Sun, 8 Jul 2012 19:38:38 +0000 (19:38 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Sun, 8 Jul 2012 19:38:38 +0000 (19:38 +0000)
LUFA/Build/HID_EEPROM_Loader/HID_EEPROM_Loader.c
LUFA/Build/HID_EEPROM_Loader/makefile
LUFA/Build/lufa.hid.in

index 812b1b2..2d20153 100644 (file)
   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 <avr/io.h>
 #include <avr/eeprom.h>
 #include <avr/pgmspace.h>
 
 /* 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)
 {
index 6cdd8cf..76058d3 100644 (file)
@@ -13,7 +13,7 @@ MCU          = at90usb1287
 ARCH         = AVR8\r
 F_CPU        = 1000000\r
 F_USB        = $(F_CPU)\r
-OPTIMIZATION = 0\r
+OPTIMIZATION = s\r
 TARGET       = HID_EEPROM_Loader\r
 SRC          = $(TARGET).c\r
 LUFA_PATH    = ../../../LUFA/\r
@@ -22,16 +22,15 @@ LD_FLAGS     =
 OBJECT_FILES = InputEEData.o\r
 \r
 # Default target\r
-all: InputEEData.o hex\r
+all:\r
 \r
-.PHONY: InputEEData.o\r
+# Determine the AVR sub-architecture of the build main application object file\r
+FIND_AVR_SUBARCH = avr$(shell avr-objdump -f $(TARGET).o | grep architecture | cut -d':' -f3 | cut -d',' -f1)\r
+\r
+# Create a linkable object file with the input binary EEPROM data stored in the FLASH section\r
 InputEEData.o: InputEEData.bin $(TARGET).o $(MAKEFILE_LIST)\r
        @echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a object file \"$@\"\r
-       avr-objcopy -I binary -O elf32-avr -B avr$(shell avr-objdump -f $(TARGET).o | grep architecture | cut -d':' -f3 | cut -d',' -f1) \\r
-         --rename-section .data=.progmem.data,contents,alloc,readonly,data \\r
-         --redefine-sym _binary_$(basename $@)_bin_start=$(basename $@) \\r
-         --redefine-sym _binary_$(basename $@)_bin_size=$(basename $@)_size_sym \\r
-         $< $@\r
+       avr-objcopy -I binary -O elf32-avr -B $(call FIND_AVR_SUBARCH) --rename-section .data=.progmem.data,contents,alloc,readonly,data $< $@\r
 \r
 # Include LUFA build script makefiles\r
 include $(LUFA_PATH)/Build/lufa.core.in\r
index 8fd2468..60be46d 100644 (file)
@@ -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