eeprom-programmer/firmware_src/Makefile

76 lines
1.4 KiB
Makefile

################
# CONFIGURATION
################
# Compiler and tools
CC = avr-gcc
OBJCOPY = avr-objcopy
# Compiler and linker flags
CFLAGS = -Wall -std=c11 -Os
LDFLAGS =
# Target platform and programmer
GCC_MCU = atmega16a
AVRDUDE_PARTNO = m16
AVRDUDE_PROGRAMMER = usbtiny
# Make target and object files
TARGET = eepprog
OBJECTS = main.o uart.o eeprom.o protocol.o
HEADERS = config.h BitIO.h uart.h eeprom.h protocol.h
# Default target (build hex file)
all: hex
################
# BUILD TARGETS
################
# Shortcuts for build targets
hex: $(TARGET).hex
elf: $(TARGET).elf
# Convert elf binary to ihex format
$(TARGET).hex: $(TARGET).elf
$(OBJCOPY) -O ihex $(TARGET).elf $(TARGET).hex
# Elf binary
$(TARGET).elf: $(OBJECTS)
$(CC) -mmcu=$(GCC_MCU) $(LDFLAGS) -o $(TARGET).elf $(OBJECTS)
# Object files
%.o: %.c $(HEADERS)
$(CC) -mmcu=$(GCC_MCU) $(CFLAGS) -c -o $@ $<
##############
# PROGRAMMING
##############
# Program controller
program: writeflash
writeflash: $(TARGET).hex
sudo avrdude -p $(AVRDUDE_PARTNO) -c $(AVRDUDE_PROGRAMMER) -U flash:w:$(TARGET).hex
readfuse:
sudo avrdude -p $(AVRDUDE_PARTNO) -c $(AVRDUDE_PROGRAMMER) -U lfuse:r:m -U hfuse:r:m
writefuse:
sudo avrdude -p $(AVRDUDE_PARTNO) -c $(AVRDUDE_PROGRAMMER) -U lfuse:w:0xef:m -U hfuse:w:0xd9:m
################
# OTHER TARGETS
################
# Clean generated files
clean:
rm -f $(OBJECTS) $(TARGET).elf $(TARGET).hex
.PHONY: all hex elf program writeflash clean