# Optionen für den GCC-Compiler CFLAGS = -gstabs -Wall -Os -std=c99 -I. -mmcu=atmega32 # Befehl für Compiler CC = avr-gcc # TODO: Hier für alle .c Dateien die zu erzeugenden .o Dateien hineinschreiben (durch Spaces getrennt) OBJ = test.o # all: wird bei Aufruf von "make" ausgeführt all: clean main.hex clean: -rm *.o *.bin *.hex *.eep *.lst .c.o: # c-Datei kompilieren $(CC) $(CFLAGS) -c $< -o $@ -Wa,-adhlns=$(<:.c=.lst) .S.o: # S-Datei (Assembler) kompilieren $(CC) $(CFLAGS) -x assembler-with-cpp -c $< -o $@ main.bin: $(OBJ) # Objekt-Dateien linken $(CC) $(CFLAGS) -o main.bin $(OBJ) $(LDFLAGS) main.hex: main.bin # Hex-Beschreibung für Programm-/EEPROM-Speicher extrahieren rm -f main.hex main.eep.hex avr-objcopy -j .text -j .data -O ihex main.bin main.hex avr-objcopy -j .eeprom -O ihex main.bin main.eep avr-size main.bin # Verbindung zum Prozessor testen prog_sense: avrdude -c stk200 -p atmega32 # Hex-Datei (Programm) in den Prozessor herunterladen prog_do: avrdude -c stk200 -p atmega32 -U flash:w:main.hex # EEP-Datei in dem Prozessor-EEPROM herunterladen prog_eeprom: avrdude -c stk200 -p atmega32 -U eeprom:w:main.eep # Fuses programmieren (nur einmalig für den Prozessor nötig) prog_fuses: avrdude -c stk200 -p atmega32 -U hfuse:w:0xC1:m avrdude -c stk200 -p atmega32 -U lfuse:w:0xEF:m # Makefile-Targets, die keine Dateinamen sind: .PHONY: prog_sense prog_do prog_eeprom all clean