-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 631508d
Showing
10 changed files
with
3,818 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,225 @@ | ||
# Hey Emacs, this is a -*- makefile -*- | ||
|
||
# AVR-GCC Makefile template, derived from the WinAVR template (which | ||
# is public domain), believed to be neutral to any flavor of "make" | ||
# (GNU make, BSD make, SysV make) | ||
|
||
|
||
MCU = atmega168 | ||
FORMAT = ihex | ||
TARGET = main | ||
SRC = $(TARGET).c | ||
ASRC = | ||
OPT = s | ||
|
||
# Name of this Makefile (used for "make depend"). | ||
MAKEFILE = Makefile | ||
|
||
# Debugging format. | ||
# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2. | ||
# AVR (extended) COFF requires stabs, plus an avr-objcopy run. | ||
DEBUG = dwarf-2 | ||
|
||
# Compiler flag to set the C Standard level. | ||
# c89 - "ANSI" C | ||
# gnu89 - c89 plus GCC extensions | ||
# c99 - ISO C99 standard (not yet fully implemented) | ||
# gnu99 - c99 plus GCC extensions | ||
CSTANDARD = -std=gnu99 | ||
|
||
# Place -D or -U options here | ||
CDEFS = | ||
|
||
# Place -I options here | ||
CINCS = | ||
|
||
|
||
CDEBUG = -g$(DEBUG) | ||
CWARN = -Wall -Wstrict-prototypes | ||
CTUNING = -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums | ||
#CEXTRA = -Wa,-adhlns=$(<:.c=.lst) | ||
CFLAGS = $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CWARN) $(CSTANDARD) $(CEXTRA) | ||
|
||
|
||
#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs | ||
|
||
|
||
#Additional libraries. | ||
|
||
# Minimalistic printf version | ||
PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min | ||
|
||
# Floating point printf version (requires MATH_LIB = -lm below) | ||
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt | ||
|
||
PRINTF_LIB = | ||
|
||
# Minimalistic scanf version | ||
SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min | ||
|
||
# Floating point + %[ scanf version (requires MATH_LIB = -lm below) | ||
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt | ||
|
||
SCANF_LIB = | ||
|
||
MATH_LIB = -lm | ||
|
||
# External memory options | ||
|
||
# 64 KB of external RAM, starting after internal RAM (ATmega128!), | ||
# used for variables (.data/.bss) and heap (malloc()). | ||
#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff | ||
|
||
# 64 KB of external RAM, starting after internal RAM (ATmega128!), | ||
# only used for heap (malloc()). | ||
#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff | ||
|
||
EXTMEMOPTS = | ||
|
||
#LDMAP = $(LDFLAGS) -Wl,-Map=$(TARGET).map,--cref | ||
LDFLAGS = $(EXTMEMOPTS) $(LDMAP) $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB) | ||
|
||
|
||
# Programming support using avrdude. Settings and variables. | ||
|
||
AVRDUDE_PROGRAMMER = stk500 | ||
AVRDUDE_PORT = /dev/term/a | ||
|
||
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex | ||
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep | ||
|
||
|
||
# Uncomment the following if you want avrdude's erase cycle counter. | ||
# Note that this counter needs to be initialized first using -Yn, | ||
# see avrdude manual. | ||
#AVRDUDE_ERASE_COUNTER = -y | ||
|
||
# Uncomment the following if you do /not/ wish a verification to be | ||
# performed after programming the device. | ||
#AVRDUDE_NO_VERIFY = -V | ||
|
||
# Increase verbosity level. Please use this when submitting bug | ||
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> | ||
# to submit bug reports. | ||
#AVRDUDE_VERBOSE = -v -v | ||
|
||
AVRDUDE_BASIC = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) | ||
AVRDUDE_FLAGS = $(AVRDUDE_BASIC) $(AVRDUDE_NO_VERIFY) $(AVRDUDE_VERBOSE) $(AVRDUDE_ERASE_COUNTER) | ||
|
||
|
||
CC = avr-gcc | ||
OBJCOPY = avr-objcopy | ||
OBJDUMP = avr-objdump | ||
SIZE = avr-size | ||
NM = avr-nm | ||
AVRDUDE = avrdude | ||
REMOVE = rm -f | ||
MV = mv -f | ||
|
||
# Define all object files. | ||
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) | ||
|
||
# Define all listing files. | ||
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) | ||
|
||
# Combine all necessary flags and optional flags. | ||
# Add target processor to flags. | ||
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) | ||
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) | ||
|
||
|
||
# Default target. | ||
all: build | ||
|
||
build: elf hex eep | ||
|
||
elf: $(TARGET).elf | ||
hex: $(TARGET).hex | ||
eep: $(TARGET).eep | ||
lss: $(TARGET).lss | ||
sym: $(TARGET).sym | ||
|
||
|
||
# Program the device. | ||
program: $(TARGET).hex $(TARGET).eep | ||
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) | ||
|
||
|
||
|
||
|
||
# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. | ||
COFFCONVERT=$(OBJCOPY) --debugging \ | ||
--change-section-address .data-0x800000 \ | ||
--change-section-address .bss-0x800000 \ | ||
--change-section-address .noinit-0x800000 \ | ||
--change-section-address .eeprom-0x810000 | ||
|
||
|
||
coff: $(TARGET).elf | ||
$(COFFCONVERT) -O coff-avr $(TARGET).elf $(TARGET).cof | ||
|
||
|
||
extcoff: $(TARGET).elf | ||
$(COFFCONVERT) -O coff-ext-avr $(TARGET).elf $(TARGET).cof | ||
|
||
|
||
.SUFFIXES: .elf .hex .eep .lss .sym | ||
|
||
.elf.hex: | ||
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ | ||
|
||
.elf.eep: | ||
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ | ||
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@ | ||
|
||
# Create extended listing file from ELF output file. | ||
.elf.lss: | ||
$(OBJDUMP) -h -S $< > $@ | ||
|
||
# Create a symbol table from ELF output file. | ||
.elf.sym: | ||
$(NM) -n $< > $@ | ||
|
||
|
||
|
||
# Link: create ELF output file from object files. | ||
$(TARGET).elf: $(OBJ) | ||
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) | ||
|
||
|
||
# Compile: create object files from C source files. | ||
.c.o: | ||
$(CC) -c $(ALL_CFLAGS) $< -o $@ | ||
|
||
|
||
# Compile: create assembler files from C source files. | ||
.c.s: | ||
$(CC) -S $(ALL_CFLAGS) $< -o $@ | ||
|
||
|
||
# Assemble: create object files from assembler source files. | ||
.S.o: | ||
$(CC) -c $(ALL_ASFLAGS) $< -o $@ | ||
|
||
|
||
|
||
# Target: clean project. | ||
clean: | ||
$(REMOVE) $(TARGET).hex $(TARGET).eep $(TARGET).cof $(TARGET).elf \ | ||
$(TARGET).map $(TARGET).sym $(TARGET).lss \ | ||
$(OBJ) $(LST) $(SRC:.c=.s) $(SRC:.c=.d) | ||
|
||
depend: | ||
if grep '^# DO NOT DELETE' $(MAKEFILE) >/dev/null; \ | ||
then \ | ||
sed -e '/^# DO NOT DELETE/,$$d' $(MAKEFILE) > \ | ||
$(MAKEFILE).$$$$ && \ | ||
$(MV) $(MAKEFILE).$$$$ $(MAKEFILE); \ | ||
fi | ||
echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' \ | ||
>> $(MAKEFILE); \ | ||
$(CC) -M -mmcu=$(MCU) $(CDEFS) $(CINCS) $(SRC) $(ASRC) >> $(MAKEFILE) | ||
|
||
.PHONY: all build elf hex eep lss sym program coff extcoff clean depend | ||
|
||
|
Oops, something went wrong.