Browse Source

esp32: fix firmware upload over TCP

Fix invalid pointer during firmware upload over TCP
H. Peter Anvin 2 years ago
parent
commit
0adde6e167
5 changed files with 10 additions and 7 deletions
  1. 1 1
      esp32/Makefile
  2. 9 6
      esp32/max80/fwupdate.c
  3. BIN
      esp32/output/max80.ino.bin
  4. BIN
      fpga/output/v1.fw
  5. BIN
      fpga/output/v2.fw

+ 1 - 1
esp32/Makefile

@@ -7,7 +7,7 @@ SKETCH	      = max80
 TARGET	      = output/$(SKETCH).ino.bin
 GENFILES      = www.zip
 WWW	      = www
-PORT	     ?= /dev/ttyACM2
+PORT	     ?= /dev/ttyACM0
 
 build_defines = -DBOARD_HAS_PSRAM -I$(realpath ../common)
 

+ 9 - 6
esp32/max80/fwupdate.c

@@ -349,8 +349,10 @@ static void firmware_update_task(void *pvt)
 	spz->err = err;
 
     err = fwupdate_data_cleanup(spz);
-    if (err)
+    if (err) {
 	MSG("failed (err %d)\n", err);
+	spz->err = err;
+    }
 
 fail:
     xSemaphoreGive(fwupdate_done);
@@ -389,16 +391,17 @@ int firmware_update_start(read_func_t read_data, token_t token)
     fwupdate_spz = calloc(1, sizeof *fwupdate_spz);
     if (!fwupdate_spz)
 	goto err;
-    fwupdate_spz->err = Z_MEM_ERROR;
+
+    fwupdate_spz->err       = Z_MEM_ERROR;
+    fwupdate_spz->read_data = read_data;
+    fwupdate_spz->token     = token;
 
     fwupdate_done = xSemaphoreCreateBinary();
     if (!fwupdate_done)
 	goto err;
 
-    fwupdate_spz->read_data = read_data;
-    fwupdate_spz->token     = token;
-    if (xTaskCreate(fwupdate_task, "fwupdate",
-		    FWUPDATE_STACK, &fwupdate_spz,
+    if (xTaskCreate(firmware_update_task, "fwupdate",
+		    FWUPDATE_STACK, fwupdate_spz,
 		    FWUPDATE_PRIORITY, &fwupdate_task) != pdPASS) {
 	xSemaphoreGive(fwupdate_done);
     }

BIN
esp32/output/max80.ino.bin


BIN
fpga/output/v1.fw


BIN
fpga/output/v2.fw