# $Id: Makefile.common,v 1.3 2010/08/24 16:24:11 joxe Exp $ ARCH=spi-legacy.c ds2411.c xmem.c i2c.c sensors.c cfs-coffee.c \ cc2420.c cc2420-arch.c cc2420-arch-sfd.c \ sky-sensors.c uip-ipchksum.c \ uart1.c slip_uart1.c uart1-putchar.c platform.c CONTIKI_TARGET_DIRS = . dev apps net ifndef CONTIKI_TARGET_MAIN CONTIKI_TARGET_MAIN = contiki-main.c endif ifdef IAR CFLAGS += -D__MSP430F1611__=1 -e --vla -Ohz --multiplier=16s --core=430 --double=32 CFLAGSNO = --dlib_config "$(IAR_PATH)/LIB/DLIB/dl430fn.h" $(CFLAGSWERROR) endif CONTIKI_TARGET_SOURCEFILES += $(ARCH) $(UIPDRIVERS) MCU=msp430f1611 include $(CONTIKI)/arch/cpu/msp430/Makefile.msp430 ifdef IAR LDFLAGSNO += -xm "$(IAR_PATH)/lib/dlib/dl430fn.r43" -f "$(IAR_PATH)/config/lnk430f1611.xcl" LDFLAGS += $(LDFLAGSNO) -Felf -yn endif # IAR NUMPAR=20 # Check if we are running under Windows ifeq ($(HOST_OS),Windows) USBDEVPREFIX=/dev/com SERIALDUMP = $(CONTIKI)/tools/sky/serialdump-windows MOTELIST = $(CONTIKI)/tools/sky/motelist-windows TMOTE_BSL_FILE = tmote-bsl TMOTE_BSL=$(if $(wildcard $(CONTIKI)/tools/sky/$(TMOTE_BSL_FILE).exe),1,0) ifeq ($(TMOTE_BSL), 1) NUMPAR = 1 BSL = $(CONTIKI)/tools/sky/$(TMOTE_BSL_FILE) MOTES = $(shell $(MOTELIST) | grep COM | \ cut -f 4 -d \ ) else BSL = $(CONTIKI)/tools/sky/msp430-bsl-windows --telosb BSL_FILETYPE = -I MOTES = $(shell $(MOTELIST) | grep COM | \ cut -f 4 -d \ | \ perl -ne 'print $$1 - 1 . " " if(/COM(\d+)/);') endif CMOTES = $(shell $(MOTELIST) | grep COM | \ cut -f 4 -d \ | \ perl -ne 'print $$1 . " " if(/COM(\d+)/);') else ifeq ($(HOST_OS),Darwin) ifndef MOTELIST USBDEVPREFIX= MOTELIST = $(CONTIKI)/tools/sky/motelist-macos TMOTE_BSL_FILE = tmote-bsl-linux TMOTE_BSL=$(if $(wildcard $(CONTIKI)/tools/sky/$(TMOTE_BSL_FILE)),1,0) ifeq ($(TMOTE_BSL), 1) PATH := $(PATH):$(CONTIKI)/tools/sky BSL = $(CONTIKI)/tools/sky/$(TMOTE_BSL_FILE) NUMPAR = 1 else BSL = $(CONTIKI)/tools/sky/msp430-bsl-linux --telosb BSL_FILETYPE = -I endif MOTES = $(shell $(MOTELIST) 2>&- | grep usbserial | \ cut -f 4 -d \ | \ perl -ne 'print $$1 . " " if(m-(/dev/[\w+\.\-]+)-);') CMOTES=$(MOTES) endif else # Else we assume Linux ifndef MOTELIST USBDEVPREFIX= MOTELIST = $(CONTIKI)/tools/sky/motelist-linux TMOTE_BSL_FILE = tmote-bsl-linux TMOTE_BSL=$(if $(wildcard $(CONTIKI)/tools/sky/$(TMOTE_BSL_FILE)),1,0) ifeq ($(TMOTE_BSL), 1) PATH := $(PATH):$(CONTIKI)/tools/sky BSL = $(CONTIKI)/tools/sky/$(TMOTE_BSL_FILE) NUMPAR = 1 else BSL = $(CONTIKI)/tools/sky/msp430-bsl-linux --telosb BSL_FILETYPE = -I endif ifdef MOTEIDS MOTES = $(foreach MOTEID, $(MOTEIDS), $(shell $(MOTELIST) 2>&- | grep $(MOTEID) | \ cut -f 4 -d \ | \ perl -ne 'print $$1 . " " if(m-(/dev/[\w+\.\-]+)-);')) else MOTES = $(shell $(MOTELIST) 2>&- | grep USB | \ cut -f 4 -d \ | \ perl -ne 'print $$1 . " " if(m-(/dev/[\w+\.\-]+)-);') endif CMOTES=$(MOTES) endif endif endif motelist: sky-motelist sky-motelist: $(MOTELIST) sky-motes: @echo $(MOTES) ifdef MOTE %.upload: %.ihex $(MAKE) IHEXFILE=$< sky-u.$(subst /,_,$(word $(MOTE), $(MOTES))) else # MOTE %.upload: %.ihex $(MAKE) IHEXFILE=$< sky-reset sky-upload endif # MOTE upload-ihex: ifdef FILE @echo Uploading $(FILE) ifdef MOTE $(MAKE) IHEXFILE=$(FILE) sky-u.$(subst /,_,$(word $(MOTE), $(MOTES))) else # MOTE $(MAKE) sky-reset sky-upload endif # MOTE else @echo Example: $(MAKE) upload-ihex FILE=myfile.ihex endif sky-upload: sky-reset $(MAKE) -j $(NUMPAR) sky-upload-sequence sky-upload-sequence: $(foreach PORT, $(MOTES), sky-u.$(subst /,_,$(PORT))) @echo Done sky-reset: $(MAKE) -k -j $(NUMPAR) sky-reset-sequence sky-reset-sequence: $(foreach PORT, $(MOTES), sky-r.$(subst /,_,$(PORT))) @echo Done sky-u.%: @echo +++++ Erasing $(subst _,/,$*); \ $(BSL) -c $(subst _,/,$*) -e && sleep 2 ; \ echo +++++ Programming $(subst _,/,$*) ; \ $(BSL) -c $(subst _,/,$*) $(BSL_FILETYPE) -p $(IHEXFILE) && sleep 2 ; \ echo +++++ Resetting $(subst _,/,$*) ; \ $(BSL) -c $(subst _,/,$*) -r sky-r.%: $(BSL) -c $(subst _,/,$*) -r sizeplot: msp430-size $(OBJECTDIR)/*.o | $(CONTIKI)/tools/sky/check-size > size-data gnuplot $(CONTIKI)/tools/sky/plot-size gv size.pdf winslip: ifdef INTERFACE $(CONTIKI)/tools/wpcapslip/wpcapslip -s $(USBDEVPREFIX)$(firstword $(CMOTES)) $(INTERFACE) 172.16.0.0 255.255.0.0 else @echo "Usage: \"$(MAKE) $@ INTERFACE=\"" @echo "Use the \"ipconfig\" command to find out the IP addresses of the local interfaces" endif linslip: $(CONTIKI)/tools/tunslip $(CONTIKI)/tools/tunslip -s $(USBDEVPREFIX)$(firstword $(CMOTES)) 172.16.0.0 255.255.0.0 $(CONTIKI)/tools/tunslip: (cd $(CONTIKI)/tools; $(MAKE) tunslip) ifdef MOTE PORT = $(USBDEVPREFIX)$(word $(MOTE), $(CMOTES)) else PORT = $(USBDEVPREFIX)$(firstword $(CMOTES)) endif