Makefile
author Tero Marttila <terom@paivola.fi>
Wed, 02 Apr 2014 19:10:05 +0300
changeset 47 7f930a94ee1e
parent 45 7c684d241675
child 48 50dc2f4d90fd
permissions -rw-r--r--
bravely step into the modern world of C-programming, using avr-gcc for a hello world...
PROG = hello
# console
# dmx

all: $(PROG).hex

## Compiler
MCU = atmega328p

# CPU clock frequency
CPU = 16000000

CC = avr-gcc
CFLAGS = -g -mmcu=$(MCU) -DF_CPU=$(CPU)UL -Os

%.elf: %.c
	$(CC) $(CFLAGS) -o $@ $+

%.hex: %.elf
	avr-objcopy -O ihex -R .eeprom $< $@

.PRECIOUS: %.elf

## Assembler
AS = avra
ASFLAGS = 

matrix.hex: spi.inc matrix.inc timer.inc delay.inc macros.inc font.inc font.def
led7seg.hex: spi.inc led7seg.inc adc.inc timer.inc delay.inc macros.inc
timer.hex: timer.inc macros.inc

%.hex: %.s
	$(AS) $(ASFLAGS) $<
	mv $<.hex $@

# fonts
font.inc: font.def

font.def: font.txt font-compile.py
	python font-compile.py $< $@ > /dev/null


## 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)

upload: $(PROG).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)