Перейти к содержанию
    

Нужен совет по процедуре обновления ПО через Ethernet

Нужен совет по процедуре обновления ПО через Ethernet. 

Есть опыт написания бутлоадеров через UART и SD карту.

Теперь нужно написать бутлоадер для слепого датчика через Ethernet.  Есть ограничение на объем бл - надо уложиться в 32к флешки и 64 килобайта ОЗУ. Бинарник может быть до 128кб. Поэтому буду организовывать прием бинарных блоков поверх UDP. Напишу специальное консольное приложение для программирования. Остается вопрос - как можно сделать самый простой способ получения IP адреса?

Или уйти для перепрограммирования на уровень ip raw (arp)пакетов? Вообще уйти от уровня IP?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

56 minutes ago, Михась said:

как можно сделать самый простой способ получения IP адреса?

Насколько я знаю по стандарту доступны два способа: статическое и динамическое получение адреса. Но для UDP всё-равно нужен IP-стек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я то хотел бы на IP/UDP остановиться. А если обмениваться broadcast UDP пакетами, на определенные порты? А в пакете серийный номер датчика? 

Так то основное ПО будет получать IP по DHCP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Михась said:

Я то хотел бы на IP/UDP остановиться.

Я Вам детально вряд ли помогу, т.к. мой опыт ограничивается использованием готовых стеков, например LwIP. Зато там есть и DHCP для динамического конфигурирования IP-адреса. Также этот стек очень хорошо обсужден в интернетах, следовательно у Вас уже есть техподдержка. Сколько памяти занимает - не подскажу. Зависит от конфигурации, и я не был ограничен данным размером. Попробуйте. Может оказаться, что готовый стек применить более перспективно!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Lwip будет использоваться однозначно. Интересен практический опыт реализации бутлоадера для безнтерфейсных приборов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Михась сказал:

Остается вопрос - как можно сделать самый простой способ получения IP адреса?

DHCP вроде довольно простой протокол. Особенно если ограничиться только получением IP через него. Другой вопрос - как вы потом будете узнавать полученный устройством IP?

18 минут назад, Михась сказал:

Lwip будет использоваться однозначно.

Тогда однозначно - под большим вопросом возможность уложиться в желаемые 32 КБ размера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если бутлоадер будет заниматься только своими делами (только обновлять прошивку, ранее загруженную в устройство рабочей прошивкой), а не ненужными ему функциями загрузки прошивки, то и проблем не будет ни с размером ни со способами получения/определения IP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

До этого я делал так - на SD карту через eth/lwip/tftp размещал шифрованный бинарник. Бутлоадер (размер 19 кб) уже прошивал найденный на карте бинарник.

В самом плохом случае пользователь мог сам скопировать на карту бинарник, если основное приложение слетело в дребезги.

Сейчас такого хранилища нет, специально закладывать неохота. 

Изменено пользователем Михась

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вот еще вариант- пусть бут будет клиентом и всегда при старте опрашивает некий "сервер обновлений" по фиксированному адресу и порту?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Михась said:

А вот еще вариант- пусть бут будет клиентом и всегда при старте опрашивает некий "сервер обновлений" по фиксированному адресу и порту?

Используйте TFTP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/6/2023 at 8:25 AM, jcxz said:

DHCP вроде довольно простой протокол. Особенно если ограничиться только получением IP через него. Другой вопрос - как вы потом будете узнавать полученный устройством IP?

Тогда однозначно - под большим вопросом возможность уложиться в желаемые 32 КБ размера.

У меня на STM32F4xx загрузчик на LwIP, UDP, статический IP, HAL - адрес занимает порядка 36 кБайт.

Правда у меня еще используется xprintf от http://elm-chan.org  Если его выкинуть и выкинуть UART, то можно еще пару кило сэкономить.

Если выкинуть HAL и переписать на "регистры" можно еще существенно сэкономить.

On 6/6/2023 at 9:10 AM, jcxz said:

Если бутлоадер будет заниматься только своими делами (только обновлять прошивку, ранее загруженную в устройство рабочей прошивкой), а не ненужными ему функциями загрузки прошивки, то и проблем не будет ни с размером ни со способами получения/определения IP.

Это при условии, если есть место где хранить эту обновленную прошивку. В вашем случае, если не использовать внешний носитель, половину доступной памяти МК надо выделить под

место для временного хранения обновления. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

42 минуты назад, dimka76 сказал:

Это при условии, если есть место где хранить эту обновленную прошивку.

В устройстве есть Ethernet. С чипом физики, трансформатором и т.п. И при этом пожалели денег на копеечную флешку? Вот уж точно - экономия на пуговицах...  :unknw:

PS: Даже если чипа физики нет, а используется встроенная, то тогда значит МК - не из дешёвых. Один фиг.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, Михась сказал:

Я то хотел бы на IP/UDP остановиться.

 

7 часов назад, Михась сказал:

Lwip будет использоваться однозначно.

И зачем тянуть эту муть, размером со слона, с динамическими аллокаторами и пр ??? Есть куда более простые и маленькие по памяти стеки...

6 часов назад, Михась сказал:

Сейчас такого хранилища нет, специально закладывать неохота. 

Вот и сделали себе попадос))

1 час назад, jcxz сказал:

то тогда значит МК - не из дешёвых. Один фиг.

Не факт, вот тот же v3s, с которым сегодня возился, стоит копейку, со встроенной физикой, т.ч. это не показатель...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 6/6/2023 at 3:33 PM, mantech said:

И зачем тянуть эту муть, размером со слона, с динамическими аллокаторами и пр ???

Он вполне в 30 кБ поместится 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...