eeprom-programmer/firmware/Makefile

76 lines
1.7 KiB
Makefile
Raw Normal View History

2021-04-03 18:35:38 +02:00
# Makefile for the EEPROM programmer microcontroller firmware
# ===========================================================
# Compiler and tools
CC = avr-gcc
OBJCOPY = avr-objcopy
2021-04-03 18:35:38 +02:00
AVRDUDE = avrdude
# Compiler and linker flags
CFLAGS = -Wall -std=c11 -Os
2021-04-03 17:40:17 +02:00
LDFLAGS =
# Target platform and programmer
GCC_MCU = atmega16a
AVRDUDE_PARTNO = m16
AVRDUDE_PROGRAMMER = usbtiny
2021-04-03 18:35:38 +02:00
AVRDUDE_CMD = $(AVRDUDE) -p $(AVRDUDE_PARTNO) -c $(AVRDUDE_PROGRAMMER)
2021-04-03 18:35:38 +02:00
# Directories
SOURCE_DIR = src
BUILD_DIR = build
2021-04-03 18:35:38 +02:00
# Make targets and object files
SOURCE_FILES = $(wildcard $(SOURCE_DIR)/*.c)
HEADER_FILES = $(wildcard $(SOURCE_DIR)/*.h)
OBJECT_FILES = $(patsubst $(SOURCE_DIR)/%.c,$(BUILD_DIR)/%.o,$(SOURCE_FILES))
2021-04-03 18:35:38 +02:00
TARGET_NAME = eepprog
TARGET_ELF = $(BUILD_DIR)/$(TARGET_NAME).elf
TARGET_HEX = $(BUILD_DIR)/$(TARGET_NAME).hex
2021-04-03 18:35:38 +02:00
.PHONY: all clean build flash writeflash readfuse writefuse
2021-04-03 18:35:38 +02:00
# Default target (build hex file)
all: build
2021-04-03 18:35:38 +02:00
# General
# -------
2021-04-03 18:35:38 +02:00
# Clean generated files
clean:
rm -rf $(BUILD_DIR)
2021-04-03 18:35:38 +02:00
# Build firmware
# --------------
build: $(TARGET_HEX)
2021-04-03 18:35:38 +02:00
# Compile C code to object files
$(BUILD_DIR)/%.o: $(SOURCE_DIR)/%.c $(HEADER_FILES)
@mkdir -p $(BUILD_DIR)
$(CC) -mmcu=$(GCC_MCU) $(CFLAGS) -c -o $@ $<
2021-04-03 18:35:38 +02:00
# Link object files to ELF binary
$(TARGET_ELF): $(OBJECT_FILES)
$(CC) -mmcu=$(GCC_MCU) $(LDFLAGS) -o $(TARGET_ELF) $(OBJECT_FILES)
2021-04-03 18:35:38 +02:00
# Convert ELF binary to ihex format (which can be flashed to the microcontroller)
$(TARGET_HEX): $(TARGET_ELF)
$(OBJCOPY) -O ihex $(TARGET_ELF) $(TARGET_HEX)
2021-04-03 18:35:38 +02:00
# Flash firmware
# --------------
flash: writeflash
2021-04-03 18:35:38 +02:00
writeflash: $(TARGET_HEX)
$(AVRDUDE_CMD) -U flash:w:$(TARGET_HEX)
2021-04-03 18:35:38 +02:00
readfuse:
$(AVRDUDE_CMD) -U lfuse:r:m -U hfuse:r:m
2021-04-03 18:35:38 +02:00
writefuse:
$(AVRDUDE_CMD) -U lfuse:w:0xef:m -U hfuse:w:0xd9:m