102 lines
2.1 KiB
Makefile
102 lines
2.1 KiB
Makefile
|
|
CPU_StepperControl = atmega16m1
|
|
CPU_ECRIS_REMOTE=atxmega128a1
|
|
CPU_lcd=atmega16
|
|
CPU_sologse=atmega644
|
|
CPU_chaos=atmega32m1
|
|
CPU_leia=atmega32m1
|
|
|
|
pMCU-atmega16m1 = m16
|
|
pMCU-atmega32m1 = m32m1
|
|
pMCU-atmega16 = m16
|
|
pMCU-atmega644 = m644
|
|
|
|
MCU = $(CPU_$*)
|
|
|
|
CC=avr-gcc -Wall -Wno-parentheses -MMD -std=c99 -O2 -mmcu=$(MCU) \
|
|
-funsigned-char \
|
|
-funsigned-bitfields \
|
|
-fpack-struct \
|
|
-fshort-enums
|
|
|
|
CFLAGS = $($*_CFLAGS) $(DEBUG)
|
|
|
|
%.s: %.c revision.h
|
|
$(CC) -S $(CFLAGS) -fverbose-asm $<
|
|
|
|
%.o: %.c revision.h
|
|
$(CC) -g -c $(CFLAGS) $<
|
|
|
|
revision.h: .git
|
|
git log --pretty='#define Revision 0x%h' --abbrev=8 HEAD^! > revision.h+
|
|
git log --pretty='#define Id "0x%h %as %an"' --abbrev=8 HEAD^! >> revision.h+
|
|
diff -q revision.h+ revision.h || \mv -v revision.h+ revision.h
|
|
|
|
-include *.d
|
|
|
|
|
|
LDFLAGS =
|
|
|
|
%.elf: %.o
|
|
$(CC) $(CFLAGS) -Wl,-Map=$*.map,--cref $^ --output $@ $(LDFLAGS)
|
|
|
|
OBJCOPY = avr-objcopy
|
|
|
|
%.hex: %.elf
|
|
$(OBJCOPY) -O ihex -R .eeprom $< $@
|
|
|
|
%.eeprom: %.elf
|
|
$(OBJCOPY) -O ihex -j .eeprom --change-section-lma .eeprom=0 $< $@
|
|
|
|
AVRDUDE = avrdude
|
|
AVRDUDE_PROGRAMMER = avrispmkii
|
|
AVRDUDE_PORT = usb
|
|
AVRDUDE_WRITE_FLASH = -U flash:w:$<
|
|
|
|
AD = $(AVRDUDE) -p $(pMCU-$(MCU)) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
|
|
|
|
%.burn: %.hex
|
|
$(AD) -U flash:v:$< || $(AD) -U flash:w:$<
|
|
|
|
lfuse_lcd=0xff
|
|
|
|
# CKDIV8 : no
|
|
# CKOUT: yes, on PB1, pin 41
|
|
# SUT: max
|
|
# CLKSEL: external clock
|
|
lfuse_sologse=0xA0
|
|
|
|
lfuse_chaos=0xef
|
|
chaos_CFLAGS = -I.
|
|
chaos.o: ads8688.h ltc1655.h spi_slave.h tick.h hvosc.h hvled.h
|
|
chaos.s: ads8688.h ltc1655.h spi_slave.h tick.h hvosc.h hvled.h
|
|
chaos.hex: chaos.eeprom
|
|
|
|
lfuse_leia=0xef
|
|
leia_CFLAGS = -I.
|
|
leia.o: spi_slave.h
|
|
leia.s: spi_slave.h
|
|
leia.hex: leia.eeprom
|
|
|
|
%.lfuse:
|
|
$(AD) -B 5 -U lfuse:w:$(lfuse_$*):m
|
|
|
|
%.id:
|
|
$(AD) -B 5 -U lfuse:v:$(lfuse_$*):m
|
|
|
|
clean:
|
|
rm -f *.hex *.o *.s *.map *.elf *.d
|
|
|
|
VPATH = .:LCD/lcd_slave_sync:sologse:chaos:leia
|
|
lcd_CFLAGS = -I. -DDEBUG
|
|
lcd.o: lcd.c spi_slave.h lcd_routines.h lcd_routines.c uart_atmega16.c
|
|
|
|
.PHONY: eeprom.eeprom
|
|
%.eeprom.eeprom: %.hex
|
|
$(AD) -U eeprom:r:$@
|
|
%.eeprom.burn: %.eeprom
|
|
$(AD) -U eeprom:v:$< || $(AD) -U eeprom:w:$<
|
|
|
|
%.ad:
|
|
$(AD) -v -t
|
|
|