Files
ATtiny814-USB-PD-Adapter/software/makefile
2022-09-11 11:42:08 +02:00

110 lines
3.4 KiB
Makefile
Executable File

# Project: USB PD Adapter
# Author: Stefan Wagner
# Year: 2022
# URL: https://github.com/wagiminator
#
# Download AVR 8-bit Toolchain:
# https://www.microchip.com/mplab/avr-support/avr-and-arm-toolchains-c-compilers
# and extract to ./tools/avr-gcc
# Type "make help" in the command line.
# Input and Output File Names
SKETCH = USB_PD_Adapter.ino
TARGET = usb_pd_adapter
# Microcontroller Options
DEVICE ?= attiny814
CLOCK = 1000000
FUSE0 = 0x00
FUSE1 = 0x00
FUSE2 = 0x01
FUSE4 = 0x00
FUSE5 = 0xC5
FUSE6 = 0x04
FUSE7 = 0x00
FUSE8 = 0x00
# Programmer Options (serialupdi or jtag2updi)
PROGRMR ?= serialupdi
PORT ?= /dev/ttyUSB0
# Paths
GCCPATH = ./tools/avr-gcc
DFPPATH = ./tools/dfp
PYMPATH = ./tools/pymcuprog
ADCPATH = ./tools/avrdude
# Commands
DFPINCL = -B $(DFPPATH)/gcc/dev/$(DEVICE)/ -I $(DFPPATH)/include/
COMPILE = $(GCCPATH)/bin/avr-gcc $(DFPINCL) -flto -Wall -Os -mmcu=$(DEVICE) -DF_CPU=$(CLOCK)UL -x c++ $(SKETCH)
PYPROG = python3 -u $(PYMPATH)/prog.py -t uart -u $(PORT) -b 230400 -d $(DEVICE)
AVRDUDE = avrdude -C $(ADCPATH)/avrdude.conf -c jtag2updi -P $(PORT) -p $(DEVICE)
CLEAN = rm -f *.lst *.obj *.cof *.list *.map *.eep.hex *.o *.s *.d
# Symbolic Targets
help:
@echo "Use the following commands:"
@echo "make all compile and build $(TARGET).bin/.hex/.asm for $(DEVICE)"
@echo "make hex compile and build $(TARGET).hex for $(DEVICE)"
@echo "make asm compile and disassemble to $(TARGET).asm for $(DEVICE)"
@echo "make bin compile and build $(TARGET).bin for $(DEVICE)"
@echo "make upload compile and upload to $(DEVICE) using $(PROGRMR)"
@echo "make fuses burn fuses of $(DEVICE) using $(PROGRMR) programmer"
@echo "make install compile, upload and burn fuses for $(DEVICE)"
@echo "make clean remove all build files"
all: buildbin buildhex buildasm removetemp size
bin: buildbin removetemp size
hex: buildbin buildhex removetemp size removebin
asm: buildbin buildasm removetemp size removebin
install: fuses upload
upload: hex
@echo "Uploading to $(DEVICE) ..."
ifeq ($(PROGRMR),serialupdi)
@$(PYPROG) --fuses 2:$(FUSE2) 6:$(FUSE6) 8:$(FUSE8) -f $(TARGET).hex -a write
else
@$(AVRDUDE) -U fuse2:w:$(FUSE2):m -U fuse6:w:$(FUSE6):m -U fuse8:w:$(FUSE8):m -U flash:w:$(TARGET).hex:i
endif
fuses:
@echo "Burning fuses of $(DEVICE) ..."
ifeq ($(PROGRMR),serialupdi)
@$(PYPROG) --fuses 0:$(FUSE0) 1:$(FUSE1) 2:$(FUSE2) 4:$(FUSE4) 5:$(FUSE5) 6:$(FUSE6) 7:$(FUSE7) 8:$(FUSE8) -a erase
else
@$(AVRDUDE) -e -Ufuse0:w:$(FUSE0):m -Ufuse1:w:$(FUSE1):m -Ufuse2:w:$(FUSE2):m -Ufuse4:w:$(FUSE4):m -Ufuse5:w:$(FUSE5):m -Ufuse6:w:$(FUSE6):m -Ufuse7:w:$(FUSE7):m -Ufuse8:w:$(FUSE8):m
endif
clean:
@echo "Cleaning all up ..."
@$(CLEAN)
@rm -f $(TARGET).bin $(TARGET).hex $(TARGET).asm
buildbin:
@echo "Building $(TARGET).bin for $(DEVICE) @ $(CLOCK)Hz ..."
@$(COMPILE) -o $(TARGET).bin
buildhex:
@echo "Building $(TARGET).hex ..."
@$(GCCPATH)/bin/avr-objcopy -O ihex -R .eeprom $(TARGET).bin $(TARGET).hex
buildasm:
@echo "Disassembling to $(TARGET).asm ..."
@$(GCCPATH)/bin/avr-objdump -d $(TARGET).bin > $(TARGET).asm
size:
@echo "FLASH: $(shell $(GCCPATH)/bin/avr-size -d $(TARGET).bin | awk '/[0-9]/ {print $$1 + $$2}') bytes"
@echo "SRAM: $(shell $(GCCPATH)/bin/avr-size -d $(TARGET).bin | awk '/[0-9]/ {print $$2 + $$3}') bytes"
removetemp:
@echo "Removing temporary files ..."
@$(CLEAN)
removebin:
@echo "Removing $(TARGET).bin ..."
@rm -f $(TARGET).bin