Skript file: /~heha/mb-iwp/Bergwerk/fba-fw-230825.zip/Makefile

#Fernbedien-Adapter für Muldenkipper und Radlader
#2210xx	Umstieg auf Binär- statt HEX-Datei
#221222	Umstieg auf ATmega328P. Achtung! Andere Fuses!
#230115	Umstieg auf Baudratenquarz, ohne Echtzeituhr
#Einbuchstabige Makros ersparen die runden Klammern beim Referenzieren

# Projekt
P = fba
#Device
D = atmega328p
# CPU-Frequenz: 115200 × 64: Baudratenquarz
F = 7372800
# EEPROM-Daten für spezifisches Fahrzeug: „Radlader“ oder „Muldenkipper“
M = Muldenkipper
#M = Radlader

#WinAVR-Verzeichnis, Compiler-Verzeichnis
V = c:/programme/WinAVR
PATH := $V/gcc1210/bin;$(PATH)

# Architektur-Präfix
A = avr-

W += -Wall
# Klammern sind keine Glückssache
W += -Wno-parentheses
# erforderlich für -std=c++11
W += -Wno-array-bounds
# erforderlich für -std=c++20
# W += -Wno-volatile

C = $Agcc $W -Os -mmcu=$D -D F_CPU=$F -std=c++11
X = avrdude -c arduino -P com8 -p $D
Y = avrdude -c avrisp2 -P usb -p $D
S = $V/bin/avr-size -C --mcu=$D

all: $P.flash $P.eeprom $P.lst

$P.o: $P.cpp
	$C -c -o $@ $<

#Ohne Objektdateien als Zwischenschritt (langsamer aber schnell genug)
$P.elf: *.cpp *.S $M.cxx *.h Makefile
	$C -o $@ $(filter %.cpp %.S %.cxx,$^)
	$S $@
#-Wl,-u,vfprintf -lprintf_min 

%.flash: %.elf
	$Aobjcopy -j .text -j .data -O binary $< $@

%.eeprom: %.elf
	$Aobjcopy -j .eeprom -O binary $< $@

# Nur Codezeilen (Flash-Adresse: Opcode)
EX1 = :[[:space:]]
# Nur interessierende Segmente (in der Zeile unten eingefügt würde make an den '|' Kommandos trennen)
EX2 = \.(data|bss|noinit)

%.lst: %.elf
	$Aobjdump -d $< | grep "$(EX1)" > $@
	$Aobjdump -t $< | grep "$(EX2)" | sort >> $@
	$Astrip $<

flash: $P.flash
	$Y -e -U $@:w:$<:r

eeprom: $P.eeprom
	$Y -U $@:w:$<:r

read.fuse:
	$Y -v -U lock:r:-:i
#Die Option -v spuckt u.a. die Fuses aus

read.eeprom:
	$Y -U eeprom:r:$@:r

read.flash:
	$Y -U flash:r:$@:r

#eesave:	EEPROM-Inhalt bei Chip-Erase behalten
#bodlevel:	BrownOut-Reset aktivieren (eh' kein Stromsparer) bei 2,7 V
#ckdiv8:	Takt nicht durch 8 teilen!
fuse:
	$Y -U e$@:w:0xFD:m -U h$@:w:0xD1:m -U l$@:w:0xDD:m

program: fuse flash eeprom

.PHONY: read.*
Detected encoding: UTF-80