# ---------------------------------------------------------------------------- #
## \file avr.mk
## \author Sebastien Beaugrand
## \sa http://beaugrand.chez.com/
## \copyright CeCILL 2.1 Free Software license
# ---------------------------------------------------------------------------- #
TARDEPEND += makefiles/avr.mk
PROROOT ?= ../..
PROJECT ?= $(shell basename `readlink -f .`)
OBJECTS ?= $(PROJECT).o
ATMEL ?= attiny2313
EFUSE ?= 0xff
HFUSE ?= 0xdf
PROG ?= usbtiny
ifneq ($(HARDWARE),)
TOOLS = $(HARDWARE)/tools
PATH := $(HOME)/bin:$(TOOLS)/avr/bin:$(PATH)
AVRDUDE = $(TOOLS)/avrdude -C $(TOOLS)/avrdude.conf -p $(ATMEL) -c $(PROG)
else
AVRDUDE = avrdude -p $(ATMEL) -c $(PROG)
endif
CC = avr-gcc
CXX = avr-g++
OBJCOPY = avr-objcopy
CFLAGS += -g -Os -mmcu=$(ATMEL)
CXXFLAGS += -g -Os -mmcu=$(ATMEL) -fno-exceptions
WARNINGS = -Wall -Wextra
.PHONY: all
all:
@echo
@echo "PROJECT="$(PROJECT)
@echo "AVRDUDE="$(AVRDUDE)
@echo "HFUSE="$(HFUSE)
@echo "LFUSE="$(LFUSE)
@echo
@echo -n "Usage: make { hex | fuse | flash | verify "
@echo $(TARGETS)" }"
@echo
include $(PROROOT)/makefiles/ccpp.mk
.PHONY: hex
hex: build $(PROJECT).hex checksize
$(PROJECT).hex: build/$(PROJECT).elf
$(OBJCOPY) -O ihex -R .eeprom $< $@
build/$(PROJECT).elf: $(OBJECTS)
$(LINK.o) -o $@ $^ -Wl,--gc-sections -mmcu=$(ATMEL)
.PHONY: checksize
checksize: build/$(PROJECT).elf
@avr-size -C --mcu=$(ATMEL) build/$(PROJECT).elf | sed '/^$$/d'
@! avr-size -C --mcu=$(ATMEL) build/$(PROJECT).elf | grep '([0-9]\{3\}'
.PHONY: fuse
fuse:
$(AVRDUDE) -U hfuse:w:$(HFUSE):m -U lfuse:w:$(LFUSE):m
.PHONY: flash
flash: $(PROJECT).hex
$(AVRDUDE) -U flash:w:$<
.PHONY: verify
verify:
$(AVRDUDE) -U flash:v:$(PROJECT).hex && \
$(AVRDUDE) -U efuse:v:$(EFUSE):m -U hfuse:v:$(HFUSE):m -U lfuse:v:$(LFUSE):m