Commit 5087e6c3 authored by Dean Camera's avatar Dean Camera
Browse files

Clean up HID EEPROM loader shim application code, simplify project makefile....

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.
parent c4da1929
...@@ -28,14 +28,27 @@ ...@@ -28,14 +28,27 @@
this software. 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/io.h>
#include <avr/eeprom.h> #include <avr/eeprom.h>
#include <avr/pgmspace.h> #include <avr/pgmspace.h>
/* References to the binary EEPROM data linked in the AVR's FLASH memory space */ /* References to the binary EEPROM data linked in the AVR's FLASH memory space */
extern const char InputEEData[]; extern const char _binary_InputEEData_bin_start[];
extern const char InputEEData_size_sym[]; extern const char _binary_InputEEData_bin_end[];
#define InputEEData_size ((int)InputEEData_size_sym) 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) int main(void)
{ {
......
...@@ -13,7 +13,7 @@ MCU = at90usb1287 ...@@ -13,7 +13,7 @@ MCU = at90usb1287
ARCH = AVR8 ARCH = AVR8
F_CPU = 1000000 F_CPU = 1000000
F_USB = $(F_CPU) F_USB = $(F_CPU)
OPTIMIZATION = 0 OPTIMIZATION = s
TARGET = HID_EEPROM_Loader TARGET = HID_EEPROM_Loader
SRC = $(TARGET).c SRC = $(TARGET).c
LUFA_PATH = ../../../LUFA/ LUFA_PATH = ../../../LUFA/
...@@ -22,16 +22,15 @@ LD_FLAGS = ...@@ -22,16 +22,15 @@ LD_FLAGS =
OBJECT_FILES = InputEEData.o OBJECT_FILES = InputEEData.o
# Default target # 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) InputEEData.o: InputEEData.bin $(TARGET).o $(MAKEFILE_LIST)
@echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a object file \"$@\" @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) \ avr-objcopy -I binary -O elf32-avr -B $(call FIND_AVR_SUBARCH) --rename-section .data=.progmem.data,contents,alloc,readonly,data $< $@
--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 \
$< $@
# Include LUFA build script makefiles # Include LUFA build script makefiles
include $(LUFA_PATH)/Build/lufa.core.in include $(LUFA_PATH)/Build/lufa.core.in
......
...@@ -72,7 +72,7 @@ hid-ee: $(TARGET).eep $(MAKEFILE_LIST) ...@@ -72,7 +72,7 @@ hid-ee: $(TARGET).eep $(MAKEFILE_LIST)
@echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a binary file \"InputEEData.bin\" @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 avr-objcopy -I ihex -O binary $< $(patsubst %/,%,$(LUFA_PATH))/Build/HID_EEPROM_Loader/InputEEData.bin
@echo $(MSG_MAKE_CMD) Making EEPROM loader application for \"$<\" @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) hid-teensy: $(TARGET).hex $(MAKEFILE_LIST)
@echo $(MSG_HID_BOOTLOADER_CMD) Programming FLASH with teensy_loader_cli using \"$<\" @echo $(MSG_HID_BOOTLOADER_CMD) Programming FLASH with teensy_loader_cli using \"$<\"
...@@ -82,7 +82,7 @@ hid-teensy-ee: $(TARGET).hex $(MAKEFILE_LIST) ...@@ -82,7 +82,7 @@ hid-teensy-ee: $(TARGET).hex $(MAKEFILE_LIST)
@echo $(MSG_OBJCPY_CMD) Converting \"$<\" to a binary file \"InputEEData.bin\" @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 avr-objcopy -I ihex -O binary $< $(patsubst %/,%,$(LUFA_PATH))/Build/HID_EEPROM_Loader/InputEEData.bin
@echo $(MSG_MAKE_CMD) Making EEPROM loader application for \"$<\" @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 build targets for this module
.PHONY: hid hid-ee hid-teensy hid-teensy-ee .PHONY: hid hid-ee hid-teensy hid-teensy-ee
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment