mirror of
https://github.com/wagiminator/ATtiny814-USB-PD-Adapter.git
synced 2025-08-06 12:47:16 +03:00
110 lines
3.4 KiB
Makefile
Executable File
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
|