]> git.tdb.fi Git - model-railway-devices.git/blob - firmware/Makefile
b92db65dbab59049b86ea27da51269d2d50b4c46
[model-railway-devices.git] / firmware / Makefile
1 MCU := atmega328p
2 CLOCK := 16000000
3 CC := avr-gcc
4 FEATURES := LCD_SHIFTREG LCD_ASYNC
5 CFLAGS := -Wall -Os -ffunction-sections -fdata-sections -mmcu=$(MCU) -DF_CPU=$(CLOCK) $(patsubst %,-D%,$(FEATURES))
6 LDFLAGS := -Os -Wl,--gc-sections -mmcu=$(MCU)
7 AVRDUDE := avrdude
8 OBJCOPY := avr-objcopy
9 ifeq ($(MCU),atmega168)
10 BAUD := 19200
11 else
12 BAUD := 57600
13 endif
14
15 help:
16         @echo "Targets:"
17         @echo "  %.hex:    Build firmware from %.c"
18         @echo "  upload-%: Upload firmware to AVR"
19         @echo "  clean:    Clean all built files"
20         @echo
21         @echo "Variables:"
22         @echo "  MCU:      Microcontroller type"
23         @echo "            Arduino Duemilanove = atmega328p (default)"
24         @echo "            Arduino Mini = atmega168"
25
26 %.hex: %.elf
27         $(OBJCOPY) -O ihex $< $@
28
29 %.elf: %.o
30         $(CC) $(LDFLAGS) -o $@ $^
31
32 %.o: %.c
33         $(CC) -c $(CFLAGS) -o $@ $<
34
35 upload-%: %.hex
36         $(AVRDUDE) -p$(MCU) -carduino -P/dev/ttyUSB0 -b$(BAUD) -D -Uflash:w:$<:i
37
38 clean:
39         $(RM) *.hex
40         $(RM) *.elf
41         $(RM) *.o
42
43 s88w-t.elf: serial.o timer.o eeprom.o
44 s88w-r.elf: serial.o lcd.o timer.o