ESP32 OTA: Update.begin() приводит к бесконечным перезагрузкам
Я изучаю здесь обновление прошивки OTA для ESP32. Для моего приложения я не могу использовать веб-сервер для загрузки прошивки, но я собираюсь настроить внешний сервер для предоставления FTP или других методов загрузки.
Поэтому я пытаюсь понять, как работает библиотека обновлений. Я добавил в свое приложение всего две строки кода:
#include <Update.h>
void setup()
{
Serial.begin(115200);
Serial.println(Update.begin());
...
}
но когда я запускаю этот код на своей плате ESP32, я получаю бесконечные циклы перезагрузок:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/queue.c:621 (xQueueTakeMutexRecursive)- assert failed!
abort() was called at PC 0x40089d67 on core 0
ELF file SHA256: 0000000000000000
Backtrace: 0x40088c68:0x3ffe39d0 0x40088ee5:0x3ffe39f0 0x40089d67:0x3ffe3a10 0x4011e97d:0x3ffe3a30 0x400848bc:0x3ffe3a50 0x4008436f:0x3ffe3a70 0x4011e4fd:0x3ffe3a90 0x40113432:0x3ffe3ab0 0x401134a6:0x3ffe3ad0 0x400d777c:0x3ffe3af0 0x400d3632:0x3ffe3b20 0x400d250e:0x3ffe3b40 0x400d4c82:0x3ffe3b90 0x400f5847:0x3ffe3bb0 0x40082989:0x3ffe3bd0 0x40082bb8:0x3ffe3c20 0x40079247:0x3ffe3c40 0x400792ad:0x3ffe3c70 0x400792b8:0x3ffe3ca0 0x40079465:0x3ffe3cc0 0x400806da:0x3ffe3df0 0x40007c31:0x3ffe3eb0 0x4000073d:0x3ffe3f20
Rebooting...
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/queue.c:621 (xQueueTakeMutexRecursive)- assert failed!
abort() was called at PC 0x40089d67 on core 0
ELF file SHA256: 0000000000000000
Backtrace: 0x40088c68:0x3ffe39d0 0x40088ee5:0x3ffe39f0 0x40089d67:0x3ffe3a10 0x4011e97d:0x3ffe3a30 0x400848bc:0x3ffe3a50 0x4008436f:0x3ffe3a70 0x4011e4fd:0x3ffe3a90 0x40113432:0x3ffe3ab0 0x401134a6:0x3ffe3ad0 0x400d777c:0x3ffe3af0 0x400d3632:0x3ffe3b20 0x400d250e:0x3ffe3b40 0x400d4c82:0x3ffe3b90 0x400f5847:0x3ffe3bb0 0x40082989:0x3ffe3bd0 0x40082bb8:0x3ffe3c20 0x40079247:0x3ffe3c40 0x400792ad:0x3ffe3c70 0x400792b8:0x3ffe3ca0 0x40079465:0x3ffe3cc0 0x400806da:0x3ffe3df0 0x40007c31:0x3ffe3eb0 0x4000073d:0x3ffe3f20
Rebooting...
Глядя на код функции begin ()
, он должен вернуть сообщение об ошибке, если что-то пойдет не так.
Есть ли что-нибудь, что я пропустил перед использованием этой функции?
@Mark, 👍0
Обсуждение0
Смотрите также:
- Почему OTA не работает с платой ESP32-CAM Ai-Thinker?
- Esp32: совместим ли OTA с FREERTOS
- Обновление ESP32 OTA через MQTT с помощью "update.h"
- ESP32, ArduinoOTA.h, LittleFS.h и загрузка файлов данных по OTA
- Обновление OTA для ESP32 в Arduino ide от другой новой разработки
- Попытка изменить расположение прошивок ESP8266 по беспроводной сети.
- Модуль ESP32 DEV с фиксированным IP-адресом и OTA
- ESP32 OTA с порталом захвата SPIFFS
'Update.begin()` следует запускать при запуске обновления, а не в начале скетча..., @Majenko
Я знаю это, но комментарии в заголовке говорят: "Позвоните, чтобы проверить пространство, необходимое для обновления. Вернет false, если не хватает места"., @Mark
Затем вы должны передать ему размер обновления, который вы не можете знать, пока не начнете обновление. Вы должны разобрать исходный код библиотеки ArduinoOTA, чтобы увидеть, как он это делает., @Majenko
@Majenko, я извиняюсь, но объявление функции:
bool begin(size_t size=UPDATE_SIZE_UNKNOWN, int command = U_FLASH, int ledPin = -1, uint8_t ledOn = LOW, const char *label = NULL);
таким образом, значениеsize
определяется по умолчанию, а также пример ArduinoOTA использует то же самое значениеUPDATE_SIZE_UNKNOWN
при вызове этой функции., @Mark