Created
May 28, 2014 12:46
-
-
Save dansku/235a6b89d019304d6660 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Makefile | |
MAIN = blink.c | |
MCU = atmega32 | |
F_CPU = 16000000 | |
BAUD = 9600 | |
PROGRAMMER_TYPE = usbtiny | |
## Defined programs / locations | |
CC = avr-gcc | |
OBJCOPY = avr-objcopy | |
OBJDUMP = avr-objdump | |
AVRSIZE = avr-size | |
AVRDUDE = avrdude | |
## Compilation options, type man avr-gcc if you're curious. | |
CFLAGS = -mmcu=$(MCU) -DF_CPU=$(F_CPU)UL -DBAUD=$(BAUD) -Os -I. -I$(EXTRA_SOURCE_DIR) | |
CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums | |
CFLAGS += -Wall -Wstrict-prototypes | |
CFLAGS += -g -ggdb | |
CFLAGS += -ffunction-sections -fdata-sections -Wl,--gc-sections -Wl,--relax | |
CFLAGS += -std=gnu99 | |
## Lump target and extra source files together | |
TARGET = $(strip $(basename $(MAIN))) | |
SRC = $(TARGET).c | |
EXTRA_SOURCE = $(addprefix $(EXTRA_SOURCE_DIR), $(EXTRA_SOURCE_FILES)) | |
SRC += $(EXTRA_SOURCE) | |
SRC += $(LOCAL_SOURCE) | |
## List of all header files | |
HEADERS = $(SRC:.c=.h) | |
## For every .c file, compile an .o object file | |
OBJ = $(SRC:.c=.o) | |
## Generic Makefile targets. (Only .hex file is necessary) | |
all: $(TARGET).hex | |
%.hex: %.elf | |
$(OBJCOPY) -R .eeprom -O ihex $< $@ | |
%.elf: $(SRC) | |
$(CC) $(CFLAGS) $(SRC) --output $@ | |
%.eeprom: %.elf | |
$(OBJCOPY) -j .eeprom --change-section-lma .eeprom=0 -O ihex $< $@ | |
debug: | |
@echo | |
@echo "Source files:" $(SRC) | |
@echo "MCU, F_CPU, BAUD:" $(MCU), $(F_CPU), $(BAUD) | |
@echo | |
# Optionally create listing file from .elf | |
# This creates approximate assembly-language equivalent of your code. | |
# Useful for debugging time-sensitive bits, | |
# or making sure the compiler does what you want. | |
disassemble: $(TARGET).lst | |
disasm: disassemble | |
eeprom: $(TARGET).eeprom | |
%.lst: %.elf | |
$(OBJDUMP) -S $< > $@ | |
# Optionally show how big the resulting program is | |
size: $(TARGET).elf | |
$(AVRSIZE) -C --mcu=$(MCU) $(TARGET).elf | |
clean: | |
rm -f $(TARGET).elf $(TARGET).hex $(TARGET).obj \ | |
$(TARGET).o $(TARGET).d $(TARGET).eep $(TARGET).lst \ | |
$(TARGET).lss $(TARGET).sym $(TARGET).map $(TARGET)~ \ | |
$(TARGET).eeprom | |
squeaky_clean: | |
rm -f *.elf *.hex *.obj *.o *.d *.eep *.lst *.lss *.sym *.map *~ | |
##########------------------------------------------------------########## | |
########## Programmer-specific details ########## | |
########## Flashing code to AVR using avrdude ########## | |
##########------------------------------------------------------########## | |
flash: $(TARGET).hex | |
$(AVRDUDE) -c $(PROGRAMMER_TYPE) -p $(MCU) $(PROGRAMMER_ARGS) -U flash:w:$< | |
## An alias | |
program: flash | |
flash_eeprom: $(TARGET).eeprom | |
$(AVRDUDE) -c $(PROGRAMMER_TYPE) -p $(MCU) $(PROGRAMMER_ARGS) -U eeprom:w:$< | |
avrdude_terminal: | |
$(AVRDUDE) -c $(PROGRAMMER_TYPE) -p $(MCU) $(PROGRAMMER_ARGS) -nt | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment