@ -47,7 +47,7 @@
# make doxygen = Generate DoxyGen documentation for the project (must have
# DoxyGen installed)
#
# make debug = Start either simulavr or avarice as specified for debugging,
# make debug = Start either simulavr or avarice as specified for debugging,
# with avr-gdb or avr-insight as the front end for debugging.
#
# make filename.s = Just compile filename.c into the assembler code only.
@ -60,18 +60,18 @@
# MCU name
MCU = at90usb1286
MCU = at90usb1287
# Target board (see library "Board Types" documentation, NONE for projects not requiring
# LUFA board drivers). If USER is selected, put custom board drivers in a directory called
# LUFA board drivers). If USER is selected, put custom board drivers in a directory called
# "Board" inside the application directory.
BOARD = TEENS Y
BOARD = USBKE Y
# Processor frequency.
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# This will define a symbol, F_CPU, in all source code files equal to the
# processor frequency in Hz. You can then use this symbol in your source code to
# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
# automatically to create a 32-bit value in your source code.
#
@ -80,11 +80,11 @@ BOARD = TEENSY
# does not *change* the processor frequency - it should merely be updated to
# reflect the processor speed set externally so that the code can use accurate
# software delays.
F_CPU = 16 000000
F_CPU = 8 000000
# Input clock frequency.
# This will define a symbol, F_CLOCK, in all source code files equal to the
# This will define a symbol, F_CLOCK, in all source code files equal to the
# input clock frequency (before any prescaling is performed) in Hz. This value may
# differ from F_CPU if prescaling is used on the latter, and is required as the
# raw input clock is fed directly to the PLL sections of the AVR for high speed
@ -115,33 +115,27 @@ OBJDIR = .
LUFA_PATH = ../..
# LUFA library compile-time options
# LUFA library compile-time options and predefined tokens
LUFA_OPTS = -D USB_DEVICE_ONLY
LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE = 8
LUFA_OPTS += -D CONTROL_ONLY_DEVICE
LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS = 1
LUFA_OPTS += -D CONTROL_ONLY_DEVICE
LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
LUFA_OPTS += -D USE_STATIC_OPTIONS = "(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
# Create the LUFA source path variables by including the LUFA root makefile
i n c l u d e $( LUFA_PATH ) / L U F A / m a k e f i l e
# List C source files here. (C dependencies are automatically generated.)
SRC = $( TARGET) .c \
Descriptors.c \
$( LUFA_PATH) /LUFA/Drivers/USB/LowLevel/DevChapter9.c \
$( LUFA_PATH) /LUFA/Drivers/USB/LowLevel/Device.c \
$( LUFA_PATH) /LUFA/Drivers/USB/LowLevel/Endpoint.c \
$( LUFA_PATH) /LUFA/Drivers/USB/LowLevel/Host.c \
$( LUFA_PATH) /LUFA/Drivers/USB/LowLevel/HostChapter9.c \
$( LUFA_PATH) /LUFA/Drivers/USB/LowLevel/LowLevel.c \
$( LUFA_PATH) /LUFA/Drivers/USB/LowLevel/Pipe.c \
$( LUFA_PATH) /LUFA/Drivers/USB/LowLevel/USBInterrupt.c \
$( LUFA_PATH) /LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \
$( LUFA_PATH) /LUFA/Drivers/USB/HighLevel/Events.c \
$( LUFA_PATH) /LUFA/Drivers/USB/HighLevel/USBTask.c \
$( LUFA_SRC_USB)
# List C++ source files here. (C dependencies are automatically generated.)
CPPSRC =
CPPSRC =
# List Assembler source files here.
@ -154,7 +148,7 @@ CPPSRC =
ASRC =
# Optimization level, can be [0, 1, 2, 3, s].
# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
OPT = s
@ -183,14 +177,23 @@ CSTANDARD = -std=c99
# Place -D or -U options here for C sources
CDEFS = -DF_CPU= $( F_CPU) UL -DF_CLOCK= $( F_CLOCK) UL -DBOARD= BOARD_$( BOARD) $( LUFA_OPTS)
CDEFS = -DF_CPU= $( F_CPU) UL
CDEFS += -DF_CLOCK= $( F_CLOCK) UL
CDEFS += -DBOARD= BOARD_$( BOARD)
CDEFS += $( LUFA_OPTS)
# Place -D or -U options here for ASM sources
ADEFS = -DF_CPU= $( F_CPU)
# Place -D or -U options here for ASM sources
ADEFS = -DF_CPU= $( F_CPU)
ADEFS += -DF_CLOCK= $( F_CLOCK) UL
ADEFS += -DBOARD= BOARD_$( BOARD)
ADEFS += $( LUFA_OPTS)
# Place -D or -U options here for C++ sources
CPPDEFS = -DF_CPU= $( F_CPU) UL
CPPDEFS = -DF_CPU= $( F_CPU) UL
CPPDEFS += -DF_CLOCK= $( F_CLOCK) UL
CPPDEFS += -DBOARD= BOARD_$( BOARD)
CPPDEFS += $( LUFA_OPTS)
#CPPDEFS += -D__STDC_LIMIT_MACROS
#CPPDEFS += -D__STDC_CONSTANT_MACROS
@ -215,8 +218,9 @@ CFLAGS += -fshort-enums
CFLAGS += -fno-strict-aliasing
CFLAGS += -Wall
CFLAGS += -Wstrict-prototypes
CFLAGS += -Wundef
#CFLAGS += -mshort-calls
#CFLAGS += -fno-unit-at-a-time
#CFLAGS += -Wundef
#CFLAGS += -Wunreachable-code
#CFLAGS += -Wsign-compare
CFLAGS += -Wa,-adhlns= $( <:%.c= $( OBJDIR) /%.lst)
@ -240,7 +244,7 @@ CPPFLAGS += -fpack-struct
CPPFLAGS += -fshort-enums
CPPFLAGS += -fno-exceptions
CPPFLAGS += -Wall
C FLAGS += -Wundef
C PP FLAGS += -Wundef
#CPPFLAGS += -mshort-calls
#CPPFLAGS += -fno-unit-at-a-time
#CPPFLAGS += -Wstrict-prototypes
@ -258,7 +262,7 @@ CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
# for use in COFF files, additional information about filenames
# and function names needs to be present in the assembler source
# files -- see avr-libc docs [FIXME: not yet described there]
# -listing-cont-lines: Sets the maximum number of continuation lines of hex
# -listing-cont-lines: Sets the maximum number of continuation lines of hex
# dump that will be displayed for a given single line of source input.
ASFLAGS = $( ADEFS) -Wa,-adhlns= $( <:%.S= $( OBJDIR) /%.lst) ,-gstabs,--listing-cont-lines= 100
@ -271,7 +275,7 @@ PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
# If this is left blank, then it will use the Standard printf version.
PRINTF_LIB =
PRINTF_LIB =
#PRINTF_LIB = $(PRINTF_LIB_MIN)
#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
@ -283,7 +287,7 @@ SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
# If this is left blank, then it will use the Standard scanf version.
SCANF_LIB =
SCANF_LIB =
#SCANF_LIB = $(SCANF_LIB_MIN)
#SCANF_LIB = $(SCANF_LIB_FLOAT)
@ -295,7 +299,7 @@ MATH_LIB = -lm
# Each directory must be seperated by a space.
# Use forward slashes for directory separators.
# For a directory that has spaces, enclose it in quotes.
EXTRALIBDIRS =
EXTRALIBDIRS =
@ -317,8 +321,8 @@ EXTMEMOPTS =
# -Wl,...: tell GCC to pass this to linker.
# -Map: create map file
# --cref: add cross reference to map file
LDFLAGS = -Wl,-Map= $( TARGET) .map,--cref
LDFLAGS += -Wl,--relax
LDFLAGS = -Wl,-Map= $( TARGET) .map,--cref
LDFLAGS += -Wl,--relax
LDFLAGS += -Wl,--gc-sections
LDFLAGS += $( EXTMEMOPTS)
LDFLAGS += $( patsubst %,-L%,$( EXTRALIBDIRS) )
@ -329,9 +333,7 @@ LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
#---------------- Programming Options (avrdude) ----------------
# Programming hardware: alf avr910 avrisp bascom bsd
# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500
#
# Programming hardware
# Type: avrdude -c ?
# to get a full listing.
#
@ -354,7 +356,7 @@ AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
#AVRDUDE_NO_VERIFY = -V
# Increase verbosity level. Please use this when submitting bug
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
# to submit bug reports.
#AVRDUDE_VERBOSE = -v -v
@ -388,7 +390,7 @@ JTAG_DEV = /dev/com1
DEBUG_PORT = 4242
# Debugging host used to communicate between GDB / avarice / simulavr, normally
# just set to localhost unless doing some sort of crazy debugging when
# just set to localhost unless doing some sort of crazy debugging when
# avarice is running on a different computer.
DEBUG_HOST = localhost
@ -411,12 +413,13 @@ REMOVEDIR = rm -rf
COPY = cp
WINSHELL = cmd
# Define Messages
# English
MSG_ERRORS_NONE = Errors: none
MSG_BEGIN = -------- begin --------
MSG_END = -------- end --------
MSG_SIZE_BEFORE = Size before:
MSG_SIZE_BEFORE = Size before:
MSG_SIZE_AFTER = Size after:
MSG_COFF = Converting to AVR COFF:
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
@ -435,10 +438,10 @@ MSG_CREATING_LIBRARY = Creating library:
# Define all object files.
OBJ = $( SRC:%.c= $( OBJDIR) /%.o) $( CPPSRC:%.cpp= $( OBJDIR) /%.o) $( ASRC:%.S= $( OBJDIR) /%.o)
OBJ = $( SRC:%.c= $( OBJDIR) /%.o) $( CPPSRC:%.cpp= $( OBJDIR) /%.o) $( ASRC:%.S= $( OBJDIR) /%.o)
# Define all listing files.
LST = $( SRC:%.c= $( OBJDIR) /%.lst) $( CPPSRC:%.cpp= $( OBJDIR) /%.lst) $( ASRC:%.S= $( OBJDIR) /%.lst)
LST = $( SRC:%.c= $( OBJDIR) /%.lst) $( CPPSRC:%.cpp= $( OBJDIR) /%.lst) $( ASRC:%.S= $( OBJDIR) /%.lst)
# Compiler flags to generate dependency files.
@ -456,7 +459,7 @@ ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
# Default target.
all : begin gccversion sizebefore build s howliboptions showtarget s izeafter end
all : begin gccversion sizebefore build s izeafter end
# Change the build target to build a HEX file or a library.
build : elf hex eep lss sym
@ -487,9 +490,7 @@ end:
# Display size of file.
HEXSIZE = $( SIZE) --target= $( FORMAT) $( TARGET) .hex
ELFSIZE = $( SIZE) $( MCU_FLAG) $( FORMAT_FLAG) $( TARGET) .elf
MCU_FLAG = $( shell $( SIZE) --help | grep -- --mcu > /dev/null && echo --mcu= $( MCU) )
FORMAT_FLAG = $( shell $( SIZE) --help | grep -- --format= .*avr > /dev/null && echo --format= avr )
ELFSIZE = $( SIZE) --mcu= $( MCU) --format= avr $( TARGET) .elf
sizebefore :
@if test -f $( TARGET) .elf; then echo; echo $( MSG_SIZE_BEFORE) ; $( ELFSIZE) ; \
@ -499,29 +500,14 @@ sizeafter:
@if test -f $( TARGET) .elf; then echo; echo $( MSG_SIZE_AFTER) ; $( ELFSIZE) ; \
2>/dev/null; echo; fi
showliboptions :
@echo
@echo ---- Compile Time Library Options ----
@for i in $( LUFA_OPTS:-D%= %) ; do \
echo $$ i; \
done
@echo --------------------------------------
showtarget :
@echo
@echo --------- Target Information ---------
@echo AVR Model: $( MCU)
@echo Board: $( BOARD)
@echo Clock: $( F_CPU) Hz CPU, $( F_CLOCK) Hz Master
@echo --------------------------------------
# Display compiler version information.
gccversion :
gccversion :
@$( CC) --version
# Program the device.
# Program the device.
program : $( TARGET ) .hex $( TARGET ) .eep
$( AVRDUDE) $( AVRDUDE_FLAGS) $( AVRDUDE_WRITE_FLASH) $( AVRDUDE_WRITE_EEPROM)
@ -548,9 +534,9 @@ dfu-ee: $(TARGET).hex $(TARGET).eep
# Generate avr-gdb config/init file which does the following:
# define the reset signal, load the target file, connect to target, and set
# define the reset signal, load the target file, connect to target, and set
# a breakpoint at main().
gdb-config :
gdb-config :
@$( REMOVE) $( GDBINIT_FILE)
@echo define reset >> $( GDBINIT_FILE)
@echo SIGNAL SIGHUP >> $( GDBINIT_FILE)
@ -604,7 +590,7 @@ extcoff: $(TARGET).elf
%.hex : %.elf
@echo
@echo $( MSG_FLASH) $@
$( OBJCOPY) -O $( FORMAT) -R .eeprom $< $@
$( OBJCOPY) -O $( FORMAT) -R .eeprom -R .fuse -R .lock $< $@
%.eep : %.elf
@echo
@ -616,7 +602,7 @@ extcoff: $(TARGET).elf
%.lss : %.elf
@echo
@echo $( MSG_EXTENDED_LISTING) $@
$( OBJDUMP) -h -z -S $< > $@
$( OBJDUMP) -h -S -z $< > $@
# Create a symbol table from ELF output file.
%.sym : %.elf
@ -648,14 +634,14 @@ extcoff: $(TARGET).elf
$(OBJDIR)/%.o : %.c
@echo
@echo $( MSG_COMPILING) $<
$( CC) -c $( ALL_CFLAGS) $< -o $@
$( CC) -c $( ALL_CFLAGS) $< -o $@
# Compile: create object files from C++ source files.
$(OBJDIR)/%.o : %.cpp
@echo
@echo $( MSG_COMPILING_CPP) $<
$( CC) -c $( ALL_CPPFLAGS) $< -o $@
$( CC) -c $( ALL_CPPFLAGS) $< -o $@
# Compile: create assembler files from C source files.
@ -677,19 +663,17 @@ $(OBJDIR)/%.o : %.S
# Create preprocessed source for use in sending a bug report.
%.i : %.c
$( CC) -E -mmcu= $( MCU) -I. $( CFLAGS) $< -o $@
$( CC) -E -mmcu= $( MCU) -I. $( CFLAGS) $< -o $@
# Target: clean project.
clean : begin clean_list clean_binary end
clean : begin clean_list end
clean_binary :
$( REMOVE) $( TARGET) .hex
clean_list :
clean_list :
@echo
@echo $( MSG_CLEANING)
$( REMOVE) $( TARGET) .hex
$( REMOVE) $( TARGET) .eep
$( REMOVE) $( TARGET) eep.hex
$( REMOVE) $( TARGET) .cof
$( REMOVE) $( TARGET) .elf
$( REMOVE) $( TARGET) .map
@ -700,7 +684,6 @@ clean_list:
$( REMOVE) $( SRC:.c= .s)
$( REMOVE) $( SRC:.c= .d)
$( REMOVE) $( SRC:.c= .i)
$( REMOVE) InvalidEvents.tmp
$( REMOVEDIR) .dep
doxygen :
@ -720,8 +703,7 @@ $(shell mkdir $(OBJDIR) 2>/dev/null)
# Listing of phony targets.
.PHONY : all showliboptions showtarget begin \
f i n i s h e n d s i z e b e f o r e s i z e a f t e r g c c v e r s i o n b u i l d \
e l f h e x e e p l s s s y m c o f f e x t c o f f p r o g r a m d f u f l i p \
f l i p - e e d f u - e e c l e a n d e b u g c l e a n _ l i s t c l e a n _ b i n a r y \
c l e a n _ d o x y g e n g d b - c o n f i g d o x y g e n
.PHONY : all begin finish end sizebefore sizeafter gccversion \
b u i l d e l f h e x e e p l s s s y m c o f f e x t c o f f d o x y g e n c l e a n \
c l e a n _ l i s t c l e a n _ d o x y g e n p r o g r a m d f u f l i p f l i p - e e d f u - e e \
d e b u g g d b - c o n f i g