Skript file: /~heha/enas/Convac-Ätzer/uba.zip/firmware-231018/Makefile

# Copyright 2017 by Robert Evans (rrevans@gmail.com)
# 2019, 2023 Henrik Haftmann

PATH := c:\programs\winavr\gcc1210\bin\;$(PATH)

P = ubaboot
D = at90usb162
# allowed: at90usb82,at90usb162,atmega8u2,atmega16u2,atmega32u2,atmega16u4,atmega32u4
F = 16000000
# only 8 MHz and 16 MHz are supported
B = 1
# B = 0: Invoke bootloader at !RESET only when !HWB = low (here: Ofensteuerung)
# B = 1: Always invoke bootloader at !RESET (all other applications)
A = avr-

AVRDUDE = avrdude -c avrispmkii -p $D

CFLAGS += -DF_CPU=$F
CFLAGS += -Os -g
CFLAGS += -mmcu=$D
CFLAGS += -Wall
CFLAGS += -ffreestanding -nostdlib

LFUSE = 0xDE
HFUSE = $(if $B,0xDE,0xDF)

ifneq (,$(findstring usb,$D))	# at90usb82, at90usb162 (old but still cheap)
EFUSE = $(if $B,0xFC,0xF4)
LOCK  = 0xDF
UNLOCK= 0xFF
else				# Some(?) unused bits read as 0
# different defaults for BODLEVEL bits
EFUSE = $(if $(findstring u4,$D),0xC3,0xC4)
LOCK  = 0x2F
UNLOCK= 0x3F
endif

BOOTSTART = 0x$(if $(findstring 32,$D),7,$(if $(findstring 16,$D),3,1))E00

all: $P.elf $P.lst

# avrdude 6.0.1+ (2013) can read ELF files.
# However, reading out fuse+lock bytes still doesn't work as expected, damn!
verify: $P.elf
	$(AVRDUDE) -U flash:v:$<:e -U lfuse:v:$(LFUSE):m -U hfuse:v:$(HFUSE):m -U efuse:v:$(EFUSE):m -U lock:v:$(LOCK):m
flash: $P.elf
	$(AVRDUDE) -e -U flash:w:$<:e
fuse:
	$(AVRDUDE) -U lfuse:w:$(LFUSE):m -U hfuse:w:$(HFUSE):m -U efuse:w:$(EFUSE):m -U lock:w:$(LOCK):m
erase:
	$(AVRDUDE) -U lock:w:$(UNLOCK):m -e

program: erase flash fuse

.SUFFIXES: .elf .flash .lst

%.lst: %.elf
	@$Aobjdump -d $< | grep ':' | grep -v '\\.Loc\\.' > $@
	@$Astrip $<

%.elf: *.S Makefile
	$Agcc $(CFLAGS) $< -o $@ -Wl,-Ttext=$(BOOTSTART)
	$Asize $@

clean:
	rm -f $P.elf

.PHONY: all clean
Detected encoding: ASCII (7 bit)2