combine module firmware revisions into single project. Expand makefile
This commit is contained in:
96
software/firmware_module/module_universal/Makefile
Normal file
96
software/firmware_module/module_universal/Makefile
Normal file
@@ -0,0 +1,96 @@
|
||||
# Source and include
|
||||
BUILD_DIR=build
|
||||
SRCS=$(wildcard src/*.c)
|
||||
OBJS_REV1=$(SRCS:%.c=build/rev1/%.o)
|
||||
OBJS_REV2=$(SRCS:%.c=build/rev2/%.o)
|
||||
INC=-I ./inc
|
||||
|
||||
# MCU configuration
|
||||
# Set MCU type, clock frequency and programmer
|
||||
MCU=atmega8
|
||||
CLOCK_FREQ=16000000
|
||||
PROG_STR=usbasp
|
||||
|
||||
BOARD_REVISION=1
|
||||
|
||||
# Compiler flags
|
||||
CFLAGS=-std=c11 -Wall -Wextra -Werror -mmcu=$(MCU) -DF_CPU=$(CLOCK_FREQ)
|
||||
OPT_FLAGS_REV1=-O3 -g -DDEBUG -DBOARD_REV=1
|
||||
OPT_FLAGS_REV2=-O3 -g -DDEBUG -DBOARD_REV=2
|
||||
|
||||
# Compiler and utility tools
|
||||
OBJCOPY=avr-objcopy
|
||||
CC=avr-gcc
|
||||
|
||||
# Project configuration
|
||||
PROJ_NAME=sflap_controller_fw
|
||||
PROJ_BLD_REV1=$(BUILD_DIR)/$(PROJ_NAME)_rev1
|
||||
PROJ_BLD_REV2=$(BUILD_DIR)/$(PROJ_NAME)_rev2
|
||||
|
||||
TEMP_EEPROM_DUMP=eeprom.hex
|
||||
|
||||
|
||||
ifeq ($(REV),1)
|
||||
PROJ_BLD=$(PROJ_BLD_REV1)
|
||||
else
|
||||
ifeq ($(REV),2)
|
||||
PROJ_BLD=$(PROJ_BLD_REV2)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Rules
|
||||
|
||||
# Build firmware for both revisions
|
||||
all: $(PROJ_BLD_REV1).elf $(PROJ_BLD_REV2).elf
|
||||
|
||||
$(PROJ_BLD_REV1).elf: $(OBJS_REV1)
|
||||
$(CC) -o $@ $^ $(INC) $(CFLAGS) $(OPT_FLAGS_REV1) $(MCU_FLAGS)
|
||||
$(OBJCOPY) -j .text -j .data -O ihex $@ $(PROJ_BLD_REV1).hex
|
||||
$(OBJCOPY) -j .text -j .data -O binary $@ $(PROJ_BLD_REV1).bin
|
||||
|
||||
$(PROJ_BLD_REV2).elf: $(OBJS_REV2)
|
||||
$(CC) -o $@ $^ $(INC) $(CFLAGS) $(OPT_FLAGS_REV2) $(MCU_FLAGS)
|
||||
$(OBJCOPY) -j .text -j .data -O ihex $@ $(PROJ_BLD_REV2).hex
|
||||
$(OBJCOPY) -j .text -j .data -O binary $@ $(PROJ_BLD_REV2).bin
|
||||
|
||||
build/rev1/%.o: %.c
|
||||
mkdir -p build/rev1/src
|
||||
$(CC) -c -o $@ $(INC) $(CFLAGS) $(OPT_FLAGS_REV1) $(MCU_FLAGS) $<
|
||||
build/rev2/%.o: %.c
|
||||
mkdir -p build/rev2/src
|
||||
$(CC) -c -o $@ $(INC) $(CFLAGS) $(OPT_FLAGS_REV2) $(MCU_FLAGS) $<
|
||||
|
||||
|
||||
|
||||
release: OPT_FLAGS=-O2 -DNDEBUG
|
||||
release: $(PROJ_BLD_REV1).elf $(PROJ_BLD_REV2).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 eeprom:r:$(TEMP_EEPROM_DUMP):i
|
||||
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
|
||||
|
||||
flash-eeprom:
|
||||
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
|
||||
Reference in New Issue
Block a user