• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Прошивка через system_upgrade

name2017m

New member
Здравствуйте!

Мне необходимо прошивать esp8266 через wi-fi своими TCP-пакетами

В документации и примерах для этого используется набор функций:
  • system_upgrade
  • system_upgrade_init
  • system_upgrade_deinit
  • system_upgrade_flag_set
  • system_upgrade_flag_check
  • и т.д.

Т.е. мне приходят пакеты по TCP, которые могут содержать команду начала процесса заливки, передавать сами данные, и команду завершения заливки

На основе этого примера: ESP8266_IOT_PLATFORM/upgrade.c at master · espressif/ESP8266_IOT_PLATFORM · GitHub
сделал свою обработку:
  • сначала вызывается system_upgrade_init
  • затем system_upgrade_flag_set с флагом UPGRADE_FLAG_START
  • затем system_upgrade с любым буфером и полным размером будущей прошивки, чтобы стереть FLASH
  • затем по TCP начинают приходить пакеты с данными, при получении каждого такого пакета вызывается system_upgrade с данными и их размером
  • после всех записанных данных приходит TCP пакет с командой завершения, и вызывается system_upgrade_flag_set(UPGRADE_FLAG_FINISH);
  • и после него вызывается system_upgrade_deinit();
Но ничего не меняется, ни сразу, ни после перезагрузки - esp8266 запускается и работает с прежней прошивкой, как будто system_upgrade вообще не работал
При этом system_upgrade всегда возвращает TRUE
Что я упустил?
 
Последнее редактирование:
Сверху Снизу