1#
2# Copyright 2009 Ettus Research LLC
3#
4
5##################################################
6# Compiler
7##################################################
8CC = avr-gcc
9OBJCOPY = avr-objcopy
10STRIP = avr-strip
11OBJDUMP = avr-objdump
12SREC = srec_cat
13CFLAGS = -Os -std=gnu99 -Wall -fshort-enums -pedantic-errors -Wl,--gc-sections \
14	-Wstrict-prototypes -Wmissing-prototypes -Wcast-align -Wshadow \
15	-DENABLE_SERIAL -DCHARGER_TI -DLED_POLARITY -DDEBUG_VOID
16# -DENABLE_SERIAL	: Output serial debug
17# -DCHARGER_TI		: Use TI charger (rev B) instead of LTC (rev A)
18# -DLED_POLARITY	: Dual-polarity LED on rev B
19# -DDDR3L		: Lower DDR voltage (rev B R-divider changed, so disable this to get back into nominal range)
20# -DDEBUG_VOID		: Use (void) debug function replacements instead of inline NOOP (use if .text overflows)
21# -DI2C_REWORK		: Rev A only
22# -DDEBUG		: Enable debug routines (LED blinks, etc)
23# -DDEBUG_SAFETY	: Extra debug prints
24# -DATTINY88_DIP	: ATTINY88 DIP testing on STK600
25# -DHARDWIRE_ENABLE : LTC3675 dedicated enable lines - don't use
26
27#-Werror
28#-D IO_DEBUG
29
30##################################################
31# Files
32##################################################
33HDRS =
34SRCS =  main.c io.c power.c ltc3675.c i2c.c debug.c bq24190.c
35TARGET = main
36
37##################################################
38# Device
39##################################################
40MMCU = attiny88
41#PROGRAMMER = avrisp2
42PROGRAMMER = stk600
43PORT = usb
44AVRDUDE = avrdude -p $(MMCU) -c $(PROGRAMMER) -P $(PORT)
45
46##################################################
47# Global Targets
48##################################################
49all: $(TARGET).hex
50
51clean:
52	$(RM) *.o *.elf *.hex
53
54install: all
55	$(AVRDUDE) -U flash:w:$(TARGET).hex:i
56
57##################################################
58# Dependency Targets
59##################################################
60fuses.hex: $(TARGET).elf
61	$(OBJCOPY) -j .fuse -O ihex $< $@ --change-section-lma .fuse=0
62
63lfuse.hex: fuses.hex
64	$(SREC) $< -Intel -crop 0x00 0x01 -offset  0x00 -O $@ -Intel
65
66hfuse.hex: fuses.hex
67	$(SREC) $< -Intel -crop 0x01 0x02 -offset -0x01 -O $@ -Intel
68
69$(TARGET).hex: $(TARGET).elf
70	$(OBJCOPY) -R .eeprom -R .fuse -O ihex $< $@
71
72$(TARGET).elf: $(SRCS:.c=.o)
73	$(CC) -mmcu=$(MMCU) $^ -o $@
74
75%.o: %.c $(HDRS) Makefile
76	$(CC) -mmcu=$(MMCU) -c $< -o $@ $(CFLAGS)
77