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

Прошивка ESP Arduino через GPRS

switch07

New member
Добрый день!
Реализую один проект на ESP, по сути сам ESP там и не нужен, хватит и меги, но вот захотелось больше места. Суть в том что будет несколько сотен устройств, в каждом из них будет по ESP8266 и GSM модуль. Вайфай тут опциональный и больше для настройки какой-то. Основная работа будет через GSM модуль. Открывается TCP коннект и пошел обмен JSONами. А может быть все будет на MQTT, пока не решил. В общем суть такая: нужно иметь возможность обновлять прошивку централизованно. Я искал информацию и ничего толкового не нашел. Может кто-то может объяснить общие принципы как это делается?

Как я предполагаю: по tcp соединению в бинарном виде скачивается прошивка и образ spifs, куда-то помещается, потом оттуда записывается во флеш. Но что-то мне подсказывает что свободного места на той же самой флешке должно быть как минимум столько же, сколько занимает прошивка.

В общем подскажите в какую сторону идти, может быть есть примеры
 

switch07

New member
Да как бы не читал, но вряд ли пойму ;)
RTFM конечно сильный аргумент, но все же жду помощи человеков ;)
 

switch07

New member
нет уж лучше вы к нам.
спрашивайте конкретно, а не потому что лень читать.
уважаемый, вы уже помогли отсылкой к китайской документации, если больше помочь нечем то не нужно обвинять меня в лени. Проходите мимо, я подожду может кто-то другой сподобится помочь советом.
 

Юрий Ботов

Moderator
Команда форума
Мне кажется зря вы ополчились на nikolz. Действительно, если речь идет о 8266 то вам надо посмотреть пример для Ардуино 8266: BasicOTA и поискать по слову ОТА по этому форуму. Информации масса.
 

Сергей_Ф

Moderator
Команда форума
@switch07 помимо OTA, есть ещё httpUpdate. Также есть в примерах АрдуиноИДЕ. Всё на некитайском. Читайте, гуглите, спрашивайте.
 

switch07

New member
я хотел общие принципы узнать, а не подробно как это делается. Из исходников это понять намного труднее. Все равно что слона разглядывать через микроскоп. Зная общие принципы понять исходники намного проще.
 

CodeNameHawk

Moderator
Команда форума
в бинарном виде скачивается прошивка и образ spifs, куда-то помещается, потом оттуда записывается во флеш. Но что-то мне подсказывает что свободного места на той же самой флешке должно быть как минимум столько же, сколько занимает прошивка.
Сперва обновляется прошивка, потом заливается образ spifs или если хотите отдельные файлы.
Вам в принципе подсказали, что есть несколько методов ОТА, httpUpdate и если не ошибаюсь есп может обновить прошивку с сервера.
Ваши предположения о прошивке оказались правильными, поэтому вас отослали к исходникам, чего нервничать то?
 

nikolz

Well-known member
Добрый день!
Реализую один проект на ESP, по сути сам ESP там и не нужен, хватит и меги, но вот захотелось больше места. Суть в том что будет несколько сотен устройств, в каждом из них будет по ESP8266 и GSM модуль. Вайфай тут опциональный и больше для настройки какой-то. Основная работа будет через GSM модуль. Открывается TCP коннект и пошел обмен JSONами. А может быть все будет на MQTT, пока не решил. В общем суть такая: нужно иметь возможность обновлять прошивку централизованно. Я искал информацию и ничего толкового не нашел. Может кто-то может объяснить общие принципы как это делается?

Как я предполагаю: по tcp соединению в бинарном виде скачивается прошивка и образ spifs, куда-то помещается, потом оттуда записывается во флеш. Но что-то мне подсказывает что свободного места на той же самой флешке должно быть как минимум столько же, сколько занимает прошивка.

В общем подскажите в какую сторону идти, может быть есть примеры
Объясняю общие принципы.
Флеш ESP разделяется на несколько частей
для пользовательской прошивки выделяется не менее двух областей
В текущем варианте исполняется прошивка из одной из областей
если надо обновить то либо переключаете на другую область
либо сначала пишите туда с сервера или с любого другого источника новую прошивку
а потом переходите на ее исполнение
В SDK для исполнения подобных действий есть функции
Для загрузки прошивок есть загрузчики которые сидят в других областях памяти
Две области используется для возможности перезапустить если произошел сбой при загрузке
Более подробнее о пользовательских областях и алгоритме прошивки по воздуху можно прочитать в документации на сайте разработчика
-----
Примерно так
 

switch07

New member
В общем частично разобрался, еще не пробовал.
нашел хороший ман по стандартным функциям ядра ESP8266 для ардуино, кстати написал его наш соотечественник, может и на русском есть
https://media.readthedocs.org/pdf/arduino-esp8266/2.4.0/arduino-esp8266.pdf
в ядре есть класс updater, которым пользуется httpUpdate, там все реализовано. Начинаешь прием, класс резервирует место, потом пишет поток байтов куда надо.
 
Сверху Снизу