2017-03-16 10:46:31 +08:00
|
|
|
#
|
|
|
|
# LWS-style images are composed like this
|
|
|
|
#
|
|
|
|
# [ OTA or Factory standard xpressif image ]
|
|
|
|
# [ 32-b LE len ] [ ROMFS ]
|
|
|
|
# [ 32-b LE len ] [ Image information JSON ]
|
|
|
|
#
|
|
|
|
|
2017-04-06 04:44:25 +08:00
|
|
|
SHELL=/bin/bash
|
|
|
|
|
2017-05-14 14:55:15 +08:00
|
|
|
ESPPORT ?= $(CONFIG_ESPTOOLPY_PORT)
|
|
|
|
|
2017-08-19 08:14:49 +08:00
|
|
|
LWS_BUILD_PATH=$(PROJECT_PATH)/build
|
|
|
|
|
|
|
|
jbi=$(LWS_BUILD_PATH)/json-buildinfo
|
2017-03-16 10:46:31 +08:00
|
|
|
|
2017-04-04 08:46:51 +08:00
|
|
|
FAC=$(CONFIG_LWS_IS_FACTORY_APPLICATION)
|
|
|
|
ifeq ($(FAC),)
|
|
|
|
FAC=0
|
|
|
|
endif
|
|
|
|
export FAC
|
2017-05-11 15:02:01 +08:00
|
|
|
DIRNAME:=$(shell basename $$(pwd) | tr -d '\n')
|
2017-04-04 08:46:51 +08:00
|
|
|
|
2017-08-19 08:14:49 +08:00
|
|
|
$(LWS_BUILD_PATH)/pack.img: $(APP_BIN)
|
2017-05-05 02:17:28 +08:00
|
|
|
GNUSTAT=stat ;\
|
|
|
|
if [ `which gstat 2>/dev/null` ] ; then GNUSTAT=gstat ; fi ;\
|
2017-03-16 10:46:31 +08:00
|
|
|
DIRNAME=$$(basename $$(pwd) | tr -d '\n') ;\
|
2017-08-19 08:14:49 +08:00
|
|
|
genromfs -f $(LWS_BUILD_PATH)/romfs.img -d $(PROJECT_PATH)/romfs-files ; \
|
|
|
|
RLEN=$$($$GNUSTAT -c %s $(LWS_BUILD_PATH)/romfs.img) ;\
|
|
|
|
LEN=$$($$GNUSTAT -c %s $(LWS_BUILD_PATH)/$$DIRNAME.bin) ;\
|
2017-03-16 10:46:31 +08:00
|
|
|
printf " Original length: 0x%06x (%8d)\n" $$LEN $$LEN ; \
|
2017-08-19 08:14:49 +08:00
|
|
|
printf %02x $$(( $$RLEN % 256 )) | xxd -r -p >> $(LWS_BUILD_PATH)/$$DIRNAME.bin ;\
|
|
|
|
printf %02x $$(( ( $$RLEN / 256 ) % 256 )) | xxd -r -p >> $(LWS_BUILD_PATH)/$$DIRNAME.bin ;\
|
|
|
|
printf %02x $$(( ( $$RLEN / 65536 ) % 256 )) | xxd -r -p >> $(LWS_BUILD_PATH)/$$DIRNAME.bin ;\
|
|
|
|
printf %02x $$(( ( $$RLEN / 16777216 ) % 256 )) | xxd -r -p >> $(LWS_BUILD_PATH)/$$DIRNAME.bin ;\
|
|
|
|
cat $(LWS_BUILD_PATH)/romfs.img >> $(LWS_BUILD_PATH)/$$DIRNAME.bin ; \
|
|
|
|
LEN=$$($$GNUSTAT -c %s $(LWS_BUILD_PATH)/$$DIRNAME.bin) ;\
|
2017-03-16 10:46:31 +08:00
|
|
|
UNIXTIME=$$(date +%s | tr -d '\n') ; \
|
|
|
|
echo -n -e "{\r\n \"schema\": \"lws1\",\r\n \"model\": \"$(CONFIG_LWS_MODEL_NAME)\",\r\n \"builder\": \"" > $(jbi) ;\
|
|
|
|
hostname | tr -d '\n' >> $(jbi) ;\
|
|
|
|
echo -n -e "\",\r\n \"app\": \"" >> $(jbi) ;\
|
|
|
|
echo -n $$DIRNAME >> $(jbi) ;\
|
|
|
|
echo -n -e "\",\r\n \"user\": \"" >> $(jbi) ;\
|
|
|
|
whoami | tr -d '\n' >>$(jbi) ;\
|
|
|
|
echo -n -e "\",\r\n \"git\": \"" >> $(jbi) ;\
|
|
|
|
git describe --dirty --always | tr -d '\n' >> $(jbi) ;\
|
|
|
|
echo -n -e "\",\r\n \"date\": \"" >> $(jbi) ;\
|
|
|
|
date | tr -d '\n' >> $(jbi) ;\
|
|
|
|
echo -n -e "\",\r\n \"unixtime\": \"" >> $(jbi) ;\
|
|
|
|
echo -n $$UNIXTIME >> $(jbi) ;\
|
|
|
|
echo -n -e "\",\r\n \"file\": \""$$DIRNAME-$$UNIXTIME.bin >> $(jbi) ;\
|
2017-04-04 08:46:51 +08:00
|
|
|
echo -n -e "\",\r\n \"factory\": \"$(FAC)" >> $(jbi) ;\
|
2017-03-16 10:46:31 +08:00
|
|
|
echo -n -e "\"\r\n}" >> $(jbi) ;\
|
2017-05-05 02:17:28 +08:00
|
|
|
JLEN=$$($$GNUSTAT -c %s $(jbi)) ;\
|
2017-08-19 08:14:49 +08:00
|
|
|
printf %02x $$(( $$JLEN % 256 )) | xxd -r -p >> $(LWS_BUILD_PATH)/$$DIRNAME.bin ;\
|
|
|
|
printf %02x $$(( ( $$JLEN / 256 ) % 256 )) | xxd -r -p >> $(LWS_BUILD_PATH)/$$DIRNAME.bin ;\
|
|
|
|
printf %02x $$(( ( $$JLEN / 65536 ) % 256 )) | xxd -r -p >> $(LWS_BUILD_PATH)/$$DIRNAME.bin ;\
|
|
|
|
printf %02x $$(( ( $$JLEN / 16777216 ) % 256 )) | xxd -r -p >> $(LWS_BUILD_PATH)/$$DIRNAME.bin ;\
|
|
|
|
cat $(jbi) >> $(LWS_BUILD_PATH)/$$DIRNAME.bin ;\
|
|
|
|
cp $(LWS_BUILD_PATH)/$$DIRNAME.bin $(LWS_BUILD_PATH)/pack.img ;\
|
|
|
|
LEN=$$($$GNUSTAT -c %s $(LWS_BUILD_PATH)/$$DIRNAME.bin) ;\
|
|
|
|
cp $(LWS_BUILD_PATH)/$$DIRNAME.bin $(LWS_BUILD_PATH)/$$DIRNAME-$$UNIXTIME.bin ;\
|
2017-03-16 10:46:31 +08:00
|
|
|
printf " After ROMFS + Build info: 0x%06x (%8d)\n" $$LEN $$LEN
|
|
|
|
|
|
|
|
.PHONY: manifest
|
|
|
|
manifest:
|
|
|
|
ifeq ($F,)
|
|
|
|
echo "Usage make F=<factory app dir> A=<app dir> manifest"
|
|
|
|
exit 1
|
|
|
|
endif
|
|
|
|
ifeq ($A,)
|
|
|
|
echo "Usage make F=<factory app dir> A=<app dir> manifest"
|
|
|
|
exit 1
|
|
|
|
endif
|
|
|
|
echo -n -e "{\r\n\"app\": " > build/manifest.json
|
|
|
|
cat $(A)/build/json-buildinfo >> build/manifest.json
|
|
|
|
echo -n -e ", \"factory\": " >> build/manifest.json
|
|
|
|
cat $(F)/build/json-buildinfo >> build/manifest.json
|
|
|
|
echo -n -e "\r\n}\r\n" >> build/manifest.json
|
|
|
|
|
2017-08-19 08:14:49 +08:00
|
|
|
all: $(LWS_BUILD_PATH)/pack.img
|
2017-03-16 10:46:31 +08:00
|
|
|
|
2017-08-19 08:14:49 +08:00
|
|
|
flash: $(LWS_BUILD_PATH)/pack.img
|
2017-05-11 15:02:01 +08:00
|
|
|
|
2017-08-19 08:14:49 +08:00
|
|
|
flash_ota: $(LWS_BUILD_PATH)/pack.img
|
2017-03-16 10:46:31 +08:00
|
|
|
DIRNAME=$$(basename $$(pwd) | tr -d '\n') ;\
|
|
|
|
$(IDF_PATH)/components/esptool_py/esptool/esptool.py \
|
|
|
|
--chip esp32 \
|
2017-05-14 14:55:15 +08:00
|
|
|
--port $(ESPPORT) \
|
2017-03-16 10:46:31 +08:00
|
|
|
--baud $(CONFIG_ESPTOOLPY_BAUD) \
|
2017-08-19 08:14:49 +08:00
|
|
|
write_flash 0x110000 $(LWS_BUILD_PATH)/$$DIRNAME.bin
|
2017-03-16 10:46:31 +08:00
|
|
|
|
|
|
|
erase_ota:
|
|
|
|
$(IDF_PATH)/components/esptool_py/esptool/esptool.py \
|
|
|
|
--chip esp32 \
|
2017-05-14 14:55:15 +08:00
|
|
|
--port $(ESPPORT) \
|
2017-03-16 10:46:31 +08:00
|
|
|
--baud $(CONFIG_ESPTOOLPY_BAUD) \
|
|
|
|
erase_region 0x110000 0x2f0000
|
|
|
|
|
|
|
|
|
|
|
|
export A
|
|
|
|
export F
|
|
|
|
.PHONY: upload
|
|
|
|
upload: manifest
|
|
|
|
ifeq ($F,)
|
|
|
|
echo "Usage make F=<factory app dir> A=<app dir> manifest"
|
|
|
|
exit 1
|
|
|
|
endif
|
|
|
|
ifeq ($A,)
|
|
|
|
echo "Usage make F=<factory app dir> A=<app dir> manifest"
|
|
|
|
exit 1
|
|
|
|
endif
|
|
|
|
UPL=$(CONFIG_LWS_OTA_SERVER_UPLOAD_USER)@$(CONFIG_LWS_OTA_SERVER_FQDN):$(CONFIG_LWS_OTA_SERVER_UPLOAD_PATH)/$(CONFIG_LWS_OTA_SERVER_BASE_URL)/$(CONFIG_LWS_MODEL_NAME)/ ;\
|
|
|
|
AFILE=$(A)/build/$$(cat $$A/build/json-buildinfo | grep -- \"file\"\: |cut -d' ' -f3 |cut -d'"' -f2) ;\
|
|
|
|
echo " Uploading $$AFILE to " $$UPL ;\
|
|
|
|
scp $$AFILE $$UPL ;\
|
|
|
|
FFILE=$(F)/build/$$(cat $$F/build/json-buildinfo | grep -- \"file\"\: |cut -d' ' -f3 |cut -d'"' -f2) ;\
|
|
|
|
echo " Uploading $$FFILE" ;\
|
|
|
|
scp $$FFILE $$UPL ;\
|
|
|
|
echo " Uploading manifest" ;\
|
|
|
|
scp build/manifest.json $$UPL
|