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

Вопрос Прошивка Atmega через ESP (http)

Anvil

New member
Здравствуйте. Есть устройство atmega+esp. Хотелось бы организовать обновление прошивок по сети. Скажем я выложил файлик .hex на сервер, а оно обновилось.
На atmega можно поставить bootloader и прошивать по uart. Как бы научить esp скачивать .hex и отправлять его в uart. Не нашел нечего подобного. И заодно обновлять сам esp.
Буду признателен за любую наводку и информацию.
 

sboganov

Member

Anvil

New member
Эти ссылки видел. Не то, но может натолкнет на мысль как сделать то что я запланировал.
Мне надо чтоб оно само стянуло и прошило. А не прошивать с компа.
Теоретически все просто
1) Скачать файл и положить в память ESP.
2) Инициализировать Atmega для прошивки.
3) Слать данные из hex файла в UART.
4) Перезагрузить.

ESP вроде тоже может сама себя обновить.
 

tretyakov_sa

Moderator
Команда форума
Эти ссылки видел. Не то, но может натолкнет на мысль как сделать то что я запланировал.
Мне надо чтоб оно само стянуло и прошило. А не прошивать с компа.
Теоретически все просто
1) Скачать файл и положить в память ESP.
2) Инициализировать Atmega для прошивки.
3) Слать данные из hex файла в UART.
4) Перезагрузить.

ESP вроде тоже может сама себя обновить.
Для этого нужно знать протокол обмена загрузчика который будет в вашей AVR. Дальше все просто.
 

Anvil

New member
Для этого нужно знать протокол обмена загрузчика который будет в вашей AVR. Дальше все просто.
Для кого просто, а для кого не очень :)
Загрузчик наверно не имеет значение. Надо отправить hex по uart.
Пока остановился на "Martin Thomas’a «AVRPROG compatible boot-loader»"
Опсаны:
_Bootloader для ATmega32 | Skab in Sky
_AVR. Учебный Курс. Использование Bootloader’а | Электроника для всех

Суть в том что посылаем определенные символ в UART , а следом hex. Который предварительно скачали.
 

tretyakov_sa

Moderator
Команда форума
Для кого просто, а для кого не очень :)
Загрузчик наверно не имеет значение. Надо отправить hex по uart.
Пока остановился на "Martin Thomas’a «AVRPROG compatible boot-loader»"
Опсаны:
_Bootloader для ATmega32 | Skab in Sky
_AVR. Учебный Курс. Использование Bootloader’а | Электроника для всех
Суть в том что посылаем определенные символ в UART , а следом hex. Который предварительно скачали.
Так вот как там на самом деле идет обмен. Какой символ туда послать. После того как символ послали будет ли ответ из UART? Hex файл посылать какими порциями. Что будет отвечать при этом AVR? Как AVR узнает что загрузка завершена и можно сделать рестарт. Ответы на эти вопросы и есть описание протокола обмена Bootloader.
И без него никак. Либо найти описание в англоязычном интернет. Либо ковырять код загрузчика либо ловить реальный обмен по UART между портами UART - COM. На русском языке мне найти не удалось.
Это самое сложное. Все остальное действительно просто.
 

Anvil

New member
@tretyakov_sa
Посылаем символ S (это как пример)
А потом шлем hex в UART. (Для меня вот это пона не понятно и самое сложное)
Все что он принял он запишет.
Есть примеры как:
Скачать файл с сети положить в память.
Отправить этот файл по UART.
?
 

Anvil

New member
Esp-link заливает ведь нормально. Смотри его исходники
Как он заливает? я нашел там заливку с компа. Если правильно понял, то идет проброс UARTа. Это немного не то что мне надо.
Вроде есть упоминание заливки через браузер. Но явно в доках не увидел. Надо ставить на плату и смотреть.
 

Anvil

New member
@086dx66 Что то я тут не увидел того что поможет. На какой минуте и что из того что меня интересует.
Вижу у него Ардуино IDE, вижу подключенную по USB плату.
Не увидел ответа на вопрос как сделать так чтоб ESP скачала прошивку и обновили Atmega, а за одно и себя.
 

CodeNameHawk

Moderator
Команда форума
А что вы уже сами написали ну или что нашли, или хотите чтобы кто то за вас написал?
Не увидел ответа на вопрос как сделать так чтоб ESP скачала прошивку и обновили Atmega, а за одно и себя.
ESP самопрошивается при помощи Ota.
В Atmega заливаете загрузчик ( который тоже надо написать или найти) и при его помощи, через UART загружаете прошивку.
Как загрузить файл в ESP есть в примере FSWebServer ( который найдете в примерах для ESP8266 -> ESP8266WebServer).
 

Anvil

New member
@CodeNameHawk
Я не хочу чтобы за меня написали. Я спросил есть ли какие примеры по тому что мне требуется. Расписал конкретно что не могу сделать и чего не нашел как делать.
Вот конкретно ваш ответ наверно самый полезный для меня.
Arduino/WebUpdate.ino at master · esp8266/Arduino · GitHub
Вроде не сложно выглядит. Попробую сразу с arduino.
Update.write(upload.buf, upload.currentSize)
Тут пример что берем из буфера.
Нашел там еще ESP8266HTTPUpdateServer
Получается можно сделать что то типа Serial.write(myFileAtmegaHex.read()); для обновления Atmega и Update.write(myFileESPHex.read(), upload.currentSize)

Спасибо огромное. Уже есть с чего начать. Взгляну в сторону Arduino для ESP, может и на атмеге тоже заюзаю. Раньше как то обходил ее стороной, на C++ с родной SDK возился.
 

086dx66

Member
Ну вот как доделаешь -выкладывай
Я через esp-link шью меня пока устраивает
 

Anvil

New member
@086dx66
Ок, выложу куски как доделаю. у нас разные подходы. Как вы выше написали, вы шьете, а мне надо чтоб не я, а ESP. Все обновились увидев новую прошивку
 

vovksextra

New member
Здравствуйте. Есть устройство atmega+esp. Хотелось бы организовать обновление прошивок по сети. Скажем я выложил файлик .hex на сервер, а оно обновилось.
На atmega можно поставить bootloader и прошивать по uart. Как бы научить esp скачивать .hex и отправлять его в uart. Не нашел нечего подобного. И заодно обновлять сам esp.
Буду признателен за любую наводку и информацию.
Если актуально. Тоже понадобилось обновлять Atmeg-у по воздуху. Прошил ESP01 прошивкой ESP-LINK. К меге подключил только TX и RX. Не смог подобрать хороший загрузчик и софт. По воздуху терялись пакеты. Пришлось сделать свой загрузчик и написать утилитку. Работает очень стабильно. Могу подготовить полную статью. Подскажите где лучше все сделать? Загрузчик писал на Eclipse + последний тулчейн от атмела, проверял на тулчейне от WINAVR, тоже собирается все без ошибок. Утилитку сделал консольную под WIN. У меня в проекте используется ATmega32, но можно легко пересобрать под любую мегу. Размер загрузчика <1к.

 
Последнее редактирование:

ivanpost67

New member
Кто нибудь реализовал прошивку Атмеги не через виртуальный Uart + Esp-Link, а через заявленный HTTP-POST метод? В больших прошивках, когда далеко - очень много сбоев при передаче... Конечно, предложенный здесь метод с бутлоадером еще круче, но что-то тишина в теме...
 
Сверху Снизу