# # Targets: # generate flash file # install generate flash # download download flash # check shows md5 and sha1 sum of uploaded code # clean remove obj- and temporary files # # change PROJNAME for new projects # add your object files to OBJS # #------------------------------------------------------------------------- # project specific things # change these definitions for new projects #------------------------------------------------------------------------- PROJNAME = arduino_HOTP OBJS = main.o \ trunc.o \ calib.o \ usb_callback.o \ sha1/sha1-asm.o \ hmac-sha1/hmac-sha1.o \ mem_eval/mem_eval.o \ usbdrv/usbdrv.o \ usbdrv/oddebug.o \ usbdrv/usbdrvasm.o \ usart/usart.o INCLUDE = -Isha1 -Ihmac-sha1 -Iusbdrv -Iusart -Imem_eval DEBUG = -DDEBUG -DF_CPU=16000000 #DEBUG = -DDEBUG -DCALIB -DF_CPU=16000000 # target architecture MCU = atmega168 #------------------------------------------------------------------------- # macros for the tools #------------------------------------------------------------------------- BAUD = 19200 BINFORMAT = ihex # programmer format, this depends on programmer or bootloader you're using #PROGFORMAT = dasa2 #PROGFORMAT = dapa #PROGFORMAT = stk200 #PROGFORMAT = usbtiny PROGFORMAT = stk500v2 # programmer-device-file #IFCTYPE = /dev/ttyS0 #IFCTYPE = /dev/ttyS1 #IFCTYPE = /dev/ttyACM0 #IFCTYPE = /dev/ttyACM1 IFCTYPE = /dev/ttyUSB0 #IFCTYPE = /dev/ttyUSB1 # Tools AS = avr-as ASLD = avr-gcc -x assembler LD = avr-ld CC = avr-gcc OBJCOPY = avr-objcopy #PROGR = uisp #PROGR = at16prog PROGR = lboot #PROGR = avrdude # Flags CFLAGS = -Wall -Os -mmcu=$(MCU) $(DEBUG) LDFLAGS = -Wl,-Map=$*.map -mmcu=$(MCU) OCFLAGS = -O $(BINFORMAT) # at16prog #PRFLAGS = $(IFCTYPE) -dprog=$(PROGFORMAT) -dpart=$(MCU) # avrdude #PRFLAGS = -F -p $(MCU) -P $(IFCTYPE) -c $(PROGFORMAT) -b $(BAUD) PRFLAGS = -d $(IFCTYPE) -b $(BAUD) #------------------------------------------------------------------------- # the targets #------------------------------------------------------------------------- all: $(PROJNAME).hex $(PROJNAME).elf $(OBJS) %.hex: %.elf $(OBJCOPY) $(OCFLAGS) $< $@ @chmod ugo-x $@ %.elf: $(OBJS) $(CC) $(OBJS) $(LIBS) $(LDFLAGS) -o $@ %.o: %.c $(CC) $(CFLAGS) $(INCLUDE) -Wa,-a=$*.list -c -o $@ $< %.o: %.S $(CC) $(CFLAGS) $(INCLUDE) -Wa,-a=$*.list -c -o $@ $< install: $(PROJNAME).hex $(PROGR) $(PRFLAGS) -p $(PROJNAME).hex #$(PROGR) $(PRFLAGS) -U flash:w:$(PROJNAME).hex download: $(PROJNAME).down.hex echo "" $(PROJNAME).down.hex: $(PROGR) $(PRFLAGS) -U flash:r:$(PROJNAME).down.hex:i check:$(PROJNAME).down.hex $(PROJNAME).hex $(PROGR) $(PRFLAGS) -v $(PROJNAME).hex TMP=*.hex *.elf *.map *.list *.o *~ define TMPCLEAN @cd $(dir); rm -f $(TMP) endef SCHLIMM=cd $(dir);echo $(dir)$(TMP) clean: $(foreach dir,$(dir $(OBJS)), $(TMPCLEAN))