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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Обновление прошивки через эзернет, Как сделать удобнее для пользователя, какой протокол?
Quasar
сообщение Aug 27 2015, 05:37
Сообщение #31


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(AlexandrY @ Aug 27 2015, 07:37) *
Да ну!
И перекомпилировать на каждой из платформ не надо? Вот прям на любых дистрибутивах Линукса и Mac OS? И даже на iOS и Android наверно?
И без тестирования?


Ну вообще как бЭ да, перекомпилировать Java приложение не надо. Тестировать конечно надо, но при правильном дизайне, ведет себя приложение одинаково на всех платформах. Могут возникать некоторые вопросы по Linux'у, так как там частенько используют свободную JRE, а не JRE от Sun, а она глючноватая немного. Но это тоже решаемо, и в основном встречается на сложных приложениях. На простой обновлялке вы вряд ли столкнетесь с этим.

А вот если юзать QT с C++, то конечно, здесь нужна сборка под каждую платформу.

Цитата(AlexandrY @ Aug 27 2015, 07:37) *
Да ну!
И даже на iOS и Android наверно?


На iOS нет Java, на Android Java не от Sun. Мы говорим про десктоп, Win, Lin, Mac. Я одинаково много работаю на всех этих платформах и могу сказать, что Java чрезвычайно кроссплатформена. На IOS вам с трудом удастся загрузить фаил прошивки через Web, так что здесь вариант обновления через Web тоже не покатит. А Android можно вообще выкинуть из рассмотрения, кому придет в голову обновлять железки с него (да и с IOS в общем-то тоже)?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 27 2015, 05:59
Сообщение #32


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Quasar @ Aug 27 2015, 08:37) *
Но это тоже решаемо,... На простой обновлялке вы вряд ли ...


А, появилась неуверенность в голосе. biggrin.gif
Признайтесь, тестировали вы это на паре тройке платформ и то кое как.

Короче не буду оригинальным, но напомню, что lwIP можно заменить на более продвинутое middleware на базе MQX.
В TCP стеке идущем с MQX есть и DHCP сервер и DHCP клиент.
В добавок к этому идет сервер Link-Local Multicast Name Resolution (LLMNR) , это чтобы юзеру не разбираться с IP адресами.
В довесок есть также FTP сервер (ну и клиент тоже есть).
Само собой есть и WEB сервер с авторизацией и даже протокол WebSocket
А вот и первый же пример загрузки файла по WebSocket - http://basic4ppc.com:51042/websocket_with_fileupload/

Проверил на Android. Работает.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 27 2015, 06:14
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (AlexandrY @ Aug 27 2015, 08:59) *
Короче не буду оригинальным...

Да, действительно, следование идее бить воробьев из пушки, давно уже совершенно не оригинально и получает все большее распространение.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Quasar
сообщение Aug 27 2015, 06:33
Сообщение #34


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(AlexandrY @ Aug 27 2015, 08:59) *
А, появилась неуверенность в голосе. biggrin.gif
Признайтесь, тестировали вы это на паре тройке платформ и то кое как.


Не на паре, а на тройке, еще раз Win, Lin, Mac и проблем с обновлялкой не было. А неуверенность в голосе, потому что я про вас говорю (ну или про кого-то еще, кто будет реализовывать обсуждаемый мною подход) и соответственно уверенности в действиях этого человека у меня нет.

То есть:
Цитата
На простой обновлялке вы вряд ли столкнетесь с этим.

Так что просьба не передергивать, я реализовав метод обновления с помощью Java обновлялки с проблемами не столкнулся, как получится у вас, не знаю :-)

[off]
Цитата
А вот и первый же пример загрузки файла по WebSocket - http://basic4ppc.com:51042/websocket_with_fileupload/


На IOS не работает! Сафари умеет грузить только картинки! Юзер останется недоволен smile3046.gif [/off]
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 27 2015, 07:11
Сообщение #35


Гуру
******

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



Цитата(HardEgor @ Aug 27 2015, 06:24) *
У вас два несовместимых пункта. Новую прошивку придется сохранять где-то(в памяти, на SD-карте), плюс лучше делать бэкап текущей, потому что если что-то пошло не так - например отключилось питание прошиваемого устройства, то вы получите "кирпич", а так есть вариант поднять bootloader'ом.
Нет, я не получу кирпич. После таймаута произодет перезагрузка, загрузчик обнаружит порушенное приложение и будет сам показывать ту страницу с полем выбора файла образа прошивки. Сохранять предыдущую прошивку по этой причине мне тоже не нужно. Так что эти пункты прекрасно совместимы.

Цитата(HardEgor @ Aug 27 2015, 06:24) *
Обычно кстати bootloader'ы работают по tftp, потому что он проще чем http.
Сложность в разумных пределах меня не пугает. scmRTOS+lwIP+DHCP вчера заняли 33 К, нашел очень компактный HTTP-парсер, есть надежда уложиться в 48 К.

Цитата(HardEgor @ Aug 27 2015, 06:24) *
Посмотрите как это сделано во всяких wi-fi роутерах. Вписан фиксированный адрес типа 192.168.0.1 и все нормально на него настраиваются и подключают.
Вот я тоже не понимаю, почему вопрос настройки сетевого адреса вызвал такое обсуждение. Я тут не вижу никакой проблемы. Приложение сохраняет сетевые настройки во флеше. Загрузчик их берет оттуда, т.е. загрузчик работает на тех настройках, которые были у приложения. Если настроек там нет, то приложение еще не запускалось и загрузчик висит на прибитом гвоздями фиксированном адресе. Подключение к нему не сложнее подклюения к свежекупленному домашнему маршрутизатору. Любого пользователя можно отослать к инструкции от любого маршрутизатора. Все, на этом вопрос сетевых настроек предлагаю свернуть.

Цитата(HardEgor @ Aug 27 2015, 06:24) *
Саму страничку, которую контроллер будет отдавать броузеру для обновления можно взять там-же и её можно существенно упростить если выкинуть все красивости.
Разумеется, я же так ее и описал: строка текста, поле ввода имени файла и кнопка "обновить". _pv в третьем сообщении темы дал хорошую ссылку.

Цитата(HardEgor @ Aug 27 2015, 06:24) *
Как понимаете, контроллеру потребуется иметь собственный http-сервер, но можно самому написать simple-httpd, которые выполняет две-три команды протокола http, больше и не потребуется. Он-же и выдаст клиенту возникающие ошибки, но, чем сложнее интерфейс с пользователем - тем сложнее будет сервер.
Да, вот этим путем я и двигаюсь. На данный момент у меня вопрос вот о чем: пользователь нажал кнопку "обновить". Можно ли сделать так, чтобы по этой кнопке броузер отправлял одно сообщение типа "пааехали", закрывал соединение, а следом в отдельном сообщении и уже новом соединении посылал данные из файла? Для чего мне это нужно: по первому сообщению моя железка перезагрузится и войдет в режим обновления, т.е. в режим, в котором она с определенным таймаутом (скажем, 3 секунды) ожидает нового соединения с данными образа прошивки. Этот момент перезагрузки у меня отделяет собственно обновление от предыдущей работы. После него мне совершенно не важно, кто показывал пользователю страничку с выбором файла - приложение или загрузчик (при отсутсвии приложения). То есть фактически мы имеем три отдельные программы:
1) загрузчик, который умеет только принять файл и на лету из него обновить приложение.
2) приложение, которое кроме основной работы умеет по команде от пользователя запустить загрузчик.
3) минимальное приложение, которое живет в области загрузчика и умеет только проверить целостность приложения и если оно не целое, то по команде от пользователя запустить загрузчик.
Такая схема у меня используется во всех проектах и показала свою неубиваемость. Переход на программу 1 у меня происходит по программному сбросу. Это позволяет начать жизнь с чистого листа и в процессе загрузки не зависеть от настроек периферии, которые могло сделать приложение.

Цитата(HardEgor @ Aug 27 2015, 06:24) *
Есть два момента определяющие сложность загрузчика через Ethernet - будет-ли необходима защита, т.е. будет ли обновление производится через общедоступные сети или это будет локальная сеть.
Это будет локальная сеть. Проект открытый, защита от чтения прошивки не нужна. Если в следующих проектах потребуется защита, добавлю AES-шифрование из предыдущих проектов.


--------------------
На любой вопрос даю любой ответ
"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
_pv
сообщение Aug 27 2015, 07:14
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(zltigo @ Aug 27 2015, 03:10) *
Только вот прилетит с IP, на который отправивший его не среагирует. Тупо НЕ его адрес. Вот такая печалька. Вот если-бы устройство могло ответить НЕ тупо, как Вы решили, а на реальный адрес отправившего, КАК НА РОУТЕР, тогда да. Но ведь адрес роутера, увы, у устройства другой - забитый от фонаря.

есть железка с зашитым адресом 192.168.2.3, которую воткнули в локальную сеть 172.16.
ПК, после route add ..., будет слать пакеты для 192.168.2.3 непосредстренно ему, а не в шлюз.
если устройство временно, на время начального конфигурирования, забъёт на маршрутизацию, и получив пакет от ПК 172.16.100.100 ему же обратно и ответит, с dst mac адресом ПК, а не шлюза, ПК разве этот ответ проигнорирует? ip - его, mac - его, то что src ip немного странный - так вроде без разницы, тем более в таблице маршрутизации он есть.
Go to the top of the page
 
+Quote Post
Aner
сообщение Aug 27 2015, 07:17
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



QUOTE (Quasar @ Aug 27 2015, 08:37) *
... на Android Java не от Sun. ...

Сама приюлуда Android писана на той самой Java не от Sun, что поверх Linyx там у всех.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 27 2015, 07:43
Сообщение #38


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Сергей Борщ @ Aug 27 2015, 10:11) *
Подключение к нему не сложнее подклюения к свежекупленному домашнему маршрутизатору. Любого пользователя можно отослать к инструкции от любого маршрутизатора.



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




Цитата(Quasar @ Aug 27 2015, 09:33) *
На IOS не работает! Сафари умеет грузить только картинки! Юзер останется недоволен smile3046.gif [/off]


О, а у вас уже проблемы.

Невозможность аплодить произвольные файлы из мобильного Safari знает весь интернет.
Он же знает как это обойти.
Такую мелочь по сравнению с вашей явой могли бы и не упоминать.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 27 2015, 08:46
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (_pv @ Aug 27 2015, 10:14) *
есть железка с зашитым адресом 192.168.2.3, которую воткнули в локальную сеть 172.16.
ПК, после route add ..., будет слать пакеты для 192.168.2.3 непосредстренно ему, а не в шлюз.

Да. Для определенности - если указать роутинг подсети 192.168.2.xxx на IP адрес своего интерфейса (только надо его узнать предварительно ), то действительно будет просто улетать на этот интерфейс.
QUOTE
если устройство временно, на время начального конфигурирования, забъёт на маршрутизацию

А вот это уже дополнительное условие в Вами ранее озвученному sm.gif. Да, забить на маршрутизацию можно и даже легко - маска 0.0.0.0 и весь мир у твоих ног sm.gif. Тогда все будет работать, именно, как Вы описываете. Действительно самый минималистичный вариант вмешательства.
Остается только еще глянуть позволит-ли route поставить все, как хочется - в WIN постарше оно, помнится, капризное было sad.gif
QUOTE (Сергей Борщ @ Aug 27 2015, 10:11) *
Подключение к нему не сложнее подклюения к свежекупленному домашнему маршрутизатору. Любого пользователя можно отослать к инструкции от любого маршрутизатора. Все, на этом вопрос сетевых настроек предлагаю свернуть.

Ну вот, самое интерсное и полезное предложил похерить sad.gif. На самом деле все остальное (из скольки букв в имени протокол выбрать, ставить-ли для этого "линукс" sm.gif или обойтись портированием MQX sm.gif ...)уже есть рутинные детали реализации. А вот как НЕ выполнять дурацкие действия, пусть даже их "все выпоняют", это действительно интересно.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Quasar
сообщение Aug 27 2015, 08:47
Сообщение #40


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(AlexandrY @ Aug 27 2015, 10:43) *
О, а у вас уже проблемы.

Невозможность аплодить произвольные файлы из мобильного Safari знает весь интернет.
Он же знает как это обойти.
Такую мелочь по сравнению с вашей явой могли бы и не упоминать.


То есть начали с того, что пользователь не может IP поменять, а теперь домохозяйка, решившая обновить вашу железку, должна решать вопрос с Safari? Или ставить другой браузер? Или делать джеил? Или переходить на андроид? Вы очень последовательны и логичны в рассуждениях.

Ладно, я понял, что вы не знакомы с технологией Java (раз спрашиваете о перекомпиляции), и будете как и древние люди, доказывать, что все это черти, бесы и от лукавого. Но по-моему, это не является предметом данного треда.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Aug 27 2015, 09:43
Сообщение #41


Гуру
******

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



Цитата(zltigo @ Aug 27 2015, 11:46) *
А вот как НЕ выполнять дурацкие действия, пусть даже их "все выпоняют", это действительно интересно.
Кому как. Мне проще сделать "как у всех", чем искать или писать и поддерживать еще какую-то хитрую утилиту. Причем обычный пользователь будет видеть это именно как "сделано черз Ж", потому что "не как у всех".


--------------------
На любой вопрос даю любой ответ
"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
zltigo
сообщение Aug 27 2015, 09:57
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Сергей Борщ @ Aug 27 2015, 12:43) *
Кому как. Мне проще сделать "как у всех", чем искать или писать и поддерживать еще какую-то хитрую утилиту.

Ну в данном случае возникло решение, как упростить "инструкцию" и без утилит. Да и утилиты отметать не следует, ибо сейчас у тебя один домашний пользователь. А если будет какой-то обьект на котором тобой разработанных устройств разом смонтируют и включат сотню-другую?
QUOTE
Причем обычный пользователь будет видеть это именно как "сделано черз Ж", потому что "не как у всех".

Ну кому-то надо начинать делать ПЕРВОМУ не как у всех, тем более, что "все" в твоем примере цельнотянущие друг у друга роутеростоители бытовых роутеров.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Aug 27 2015, 10:31
Сообщение #43


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Quasar @ Aug 27 2015, 11:47) *
То есть начали с того, что пользователь не может IP поменять, а теперь домохозяйка, решившая обновить вашу железку, должна решать вопрос с Safari? Или ставить другой браузер? Или делать джеил? Или переходить на андроид? Вы очень последовательны и логичны в рассуждениях.

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


Да я тут было потянулся к гугле чтобы узнать что такое ява, но подумал что наверно ничего интересного не увижу.
Потому как если бы действительно существовало кроссплатформенные средство разработки я бы давно на нем программировал. biggrin.gif
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Aug 27 2015, 10:42
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(Сергей Борщ @ Aug 27 2015, 13:11) *
Да, вот этим путем я и двигаюсь. На данный момент у меня вопрос вот о чем: пользователь нажал кнопку "обновить". Можно ли сделать так, чтобы по этой кнопке броузер отправлял одно сообщение типа "пааехали", закрывал соединение, а следом в отдельном сообщении и уже новом соединении посылал данные из файла? Для чего мне это нужно: по первому сообщению моя железка перезагрузится и войдет в режим обновления, т.е. в режим, в котором она с определенным таймаутом (скажем, 3 секунды) ожидает нового соединения с данными образа прошивки. Этот момент перезагрузки у меня отделяет собственно обновление от предыдущей работы. После него мне совершенно не важно, кто показывал пользователю страничку с выбором файла - приложение или загрузчик (при отсутсвии приложения).

У меня роутер DIR-320, когда я в броузере на страничке настройки роутера нажимаю кнопку "перезагрузить", он на страничке выводит "ничего не делайте, через 99 секунд произойдет подключение", и счетчик секунд уменьшается до нуля. При нуле происходит автоматическое подключение броузера к странице настройки роутера. Как там это делается я не вникал, видимо в страничке есть код javascript, которые запрещает обновление страницы, отсчитывает 100 секунд, и принудительно обновляет страницу - броузер запрашивает соединение у стека tcp/ip, а стек подключается к http-серверу роутера.
Так что ваш сценарий реален.
Go to the top of the page
 
+Quote Post
Quasar
сообщение Aug 27 2015, 11:11
Сообщение #45


Местный
***

Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021



Цитата(AlexandrY @ Aug 27 2015, 13:31) *
Потому как если бы действительно существовало кроссплатформенные средство разработки я бы давно на нем программировал. biggrin.gif


Ну да, вы даже не поняли, что Java это не средство разработки.
Go to the top of the page
 
+Quote Post

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

 


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


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