66 lines
1.6 KiB
Makefile
66 lines
1.6 KiB
Makefile
# Source and include
|
|
BUILD_DIR=build
|
|
SRCS=$(wildcard src/*.c)
|
|
OBJS=$(SRCS:%.c=build/%.o)
|
|
INC=-I ./inc
|
|
|
|
# MCU configuration
|
|
# Set MCU type, clock frequency and programmer
|
|
MCU=atmega8
|
|
CLOCK_FREQ=16000000
|
|
PROG_STR=usbasp
|
|
|
|
# Compiler flags
|
|
CFLAGS=-std=c11 -Wall -Wextra -Werror -mmcu=$(MCU) -DF_CPU=$(CLOCK_FREQ)
|
|
OPT_FLAGS=-O3 -g -DDEBUG
|
|
|
|
# Compiler and utility tools
|
|
OBJCOPY=avr-objcopy
|
|
CC=avr-gcc
|
|
|
|
# Project configuration
|
|
PROJ_NAME=sflap_controller_fw
|
|
PROJ_BLD=$(BUILD_DIR)/$(PROJ_NAME)
|
|
|
|
TEMP_EEPROM_DUMP=eeprom.hex
|
|
# Rules
|
|
|
|
all: $(PROJ_BLD).elf
|
|
|
|
$(PROJ_BLD).elf: $(OBJS)
|
|
$(CC) -o $@ $^ $(INC) $(CFLAGS) $(OPT_FLAGS) $(MCU_FLAGS)
|
|
$(OBJCOPY) -j .text -j .data -O ihex $@ $(PROJ_BLD).hex
|
|
$(OBJCOPY) -j .text -j .data -O binary $@ $(PROJ_BLD).bin
|
|
|
|
|
|
build/%.o: %.c
|
|
mkdir -p build/src
|
|
$(CC) -c -o $@ $(INC) $(CFLAGS) $(OPT_FLAGS) $(MCU_FLAGS) $<
|
|
|
|
release: OPT_FLAGS=-O2 -DNDEBUG
|
|
release: $(PROJ_BLD).elf
|
|
|
|
fuse:
|
|
avrdude -c $(PROG_STR) -p $(MCU) -U lfuse:w:0xDF:m -U hfuse:w:0xCA:m -B 125kHz
|
|
|
|
flash-clean:
|
|
avrdude -c $(PROG_STR) -p $(MCU) -U flash:w:$(PROJ_BLD).hex:i
|
|
|
|
flash-update:
|
|
avrdude -c $(PROG_STR) -p $(MCU) -U eeprom:r:$(TEMP_EEPROM_DUMP):i
|
|
avrdude -c $(PROG_STR) -p $(MCU) -U flash:w:$(PROJ_BLD).hex:i
|
|
avrdude -c $(PROG_STR) -p $(MCU) -U eeprom:w:$(TEMP_EEPROM_DUMP):i
|
|
|
|
clear-address:
|
|
avrdude -c $(PROG_STR) -p $(MCU) -U eeprom:r:$(TEMP_EEPROM_DUMP):i
|
|
sed -i 's/:20000000..../:200000000000/' $(TEMP_EEPROM_DUMP)
|
|
avrdude -c $(PROG_STR) -p $(MCU) -U eeprom:w:$(TEMP_EEPROM_DUMP):i
|
|
|
|
flash-debug:
|
|
avrdude -c $(PROG_STR) -p $(MCU) -U flash:w:$(PROJ_BLD).elf:e
|
|
|
|
clean:
|
|
rm -rf build
|
|
rm $(TEMP_EEPROM_DUMP)
|
|
|
|
.PHONY = clean, release, flash, flash-debug
|