• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
Что я упустил?
 
Последнее редактирование:
Сверху Снизу