You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Power off at the ending of ESPhttpUpdate.update, exception occurs for later power on.
Note that works fine if no power off during ESPhttpUpdate.update.
void loop() {
// wait for WiFi connection
if ((WiFiMulti.run() == WL_CONNECTED)) {
WiFiClient client;
// The line below is optional. It can be used to blink the LED on the board during flashing
// The LED will be on during download of one buffer of data from the network. The LED will
// be off during writing that buffer to flash
// On a good connection the LED should flash regularly. On a bad connection the LED will be
// on much longer than it will be off. Other pins than LED_BUILTIN may be used. The second
// value is used to put the LED on. If the LED is on with HIGH, that value should be passed
ESPhttpUpdate.setLedPin(LED_BUILTIN, LOW);
// Add optional callback notifiers
ESPhttpUpdate.onStart(update_started);
ESPhttpUpdate.onEnd(update_finished);
ESPhttpUpdate.onProgress(update_progress);
ESPhttpUpdate.onError(update_error);
t_httpUpdate_return ret = ESPhttpUpdate.update(client, "http://apps.95wd.com.cn/httpUpdate0.ino.generic.bin");
// Or:
//t_httpUpdate_return ret = ESPhttpUpdate.update(client, "server", 80, "file.bin");
switch (ret) {
case HTTP_UPDATE_FAILED:
Serial.printf("HTTP_UPDATE_FAILD Error (%d): %s\n", ESPhttpUpdate.getLastError(), ESPhttpUpdate.getLastErrorString().c_str());
break;
case HTTP_UPDATE_NO_UPDATES:
Serial.println("HTTP_UPDATE_NO_UPDATES");
break;
case HTTP_UPDATE_OK:
Serial.println("HTTP_UPDATE_OK");
break;
}
Decoding stack results
0x40211c90: UpdaterClass::printError(Print&) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\Updater.cpp line 561
0x40211c84: UpdaterClass::printError(Print&) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\Updater.cpp line 559
0x40212019: String::changeBuffer(unsigned int) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\WString.cpp line 207
0x40100d08: umm_free_core(umm_heap_context_t*, void*) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\umm_malloc\umm_malloc.cpp line 565
0x40100cd3: umm_free_core(umm_heap_context_t*, void*) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\umm_malloc\umm_malloc.cpp line 553
0x40100f6e: umm_init_common(size_t, void*, size_t, bool) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\umm_malloc\umm_malloc.cpp line 438
0x40100f60: umm_init_common(size_t, void*, size_t, bool) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\umm_malloc\umm_malloc.cpp line 428
0x40211c90: UpdaterClass::printError(Print&) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\Updater.cpp line 561
0x40211c84: UpdaterClass::printError(Print&) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\Updater.cpp line 559
0x40212019: String::changeBuffer(unsigned int) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\WString.cpp line 207
0x4021226d: String::String(unsigned int, unsigned char) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\WString.cpp line 78
0x402156fd: DhcpServer::parse_options(unsigned char*, short) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\LwipDhcpServer.cpp line 790 ESPhttpUpdate.update升级快完成时掉电,系统异常.pdf
The text was updated successfully, but these errors were encountered:
Finally I guess I find the root cause, because power off happens at ACTION_COPY_RAW in Updater.cpp.
In this case, the copy failed & the target image broken; my question is why dont' have master/slave sketches support?
Basic Infos
Platform
Settings in IDE
Problem Description
Power off at the ending of ESPhttpUpdate.update, exception occurs for later power on.
Note that works fine if no power off during ESPhttpUpdate.update.
MCVE Sketch
/**
httpUpdate.ino
*/
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266HTTPClient.h>
#include <ESP8266httpUpdate.h>
#ifndef APSSID
#define APSSID "GL-H6-2"
#define APPSK "GlH62401"
#endif
#define ATOMIC_FS_UPDATE
ESP8266WiFiMulti WiFiMulti;
void setup() {
Serial.begin(74880);
Serial.setDebugOutput(true);
Serial.println();
Serial.println();
Serial.println();
for (uint8_t t = 4; t > 0; t--) {
Serial.printf("[SETUP] WAIT %d...\n", t);
Serial.flush();
delay(1000);
}
WiFi.mode(WIFI_STA);
WiFiMulti.addAP(APSSID, APPSK);
}
void update_started() {
Serial.println("CALLBACK: HTTP update process started");
}
void update_finished() {
Serial.println("CALLBACK: HTTP update process finished");
}
void update_progress(int cur, int total) {
Serial.printf("CALLBACK: HTTP update process at %d of %d bytes...\n", cur, total);
}
void update_error(int err) {
Serial.printf("CALLBACK: HTTP update fatal error code %d\n", err);
}
void loop() {
// wait for WiFi connection
if ((WiFiMulti.run() == WL_CONNECTED)) {
WiFiClient client;
}
}
Debug Messages
=========== DECODED ===============
Exception 0: Illegal instruction
PC: 0x4024dd50
EXCVADDR: 0x00000000
Decoding stack results
0x40211c90: UpdaterClass::printError(Print&) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\Updater.cpp line 561
0x40211c84: UpdaterClass::printError(Print&) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\Updater.cpp line 559
0x40212019: String::changeBuffer(unsigned int) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\WString.cpp line 207
0x40100d08: umm_free_core(umm_heap_context_t*, void*) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\umm_malloc\umm_malloc.cpp line 565
0x40100cd3: umm_free_core(umm_heap_context_t*, void*) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\umm_malloc\umm_malloc.cpp line 553
0x40100f6e: umm_init_common(size_t, void*, size_t, bool) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\umm_malloc\umm_malloc.cpp line 438
0x40100f60: umm_init_common(size_t, void*, size_t, bool) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\umm_malloc\umm_malloc.cpp line 428
0x40211c90: UpdaterClass::printError(Print&) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\Updater.cpp line 561
0x40211c84: UpdaterClass::printError(Print&) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\Updater.cpp line 559
0x40212019: String::changeBuffer(unsigned int) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\WString.cpp line 207
0x4021226d: String::String(unsigned int, unsigned char) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\WString.cpp line 78
0x402156fd: DhcpServer::parse_options(unsigned char*, short) at C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.0\cores\esp8266\LwipDhcpServer.cpp line 790
ESPhttpUpdate.update升级快完成时掉电,系统异常.pdf
The text was updated successfully, but these errors were encountered: