From ea3040da12af46e5d227fe5edeb4d580e42d7658 Mon Sep 17 00:00:00 2001 From: Moritz Fischer Date: Tue, 5 Jan 2016 13:57:04 -0800 Subject: firmware: e3xx: Added .eeprom section that gets written. The EEPROM section was not getting written by make install, so whatever was in there is in there. Signed-off-by: Moritz Fischer --- firmware/e300/battery/Makefile | 9 +++++++-- firmware/e300/battery/eeprom.c | 3 +++ 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'firmware') diff --git a/firmware/e300/battery/Makefile b/firmware/e300/battery/Makefile index 1ce0bf279..7f825cbd8 100644 --- a/firmware/e300/battery/Makefile +++ b/firmware/e300/battery/Makefile @@ -40,17 +40,18 @@ PROGRAMMER = jtag3isp PORT = usb AVRDUDE = avrdude -p $(MMCU) -c $(PROGRAMMER) -P $(PORT) -V FUSES = -U hfuse:w:hfuse.hex:i -U lfuse:w:lfuse.hex:i -U efuse:w:efuse.hex:i -u +EEPROM = -U eeprom:w:$(TARGET).eeprom.hex ################################################## # Global Targets ################################################## -all: $(TARGET).hex size hfuse.hex lfuse.hex efuse.hex +all: $(TARGET).hex $(TARGET).eeprom.hex size hfuse.hex lfuse.hex efuse.hex clean: $(RM) *.o *.elf *.hex install: all - $(AVRDUDE) -U flash:w:$(TARGET).hex:i $(FUSES) + $(AVRDUDE) -U flash:w:$(TARGET).hex:i $(FUSES) $(EEPROM) size: $(TARGET).hex @$(SIZE) --format=SysV --mcu=$(MMCU) $(TARGET).elf @@ -74,6 +75,10 @@ efuse.hex: fuses.hex $(TARGET).hex: $(TARGET).elf $(OBJCOPY) -R .eeprom -R .fuse -O ihex $< $@ +$(TARGET).eeprom.hex: $(TARGET).elf + $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma \ + .eeprom=0 -O ihex $(TARGET).elf $@ + $(TARGET).elf: $(SRCS:.c=.o) $(CC) -mmcu=$(MMCU) $^ -o $@ diff --git a/firmware/e300/battery/eeprom.c b/firmware/e300/battery/eeprom.c index f8bc172d2..79b1f9052 100644 --- a/firmware/e300/battery/eeprom.c +++ b/firmware/e300/battery/eeprom.c @@ -16,6 +16,9 @@ #include "eeprom.h" #include +/* default values for eeprom */ +char eeprom[] EEMEM = {0x00, 0x00, 0x00}; + /* the avr libc wants it this way ... */ static uint8_t* EEPROM_AUTOBOOT_OFFSET = (uint8_t *) 0x00; static uint16_t *EEPROM_LAST_FULL_OFFSET = (uint16_t *) 0x04; -- cgit v1.2.3