# Common Makefile between the Z1 and Z1SP ifdef GCC CFLAGS+=-Os -g endif ifdef IAR CFLAGS += -D__MSP430F2617__=1 -e --vla -Ohz --multiplier=16s --core=430X --double=32 else LDFLAGS += -Wl,--defsym -Wl,__P1SEL2=0x0041 -Wl,--defsym -Wl,__P5SEL2=0x0045 endif CLEAN += symbols.c symbols.h ARCH=msp430.c leds.c watchdog.c xmem.c \ spi.c cc2420.c cc2420-arch.c cc2420-arch-sfd.c\ node-id.c sensors.c button-sensor.c cfs-coffee.c \ radio-sensor.c uart0.c uart0-putchar.c uip-ipchksum.c \ slip.c slip_uart0.c \ z1-phidgets.c sht11.c sht11-sensor.c light-sensor.c \ battery-sensor.c sky-sensors.c tmp102.c temperature-sensor.c light-ziglet.c \ relay-phidget.c tlc59116.c CONTIKI_TARGET_DIRS = . dev apps net ifndef CONTIKI_TARGET_MAIN CONTIKI_TARGET_MAIN = contiki-z1-main.c endif ifdef nodemac CFLAGS += -DMACID=$(nodemac) endif CONTIKI_TARGET_SOURCEFILES += $(ARCH) $(UIPDRIVERS) CONTIKI_TARGET_SOURCEFILES += i2cmaster.c adxl345.c MCU=msp430f2617 # Platform has a MSP430X MCU with 20-bit support CPU_HAS_MSP430X=1 include $(CONTIKI)/cpu/msp430/Makefile.msp430 # Add LDFLAGS after IAR_PATH is set ifdef IAR LDFLAGSNO += -xm "$(IAR_PATH)/lib/dlib/dl430xsfn.r43" -f "$(IAR_PATH)/config/lnk430f2617.xcl" LDFLAGS += $(LDFLAGSNO) -Felf -yn endif contiki-$(TARGET).a: ${addprefix $(OBJECTDIR)/,symbols.o} # $(AR) rcf $@ $^ NUMPAR=20 IHEXFILE=tmpimage.ihex ifeq ($(HOST_OS),Darwin) ifndef MOTELIST USBDEVPREFIX= SERIALDUMP = $(CONTIKI)/tools/sky/serialdump-linux MOTELIST = $(CONTIKI)/tools/z1/motelist-z1-macos BSL = $(CONTIKI)/tools/z1/z1-bsl-nopic --z1 BSL_FILETYPE = -I MOTES = $(shell $(MOTELIST) -c 2>&- | \ cut -f 2 -d ,) CMOTES=$(MOTES) REFNUM = $(shell $(MOTELIST) -c 2>&- | \ cut -f 1 -d , | tail -c5 | sed 's/^0*//') ifneq (,$(REFNUM)) # No device fo-und ifeq (,$(findstring und, $(REFNUM))) CFLAGS += -DSERIALNUM=$(REFNUM:0%=%) endif endif endif else # If we are not running under Mac, we assume Linux ifndef MOTELIST USBDEVPREFIX= SERIALDUMP = $(CONTIKI)/tools/sky/serialdump-linux MOTELIST = $(CONTIKI)/tools/z1/motelist-z1 BSL = $(CONTIKI)/tools/z1/z1-bsl-nopic --z1 BSL_FILETYPE = -I MOTES = $(shell $(MOTELIST) -c 2>&- | \ cut -f 2 -d , | \ perl -ne 'print $$1 . " " if(m-(/dev/\w+)-);') CMOTES=$(MOTES) REFNUM = $(shell $(MOTELIST) -c 2>&- | \ cut -f 1 -d , | tail -c5 | sed 's/^0*//') ifneq (,$(REFNUM)) # No device fo-und ifeq (,$(findstring und, $(REFNUM))) CFLAGS += -DSERIALNUM=$(REFNUM) endif endif endif endif motelist: z1-motelist z1-motelist: $(MOTELIST) z1-motes: @echo $(MOTES) ifdef MOTE %.upload: %.ihex cp $< $(IHEXFILE) $(MAKE) z1-u.$(subst /,-,$(word $(MOTE), $(MOTES))) else # MOTE %.upload: %.ihex cp $< $(IHEXFILE) @echo $(MOTES) $(MAKE) z1-reset z1-upload endif # MOTE z1-upload: z1-reset $(MAKE) -j $(NUMPAR) z1-upload-sequence z1-upload-sequence: $(foreach PORT, $(MOTES), z1-u.$(subst /,-,$(PORT))) @echo Done z1-reset: $(MAKE) -k -j $(NUMPAR) z1-reset-sequence z1-reset-sequence: $(foreach PORT, $(MOTES), z1-r.$(subst /,-,$(PORT))) @echo Done z1-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 z1-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 serialdump: $(SERIALDUMP) -b115200 $(USBDEVPREFIX)$(word $(MOTE), $(CMOTES)) | $(CONTIKI)/tools/timestamp | tee serialdump-`date +%Y%m%d-%H%M` serialview: $(SERIALDUMP) -b115200 $(USBDEVPREFIX)$(word $(MOTE), $(CMOTES)) | $(CONTIKI)/tools/timestamp login: $(SERIALDUMP) -b115200 $(USBDEVPREFIX)$(word $(MOTE), $(CMOTES)) else serialdump: $(SERIALDUMP) -b115200 $(USBDEVPREFIX)$(firstword $(CMOTES)) | $(CONTIKI)/tools/timestamp | tee serialdump-`date +%Y%m%d-%H%M` serialview: $(SERIALDUMP) -b115200 $(USBDEVPREFIX)$(firstword $(CMOTES)) | $(CONTIKI)/tools/timestamp login: $(SERIALDUMP) -b115200 $(USBDEVPREFIX)$(firstword $(CMOTES)) endif