Makefile
changeset 0 cae83b7bfcf4
child 1 dc293f9aa873
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile	Wed Sep 24 22:41:46 2014 +0300
@@ -0,0 +1,84 @@
+QMSK_ARDUINO = qmsk
+
+PROG = hello
+
+ELF = build/src/$(PROG).elf
+HEX = build/src/$(PROG).hex
+
+build/src/hello.elf: build/src/hello.o \
+	build/qmsk/src/timer.o
+
+##
+all: $(HEX)
+
+build:
+	mkdir -p build/src build/qmsk/src
+
+clean:
+	rm -rf build/
+
+## Compiler
+MCU = atmega328p
+
+# CPU clock frequency
+CPU = 16000000
+STD = c99
+
+CC = avr-gcc
+CPPFLAGS = -DF_CPU=$(CPU)UL -I$(QMSK_ARDUINO)/include
+CFLAGS = -mmcu=$(MCU) -std=$(STD) -Os -g
+LDFLAGS = -mmcu=$(MCU)
+LDLIBS = -lc
+
+build/%.o: %.c
+	$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
+	$(CC) -MM $(CPPFLAGS) -MT $@ -MF build/$*.d $<
+
+build/%.elf:
+	$(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS)
+
+# existing .d files for rebuilding existing .o's
+-include $(wildcard build/*/*.d)
+
+dump: $(ELF)
+	avr-objdump -d $(ELF)
+
+## Assembler
+AS = avra
+ASFLAGS = 
+
+%.hex: %.s
+	$(AS) $(ASFLAGS) $<
+	mv $<.hex $@
+
+## Flashing
+# Arduino Duemilanove
+AD_PART = m328p
+AD_PROG = arduino
+AD_BAUD = 57600
+AD_PORT = /dev/arduino
+
+AD = avrdude
+ADFLAGS = -p $(AD_PART) -c $(AD_PROG) -b $(AD_BAUD) -P $(AD_PORT)
+
+build/%.hex: build/%.elf
+	avr-objcopy -O ihex -R .eeprom $< $@
+
+.PRECIOUS: build/%.elf
+
+upload: $(HEX)
+	$(AD) $(ADFLAGS) -U flash:w:$<
+
+## Console
+SERIAL_BAUD = 9600
+SERIAL_FLOW = n
+SERIAL_PARITY = n
+SERIAL_BITS = 8
+SERIAL_PORT = $(AD_PORT)
+
+SERIAL_TERM = picocom
+SERIAL_FLAGS = -b $(SERIAL_BAUD) -f $(SERIAL_FLOW) -p $(SERIAL_PARITY) -d $(SERIAL_BITS)
+
+console:
+	$(SERIAL_TERM) $(SERIAL_FLAGS) $(SERIAL_PORT)
+