|
@@ -11,7 +11,9 @@ MAX80_IP ?= max80
|
|
|
|
|
|
CURL = curl
|
|
|
PERL = perl
|
|
|
-ESPTOOL ?= esptool
|
|
|
+PYTHON = python
|
|
|
+ESPTOOL ?= esptool.py
|
|
|
+export ESPTOOL
|
|
|
|
|
|
all clean spotless :
|
|
|
$(MAKE) local.$@ $(SUBDIRS) goal=$@
|
|
@@ -71,25 +73,54 @@ program flash:
|
|
|
program-% flash-%: prefpga
|
|
|
$(MAKE) -C fpga $@
|
|
|
|
|
|
-# ESP update by USB or serial port
|
|
|
+# ESP update by USB or serial port using esptool directly
|
|
|
upload-esp:
|
|
|
$(MAKE) -C esp32 upload
|
|
|
|
|
|
-# Update via HTTP or serial port
|
|
|
ip = $(MAX80_IP)
|
|
|
+
|
|
|
+ifeq ($(PORT),)
|
|
|
+# --- Upload via HTTP ---
|
|
|
+
|
|
|
+# Generic upload for newer firmware
|
|
|
+upload:
|
|
|
+ @echo 'NOT IMPLEMENTED YET, should be:'
|
|
|
+ @echo '$(CURL) -v --data-binary @fpga/output/$(PROJECT).fw http://$(ip)/sys/fwupdate'
|
|
|
+ @exit 1
|
|
|
+
|
|
|
+# Version-specific uploads for older firmware
|
|
|
upload-v%:
|
|
|
- if [ -z '$(PORT)' ]; then \
|
|
|
- $(CURL) -v --data-binary @fpga/output/v$*.fw http://$(ip)/sys/fwupdate ; \
|
|
|
- else \
|
|
|
- $(PERL) ./esp32/flashesp.pl fpga/output/v$*.fw '$(PORT)' $(FLASHOPT); \
|
|
|
- fi
|
|
|
+ $(CURL) -v --data-binary @fpga/output/v$*.fw 'http://$(ip)/sys/fwupdate'
|
|
|
+
|
|
|
+# setver is not supported via HTTP
|
|
|
+setver-v%:
|
|
|
+ @echo 'make $@ requires PORT= to be specified'
|
|
|
+ @exit 1
|
|
|
+
|
|
|
+else
|
|
|
+# --- Upload via serial port/USB
|
|
|
|
|
|
-# Set board revision in flash
|
|
|
-WRITEFLASH = [ ! -z '$(PORT)' ] && $(ESPTOOL) --before default_reset --after hard_reset --port $(PORT) write_flash -z
|
|
|
+# Generic upload for newer firmware
|
|
|
+upload:
|
|
|
+ @echo 'NOT IMPLEMENTED YET, should be:'
|
|
|
+ @echo '$(PERL) ./tools/flashmax.pl fpga/output/$(PROJECT).fw $(PORT) $(FLASHOPT)'
|
|
|
+ @exit 1
|
|
|
+
|
|
|
+# Version-specific uploads for older firmware
|
|
|
+upload-v%:
|
|
|
+ $(PERL) ./tools/flashmax.pl fpga/output/v$*.fw '$(PORT)' $(FLASHOPT)
|
|
|
+
|
|
|
+# Write board ID/revision to flash
|
|
|
+WRITEFLASH = $(ESPTOOL) --before default_reset --after hard_reset --port '$(PORT)' write_flash -z
|
|
|
|
|
|
stamp_max80_v%.bin:
|
|
|
$(PERL) -e '$$m = "MAX80 v$*\0"; print $$m, "\xff" x (4096 - length ($$m));' > $@
|
|
|
|
|
|
+# esptool is unreliable, so retry several times with a brief break in between
|
|
|
setver-v%: stamp_max80_v%.bin
|
|
|
- if [ -z '$(PORT)' ]; then echo 'Set PORT for this command' 2>&1; exit 1; fi
|
|
|
- $(WRITEFLASH) 0 $< || sleep 1; $(WRITEFLASH) 0 $<
|
|
|
+ for i in `seq 1 5`; do \
|
|
|
+ $(WRITEFLASH) 0 $< && break; \
|
|
|
+ sleep 1; \
|
|
|
+ done
|
|
|
+
|
|
|
+endif
|