Makefile
changeset 0 cae83b7bfcf4
child 1 dc293f9aa873
equal deleted inserted replaced
-1:000000000000 0:cae83b7bfcf4
       
     1 QMSK_ARDUINO = qmsk
       
     2 
       
     3 PROG = hello
       
     4 
       
     5 ELF = build/src/$(PROG).elf
       
     6 HEX = build/src/$(PROG).hex
       
     7 
       
     8 build/src/hello.elf: build/src/hello.o \
       
     9 	build/qmsk/src/timer.o
       
    10 
       
    11 ##
       
    12 all: $(HEX)
       
    13 
       
    14 build:
       
    15 	mkdir -p build/src build/qmsk/src
       
    16 
       
    17 clean:
       
    18 	rm -rf build/
       
    19 
       
    20 ## Compiler
       
    21 MCU = atmega328p
       
    22 
       
    23 # CPU clock frequency
       
    24 CPU = 16000000
       
    25 STD = c99
       
    26 
       
    27 CC = avr-gcc
       
    28 CPPFLAGS = -DF_CPU=$(CPU)UL -I$(QMSK_ARDUINO)/include
       
    29 CFLAGS = -mmcu=$(MCU) -std=$(STD) -Os -g
       
    30 LDFLAGS = -mmcu=$(MCU)
       
    31 LDLIBS = -lc
       
    32 
       
    33 build/%.o: %.c
       
    34 	$(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
       
    35 	$(CC) -MM $(CPPFLAGS) -MT $@ -MF build/$*.d $<
       
    36 
       
    37 build/%.elf:
       
    38 	$(CC) $(LDFLAGS) $+ -o $@ $(LDLIBS)
       
    39 
       
    40 # existing .d files for rebuilding existing .o's
       
    41 -include $(wildcard build/*/*.d)
       
    42 
       
    43 dump: $(ELF)
       
    44 	avr-objdump -d $(ELF)
       
    45 
       
    46 ## Assembler
       
    47 AS = avra
       
    48 ASFLAGS = 
       
    49 
       
    50 %.hex: %.s
       
    51 	$(AS) $(ASFLAGS) $<
       
    52 	mv $<.hex $@
       
    53 
       
    54 ## Flashing
       
    55 # Arduino Duemilanove
       
    56 AD_PART = m328p
       
    57 AD_PROG = arduino
       
    58 AD_BAUD = 57600
       
    59 AD_PORT = /dev/arduino
       
    60 
       
    61 AD = avrdude
       
    62 ADFLAGS = -p $(AD_PART) -c $(AD_PROG) -b $(AD_BAUD) -P $(AD_PORT)
       
    63 
       
    64 build/%.hex: build/%.elf
       
    65 	avr-objcopy -O ihex -R .eeprom $< $@
       
    66 
       
    67 .PRECIOUS: build/%.elf
       
    68 
       
    69 upload: $(HEX)
       
    70 	$(AD) $(ADFLAGS) -U flash:w:$<
       
    71 
       
    72 ## Console
       
    73 SERIAL_BAUD = 9600
       
    74 SERIAL_FLOW = n
       
    75 SERIAL_PARITY = n
       
    76 SERIAL_BITS = 8
       
    77 SERIAL_PORT = $(AD_PORT)
       
    78 
       
    79 SERIAL_TERM = picocom
       
    80 SERIAL_FLAGS = -b $(SERIAL_BAUD) -f $(SERIAL_FLOW) -p $(SERIAL_PARITY) -d $(SERIAL_BITS)
       
    81 
       
    82 console:
       
    83 	$(SERIAL_TERM) $(SERIAL_FLAGS) $(SERIAL_PORT)
       
    84