самоперепрошивание ардуинины

kolobokspb
Offline
Зарегистрирован: 30.05.2014

Приветствую.

Есть много устройств на ардуининах и стоят они у заказчика на объёктах. Часть устройст находятся в таких местах, что добраться до них это ещё тот квест. Устройства кастомизированные и иногда приходится обновлять на них прошивки. Боль. У каждого из этих устройств есть на борту Lan и свой протокол общения с ПК. На текущий момент уже невозможно ничего аппаратно передалать.

1)изменить бутлоадер для возможности писать в flash (там где лежит основная прошивка, но рядом)

2)принять эту прошивку, через лан и записать в flash.

3)перезагрузиться перейдя по нулевому(?) адресу.

Возможно ли?

 

sadman41
Offline
Зарегистрирован: 19.10.2016

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

Сумеете такой бутлоадер написать - ваше желание осуществится. Я пока не видал таких на AVR-ардуинах. ESP через OTA обновляется...

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Не совсем так, но возможно. Где-то уже обсуждался загрузчик для прошивки из SD-карт ридера. Возможно копать надо в этом направлении: приняли прошивку - залили её на флешку в карт-ридере, с неё перепрошили МК "спец" загрузчиком. Он при этом уже должен быть "в верхней области", заранее. Поищите, может на гитхабе что уже и есть подобное. Тут помнится было только обсуждение.. даже собирался тоже заняться этим вопросом, но "руки так и не дошли".

mixail844
Offline
Зарегистрирован: 30.04.2012

Зависит от нескольких факторов, в вашем посте не достаточно информации для того что бы полноценно ответить.
Какой протокол отвечающий за сеть? Какое железо отвечающие за сеть, как соединён с ардуино?

mixail844
Offline
Зарегистрирован: 30.04.2012

kolobokspb пишет:

Приветствую.

Есть много устройств на ардуининах и стоят они у заказчика на объёктах. Часть устройст находятся в таких местах, что добраться до них это ещё тот квест. Устройства кастомизированные и иногда приходится обновлять на них прошивки. Боль. У каждого из этих устройств есть на борту Lan и свой протокол общения с ПК. На текущий момент уже невозможно ничего аппаратно передалать.

1)изменить бутлоадер для возможности писать в flash (там где лежит основная прошивка, но рядом)

2)принять эту прошивку, через лан и записать в flash.

3)перезагрузиться перейдя по нулевому(?) адресу.

Возможно ли?

 

Еще раз перечитал ваш пост, если я правильно понял, (не имея физического доступа к контроллеру) вы хотите из под основной прошивки перепрошить бутлоадер(Ардуино) ,принимая пакеты по сети, затем что бы он(новый бутлоадер) в будущем по сети мог перепрошивать основную прошивку?

kolobokspb
Offline
Зарегистрирован: 30.05.2014

1) Свой кастомный протокол (по UDP), но штука в том, что места для прошивку в ОЗУ не хватит и придется писать частями в flash собирая полностью прошивку из кусков.

2)соединён по SPI c чипом w5500. Да, есть в инете вариант писать прошивку, через эту комбинацию, но так поступать не очень хочется. Дополнительный софт устанавливать на стороне клиета не желательно. 

3)Есть уже ПО на стороне ПК, которое общается с этими железками. Желательно ему скормить новую прошивку, которую он частями передаст в ардуинину, а та уже увидит, что прошивка новая приехала и себе её поставит.

kolobokspb
Offline
Зарегистрирован: 30.05.2014

mixail844 пишет:
kolobokspb пишет:

Приветствую.

Есть много устройств на ардуининах и стоят они у заказчика на объёктах. Часть устройст находятся в таких местах, что добраться до них это ещё тот квест. Устройства кастомизированные и иногда приходится обновлять на них прошивки. Боль. У каждого из этих устройств есть на борту Lan и свой протокол общения с ПК. На текущий момент уже невозможно ничего аппаратно передалать.

1)изменить бутлоадер для возможности писать в flash (там где лежит основная прошивка, но рядом)

2)принять эту прошивку, через лан и записать в flash.

3)перезагрузиться перейдя по нулевому(?) адресу.

Возможно ли?

 

Еще раз перечитал ваш пост, если я правильно понял, (не имея физического доступа к контроллеру) вы хотите из под основной прошивки перепрошить бутлоадер(Ардуино) ,принимая пакеты по сети, затем что бы он(новый бутлоадер) в будущем по сети мог перепрошивать основную прошивку?

Прошить я могу. Сейчас часть устройств находится в моём городе (хоть и доступ к ним затруднён), я их могу прошивать, но скоро, на новом объёкте (в другом городе), физического доступа к ним не будет. И подготовиться к этому хочется заранее.

nik182
Offline
Зарегистрирован: 04.05.2015

Слова ардуина - игрушка для хоби - и объект в другом городе звучат сюрреалистично в одной строке... 

kolobokspb
Offline
Зарегистрирован: 30.05.2014

nik182 пишет:

Слова ардуина - игрушка для хоби - и объект в другом городе звучат сюрреалистично в одной строке... 

В промышленных решениях кремний в контроллерах другой? Стеклотекстолит девственницы в недрах мордора делают? 

Единственное с чем действительно сталкивался - плохо помытые платы, которые через некоторое время начинают глючить. Теперь всегда мою платы в ультрозвуковой ванне вместе с изопропиловым спиртом и покрываю лаком. Полёт нормальный.

mixail844
Offline
Зарегистрирован: 30.04.2012

kolobokspb пишет:

1) Свой кастомный протокол (по UDP), но штука в том, что места для прошивку в ОЗУ не хватит и придется писать частями в flash собирая полностью прошивку из кусков.

2)соединён по SPI c чипом w5500. Да, есть в инете вариант писать прошивку, через эту комбинацию, но так поступать не очень хочется. Дополнительный софт устанавливать на стороне клиета не желательно. 

3)Есть уже ПО на стороне ПК, которое общается с этими железками. Желательно ему скормить новую прошивку, которую он частями передаст в ардуинину, а та уже увидит, что прошивка новая приехала и себе её поставит.

То есть, что бы было все ясно, у вас будет физический доступ к контроллерам, в т.ч для того что бы их перепрошить и вы хотите добавить функционал удалённого обновления для будущих версий основной прошивки?
Бутлоадер, это по сути самостоятельная прошивка, которая сидить во флеш памяти(в другой области) как и основная прошивка. Просто после того как бутлоадер "отрабатывает" - обновляет основную прошивку или нет, он передаёт управление основной прошивке
Да это возможно, но надо учесть "пару ньансов" :

-в будущую основную прошивку, в сетевой протокол надо будет добавить команду "есть новая версия" для того что бы основная прошивка передала управление бутлоадеру.(тут несколько вариантов)
-бутлоадер должен, в себе реализовать ваш протокол (хотябы частично, на уровне запросить/принять/проверить целостность пакета(а сам протокол "сидит" над socket.h/socket.c который "сидит" над W5500.h/w5550.c драйверами). Так же поскольку протокол UDP, то и черёдность, и целостность принимаемых данных на ответственности бутлоадера).
-в W5500 16 KB оперативки в буферах приёма, так что можно пользоваться. (емнип в atmega328p всего 32KB flash)
-Далее, бутлоадер "стучиться на сервер", запрашивает прошивку и сервер ему выдаёт.. Тоже по идее на сервере должен быть протокол который будет понимать что от него "хочет" бутлоадер, который будет выдавать пакеты только если предыдущие дошли и прошлись успешно(в случае UDP).

Бутлоадер будет делать unlock прошиваемым областям памяти и "шить" попакетно.. То есть в бутлоадере должен быть реализован интерфейс доступа ко внутренней flash памяти контроллера.

-смотреть как пишутся бутлоадеры(в частности как производиться доступ к flash памяти) и как переносится таблица прерываний основной программы, в зависимости от размера бутлоадера(я не в курсе, в atmega328p просто линейно или секторно или ещё как)

И ещё есть вариант, но я его видел когда всколзь читал datasheet на atmega328p, есть такая фишка read while write.. Не читал, не знаю.. Но это тоже может быть вариантом к "самопереписи" прошивки.

a5021
Offline
Зарегистрирован: 07.07.2013

kolobokspb пишет:
В промышленных решениях кремний в контроллерах другой? Стеклотекстолит девственницы в недрах мордора делают?

К кремнию и текстолиту претезний, как раз и нет. А вот железные контакты разъемов с покрытием "под золото", которые китайцы запаивают в ардуины -- это такое отложенное харакири.