Merge pull request #1726 from feshie/pr-zoul-motes-flash-fix
zoul: Add support for flashing to multiple devices
This commit is contained in:
commit
6360a09cc7
|
@ -12,10 +12,6 @@ endif
|
||||||
PYTHON = python
|
PYTHON = python
|
||||||
BSL_FLAGS += -e -w -v
|
BSL_FLAGS += -e -w -v
|
||||||
|
|
||||||
ifdef PORT
|
|
||||||
BSL_FLAGS += -p $(PORT)
|
|
||||||
endif
|
|
||||||
|
|
||||||
### Configure the build for the board and pull in board-specific sources
|
### Configure the build for the board and pull in board-specific sources
|
||||||
CONTIKI_TARGET_DIRS += . dev
|
CONTIKI_TARGET_DIRS += . dev
|
||||||
CONTIKI_TARGET_DIRS += . $(BOARD)
|
CONTIKI_TARGET_DIRS += . $(BOARD)
|
||||||
|
@ -57,28 +53,48 @@ endif
|
||||||
### Detect if a mote is connected over serial port
|
### Detect if a mote is connected over serial port
|
||||||
ifeq ($(HOST_OS),Darwin)
|
ifeq ($(HOST_OS),Darwin)
|
||||||
USBDEVPREFIX=
|
USBDEVPREFIX=
|
||||||
MOTELIST = $(CONTIKI)/tools/zolertia/motelist-zolertia-macos
|
MOTELIST := $(CONTIKI)/tools/zolertia/motelist-zolertia-macos
|
||||||
MOTES = $(shell $(MOTELIST) -c 2>&- | cut -f 2 -d ,)
|
MOTES := $(shell $(MOTELIST) -c 2>&- | cut -f 2 -d ,)
|
||||||
SERIALDUMP = $(CONTIKI)/tools/sky/serialdump-macos
|
SERIALDUMP := $(CONTIKI)/tools/sky/serialdump-macos
|
||||||
else
|
else
|
||||||
### If we are not running under Mac, we assume Linux
|
### If we are not running under Mac, we assume Linux
|
||||||
USBDEVPREFIX=
|
USBDEVPREFIX=
|
||||||
SERIALDUMP = $(CONTIKI)/tools/sky/serialdump-linux
|
SERIALDUMP := $(CONTIKI)/tools/sky/serialdump-linux
|
||||||
MOTELIST = $(CONTIKI)/tools/zolertia/motelist-zolertia
|
MOTELIST := $(CONTIKI)/tools/zolertia/motelist-zolertia
|
||||||
MOTES = $(shell $(MOTELIST) -b $(MOTELIST_ZOLERTIA) -c 2>&- | cut -f 2 -d , | \
|
MOTES := $(shell $(MOTELIST) -b $(MOTELIST_ZOLERTIA) -c 2>&- | cut -f 2 -d , | \
|
||||||
perl -ne 'print $$1 . " " if(m-(/dev/\w+)-);')
|
perl -ne 'print $$1 . " " if(m-(/dev/\w+)-);')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
%.upload: %.bin %.elf
|
### If PORT is defined, override to keep backward compatibility
|
||||||
|
ifdef PORT
|
||||||
|
MOTES := $(PORT)
|
||||||
|
endif
|
||||||
|
|
||||||
|
### Check the BSL script exists
|
||||||
ifeq ($(wildcard $(BSL)), )
|
ifeq ($(wildcard $(BSL)), )
|
||||||
|
%.upload:
|
||||||
@echo "ERROR: Could not find the cc2538-bsl script. Did you run 'git submodule update --init' ?"
|
@echo "ERROR: Could not find the cc2538-bsl script. Did you run 'git submodule update --init' ?"
|
||||||
else
|
else
|
||||||
$(eval BSL_ADDRESS_ARG := -a $(shell $(OBJDUMP) -h $*.elf | grep -B1 LOAD | \
|
### Upload to every MOTE
|
||||||
grep -Ev 'LOAD|\-\-' | awk '{print "0x" $$5}' | \
|
%.upload: $(foreach MOTE,$(MOTES),%.$(MOTE))
|
||||||
sort -g | head -1))
|
@# Dummy recipe to prevent "No rule to make *.upload errors"
|
||||||
$(PYTHON) $(BSL) $(BSL_FLAGS) $(BSL_ADDRESS_ARG) $<
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
### Variable that expands into a pattern rule to upload to a given MOTE.
|
||||||
|
### Requires $(MOTE) to be defined
|
||||||
|
### $$$$ Double escapes $s that need to be passed to the shell - once for when make parses UPLOAD_RULE, and once for when the expanded rule is parsed by make.
|
||||||
|
define UPLOAD_RULE
|
||||||
|
%.$(MOTE): %.bin %.elf
|
||||||
|
@echo "Flashing $(MOTE)"
|
||||||
|
@BSL_ADDRESS=`$(OBJDUMP) -h $$*.elf | grep -B1 LOAD | \
|
||||||
|
grep -Ev 'LOAD|\-\-' | awk '{print "0x" $$$$5}' | \
|
||||||
|
sort -g | head -1`; \
|
||||||
|
$(PYTHON) $(BSL) $(BSL_FLAGS) -a $$$${BSL_ADDRESS} -p $(MOTE) $$<
|
||||||
|
endef
|
||||||
|
|
||||||
|
### Create an upload rule for every MOTE connected
|
||||||
|
$(foreach MOTE,$(MOTES),$(eval $(UPLOAD_RULE)))
|
||||||
|
|
||||||
motelist:
|
motelist:
|
||||||
$(MOTELIST)
|
$(MOTELIST)
|
||||||
zoul-motelist:
|
zoul-motelist:
|
||||||
|
@ -86,16 +102,8 @@ zoul-motelist:
|
||||||
zoul-motes:
|
zoul-motes:
|
||||||
@echo $(MOTES)
|
@echo $(MOTES)
|
||||||
|
|
||||||
ifdef PORT
|
|
||||||
serialview:
|
|
||||||
$(SERIALDUMP) -b115200 $(USBDEVPREFIX) $(PORT) | $(CONTIKI)/tools/timestamp
|
|
||||||
|
|
||||||
login:
|
|
||||||
$(SERIALDUMP) -b115200 $(USBDEVPREFIX) $(PORT)
|
|
||||||
else
|
|
||||||
serialview:
|
serialview:
|
||||||
$(SERIALDUMP) -b115200 $(USBDEVPREFIX)$(firstword $(MOTES)) | $(CONTIKI)/tools/timestamp
|
$(SERIALDUMP) -b115200 $(USBDEVPREFIX)$(firstword $(MOTES)) | $(CONTIKI)/tools/timestamp
|
||||||
|
|
||||||
login:
|
login:
|
||||||
$(SERIALDUMP) -b115200 $(USBDEVPREFIX)$(firstword $(MOTES))
|
$(SERIALDUMP) -b115200 $(USBDEVPREFIX)$(firstword $(MOTES))
|
||||||
endif
|
|
||||||
|
|
Loading…
Reference in a new issue