реклама на сайте
подробности

 
 
> Обновление прошивки через эзернет, Как сделать удобнее для пользователя, какой протокол?
Сергей Борщ
сообщение Aug 26 2015, 09:25
Сообщение #1


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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

Делаю устройство, у которого основным каналом общения с пользователем будет эзернет. Не могу определиться, как лучше сделать обновление программы в нем. В устройстве есть еще RS-485, CAN, можно даже подцепиться к UART, но подключение компа к этим интерфейсам для обновления прошивки требует каких-то специальных переходников. В моем же случае устройство берет в руки обычный пользователь, у которого никаких переходников нет да и вообще не хотелось бы для обновления делать какие-то дополнительные подключения. Считаем, что устройство установлено в месте, доступ к которому затруднен.
В предельном случае пользователь берет в руки устройство, в котором прошит только загрузчик, т.е. приложение в процессе обновления может и не участвовать (чуть ниже распишу). Оно может сохранить где-то свои сетевые настройки, при отсутствии которых загрузчик берет какой-то статический адрес по умолчанию, скажем 192.168.3.2 и я могу научить пользователя настроить свой комп для связи с этим адресом. А что дальше? Как красивее и удобнее организовать сам процесс обновления? Я делал множество устройств с обновлением через UART, RS-485 и USB (VCP), там у меня все давно отработано, но мне никогда не приходилось до этого делать обновления по эзернету. Вся имеющаяся у меня информация об обновлении через эзернет - это слухи с форумов. Поэтому надеюсь, что более опытные в этом вопросе коллеги направят меня в сторону нужного решения.

Начну с того, чего я не хочу:
1) я не хочу чтобы это устройство лазило куда-то за обновлениями само. Во-первых потому, что у меня нет сайта, куда я мог бы выкладывать обновления и я не имею желания такой сайт делать, поддерживать и содержать. Во-вторых, устройство может находиться в локальной сети не имеющей выхода в интернет. В-третьих - человек должен сам решать когда и, главное, на какую версию обновляться.
2) я не хочу, чтобы пользователю для обновления нужно было на свой компьютер устанавливать какой-то дополнительный сервер или программу-клиента, потому что неизвестно, какая ОС стоит у пользователя и найдется ли бесплатная программа под эту ОС. Тем более не хотелось бы писать никакую программу для компьютерной стороны. У всех есть браузер и хотелось бы ограничиться его возможностями.

Теперь чего хочу:
1) все это должно уместиться в первые сектора STM32F4xx, максимум 48К, поэтому полноценный сайт с апачем или полноценный ФТП-сервер развернуть там не удастся. Хотелось бы, чтобы пользователь попадал на страничку "бла-бла-бла, текущая версия такая-то, нажмите эту кнопку, чтобы выбрать у себя на компе файл обновления", а дальше как тут на форуме при прикреплении файлов к сообщению.

2) Запуск процесса обновления чаще всего будет происходить из работающего приложения, но при отсутсвии приложения (после сбоя обновления или сразу после производства) точно такой же запуск должен быть возможен и средствами самого загрузчика. Из этого вытекает, что загрузчик должен содержать весь минимально необходимый функционал, т.е. быть способным показать пользователю веб-страницу обновления.

3) Чтобы прошивка происходила в процессе передачи файла, то есть чтобы пользователь имел обратную связь и наблюдал на экране какую-то полосу с процентами. Поэтому не хочу, чтобы прошивка сначала сохранялась где-то, а потом загрузчик молча переписывал ее собствено в память контроллера.

4) Я пока очень смутно представляю, как работают веб-морды. Хочу разделить процесс выбора файла и процесс его передачи, т.е. чтобы вот эту страницу выбора файла мог показывать как загрузчик, так и приложение(пункт 1 хотелок), а после выбора файла посылался бы какой-то сигнал серверу, соединение бы закрывалось, контроллер сбрасывался, попадал в загрузчик в режим обновления и уже загрузчик ждал бы нового соединения от браузера с передачей собственно содержимого файла.

Вот такие вот у меня мысли. Странного ли я хочу? Какие еще варианты обновления вы встречали и находили удобными (мне очень хочется, чтобы процесс обновления был удобным). Что еще посоветуете, что раскритикуете?

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

Вроде все выглядит достаточно красиво и этот вариант был бы, наверное, гораздо проще в реализации, но мне он не нравится по следующим причинам:
1) В процессе обновления нет обратной связи. Допустим, не понравился чем-то файл обновления загрузчику, а сказать чем именно не понравился ему некуда.
2) Для записи самой первой прошивки на карточку надо иметь считыватель.

********
Спасибо форуму. Пока формулировал это сообщение, хотелки стали понятны самому.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Сергей Борщ   Обновление прошивки через эзернет   Aug 26 2015, 09:25
- - Lotor   Цитата(Сергей Борщ @ Aug 26 2015, 12:25) ...   Aug 26 2015, 09:36
- - _pv   ни разу не знаток html но страничка с кнопкой доба...   Aug 26 2015, 09:53
- - AlexandrY   Цитата(Сергей Борщ @ Aug 26 2015, 12:25) ...   Aug 26 2015, 10:02
|- - zltigo   QUOTE (AlexandrY @ Aug 26 2015, 13:02) Эт...   Aug 26 2015, 10:39
|- - AlexandrY   Цитата(zltigo @ Aug 26 2015, 13:39) Незач...   Aug 26 2015, 10:43
|- - zltigo   QUOTE (AlexandrY @ Aug 26 2015, 13:43) Ис...   Aug 26 2015, 11:00
|- - AlexandrY   Цитата(zltigo @ Aug 26 2015, 14:00) Не сп...   Aug 26 2015, 11:05
- - SSerge   У ST есть пара примеров в обычном для них стиле: L...   Aug 26 2015, 10:16
- - Aner   48 К памяти хватит, ... сделано, работает. Проблем...   Aug 26 2015, 10:25
|- - AlexandrY   Цитата(Aner @ Aug 26 2015, 13:25) 48 К па...   Aug 26 2015, 10:35
- - zltigo   QUOTE (Сергей Борщ @ Aug 26 2015, 12:25) ...   Aug 26 2015, 10:28
|- - Aner   QUOTE (zltigo @ Aug 26 2015, 13:28) Самое...   Aug 26 2015, 11:10
|- - zltigo   QUOTE (Aner @ Aug 26 2015, 14:10) TFTP бе...   Aug 26 2015, 11:15
- - Сергей Борщ   не-не-не, не все так плохо. DHCP будет, но если у ...   Aug 26 2015, 11:33
|- - zltigo   QUOTE (Сергей Борщ @ Aug 26 2015, 14:27) ...   Aug 26 2015, 11:42
|- - AlexandrY   Цитата(Сергей Борщ @ Aug 26 2015, 14:27) ...   Aug 26 2015, 11:42
||- - zltigo   QUOTE (AlexandrY @ Aug 26 2015, 14:42) До...   Aug 26 2015, 12:01
|- - zltigo   QUOTE (Сергей Борщ @ Aug 26 2015, 14:33) ...   Aug 26 2015, 11:50
|- - AlexandrY   По нынешним временам проще Wi-Fi использовать. Уви...   Aug 26 2015, 11:59
- - _pv   я так понимаю основная проблема со статическим адр...   Aug 26 2015, 13:15
|- - zltigo   QUOTE (_pv @ Aug 26 2015, 16:15) но это в...   Aug 26 2015, 16:00
|- - _pv   Цитата(zltigo @ Aug 26 2015, 23:00) Отроу...   Aug 26 2015, 19:59
|- - zltigo   QUOTE (_pv @ Aug 26 2015, 22:59) и роутит...   Aug 26 2015, 20:10
|- - _pv   Цитата(zltigo @ Aug 27 2015, 03:10) Тольк...   Aug 27 2015, 07:14
|- - zltigo   QUOTE (_pv @ Aug 27 2015, 10:14) есть жел...   Aug 27 2015, 08:46
|- - Сергей Борщ   Цитата(zltigo @ Aug 27 2015, 11:46) А вот...   Aug 27 2015, 09:43
|- - zltigo   QUOTE (Сергей Борщ @ Aug 27 2015, 12:43) ...   Aug 27 2015, 09:57
|- - _Pasha   Цитата(Сергей Борщ @ Aug 27 2015, 12:43) ...   Oct 21 2015, 12:18
|- - Сергей Борщ   Цитата(_Pasha @ Oct 21 2015, 15:18) Белый...   Oct 21 2015, 12:23
- - Quasar   Что-то вы тут все усложняете со своими IP адресами...   Aug 26 2015, 18:07
|- - zltigo   QUOTE (Quasar @ Aug 26 2015, 21:07) Что-т...   Aug 26 2015, 18:42
||- - Quasar   Цитата(zltigo @ Aug 26 2015, 21:42) Что-т...   Aug 26 2015, 20:26
||- - zltigo   QUOTE (Quasar @ Aug 26 2015, 23:26) Поэто...   Aug 26 2015, 20:40
|- - AlexandrY   Цитата(Quasar @ Aug 26 2015, 21:07) Поско...   Aug 27 2015, 04:37
|- - Quasar   Цитата(AlexandrY @ Aug 27 2015, 07:37) Да...   Aug 27 2015, 05:37
|- - AlexandrY   Цитата(Quasar @ Aug 27 2015, 08:37) Но эт...   Aug 27 2015, 05:59
||- - zltigo   QUOTE (AlexandrY @ Aug 27 2015, 08:59) Ко...   Aug 27 2015, 06:14
||- - Quasar   Цитата(AlexandrY @ Aug 27 2015, 08:59) А,...   Aug 27 2015, 06:33
|- - Aner   QUOTE (Quasar @ Aug 27 2015, 08:37) ... н...   Aug 27 2015, 07:17
- - HardEgor   Цитата(Сергей Борщ @ Aug 26 2015, 15:25) ...   Aug 27 2015, 03:24
|- - Сергей Борщ   Цитата(HardEgor @ Aug 27 2015, 06:24) У в...   Aug 27 2015, 07:11
|- - AlexandrY   Цитата(Сергей Борщ @ Aug 27 2015, 10:11) ...   Aug 27 2015, 07:43
||- - Quasar   Цитата(AlexandrY @ Aug 27 2015, 10:43) О,...   Aug 27 2015, 08:47
||- - AlexandrY   Цитата(Quasar @ Aug 27 2015, 11:47) То ес...   Aug 27 2015, 10:31
||- - Quasar   Цитата(AlexandrY @ Aug 27 2015, 13:31) По...   Aug 27 2015, 11:11
||- - AlexandrY   Цитата(Quasar @ Aug 27 2015, 14:11) Ну да...   Aug 27 2015, 11:21
||- - Quasar   Цитата(AlexandrY @ Aug 27 2015, 14:21) Эт...   Aug 27 2015, 11:51
||- - zltigo   QUOTE (AlexandrY @ Aug 27 2015, 14:21) Эт...   Aug 27 2015, 12:12
|- - HardEgor   Цитата(Сергей Борщ @ Aug 27 2015, 13:11) ...   Aug 27 2015, 10:42
|- - A. Fig Lee   Цитата(Сергей Борщ @ Aug 27 2015, 03:11) ...   Aug 27 2015, 12:38
- - Mahagam   делал подобное. только у меня лимит был в 64к кажи...   Aug 27 2015, 11:19
- - Quasar   Цитата(Сергей Борщ @ Aug 26 2015, 12:25) ...   Aug 27 2015, 13:01
|- - AlexandrY   Кста, только что сделал Telnet по WiFi вот для это...   Aug 27 2015, 14:05
|- - zltigo   QUOTE (AlexandrY @ Aug 27 2015, 17:05) Во...   Aug 27 2015, 14:22
- - _Pasha   Сервер обновлений с белым ip На нем присутствует д...   Oct 21 2015, 13:22
- - AlexandrY   Цитата(_Pasha @ Oct 21 2015, 16:22) Серве...   Oct 21 2015, 13:59
|- - _Pasha   Цитата(AlexandrY @ Oct 21 2015, 16:59) У....   Oct 21 2015, 14:03
- - Quasar   Цитата(_Pasha @ Oct 21 2015, 16:22) Поско...   Oct 25 2015, 21:23


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th August 2025 - 22:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01611 секунд с 7
ELECTRONIX ©2004-2016