nes-proj/arch/platform/sky/Makefile.common

176 lines
4.9 KiB
Makefile

# $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 $(ARCH_PATH)/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=<the IP address of a local network 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