Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Загрузка прошивки через интернет
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
kurtis
Возник вопрос.
Есть некоторое устройство, на котором установлен Linux, оно подключается к ПК через USB. ПК имеет доступ в интернет. Задача состоит в том, чтоб пользователь мог зайти на сайт и залить новую версию прошивки в устройство, но сделать это нужно без установки дополнительного ПО на компьютер пользователя. Изменять ПО можно на сервере и на самом устройстве.

Существуют ли какие-то способы решения этой проблемы? Желательно с использованием стандартных технологий.
aaarrr
Цитата(kurtis @ Aug 2 2010, 01:38) *
оно подключается к ПК через USB.

Что из себя представляет это соединение, что ходит поверх USB?

Цитата(kurtis @ Aug 2 2010, 01:38) *
Изменять ПО можно на сервере и на самом устройстве.

Устройство и ПК упоминались, а кто такой сервер?
rezident
А почему нельзя использовать для обновления прошивки некий визард в виде исполняемого файла, который исполняется лишь однажды, без установки в системе? Ее (программу для обновления прошивки) точно также можно на сервере выложить. По такой технологии сейчас обновляют BIOS на материнских платах - не нужно загружаться с дискеты, запускается обычное приложение для Windows.
kurtis
Цитата(aaarrr @ Aug 2 2010, 00:43) *
Что из себя представляет это соединение, что ходит поверх USB?

Возможно я вас не совсем правильно понял, но компьютер видит устройство как mass storage. Теоретически, никаких ограничений нет, но это должно поддерживаться операционной системой "из коробки", т.е. без установки дополнительных драйверов. Замена компютера, не должна влиять на работоспособность этой цепочки.

Цитата(aaarrr @ Aug 2 2010, 00:43) *
Устройство и ПК упоминались, а кто такой сервер?

Набор программного обеспечения, который стоит на стандартном хостинге у провайдера. В худшем случае это выделенный сервер где стоит, например, Linux, Apache, MySQL и PHP. Но любой из этих компонентов можно заменить, например заменить PHP на Java, Linux на Windows, MySQL на что-то еще.

Задача пока из разряда чисто теоретических, по этому никакой конкретики дать не могу. Собираю варианты, изучаю возможности.
defunct
Цитата(kurtis @ Aug 2 2010, 01:01) *
компьютер видит устройство как mass storage.
..
Собираю варианты, изучаю возможности.

На сервере любом выложить файл прошивки. Пользователь пусть скачает этот файл да запишет на mass storage.
Девайс после ребута пусть подхватит этот файл да и обновится. Не нужно ни java, ни php, ни mysql...
kurtis
Цитата(rezident @ Aug 2 2010, 00:47) *
А почему нельзя использовать для обновления прошивки некий визард в виде исполняемого файла, который исполняется лишь однажды, без установки в системе? Ее (программу для обновления прошивки) точно также можно на сервере выложить. По такой технологии сейчас обновляют BIOS на материнских платах - не нужно загружаться с дискеты, запускается обычное приложение для Windows.

В данный момент алгоритм перепрошивки выглядит так:
1) Пользователь заходит на сайт по известному ему адресу;
2) Скачивает прошивку;
3) Заливает прошивку на карточку или напрямую на устройство;
4) Карточку вставляет в устройство (если писали на карточку);
5) Устройство при загрузке запускает программу которая по состоянию кнопок и наличию файла в доступной ему памяти решает нужно обновляется или нет.
6) После перезагрузки у нас новая прошивка.

Из этого процесса хочется максимально исключить пользователя. Т.е. должно быть как-то так:
1) Пользователь зашел на сайт;
2) Выбирает нужную прошивку, нажимает кнопку "Прошить" в браузере;
3) Прошивка "как-то" попадает на устройство.
4) После перезагрузки у нас новая прошивка.

При этом компьютер должен быть полностью заменяем на другой, без установки специфического ПО и драйверов. Не должна влиять версия операционной системы (Windows XP, Vista, 7, Linux, теоретически даже MacOS), конфигурация железа (должен быть только минимум 1 порт USB и доступ в интернет).и прочее.

Цитата(defunct @ Aug 2 2010, 01:10) *
На сервере любом выложить файл прошивки. Пользователь пусть скачает этот файл да запишет на mass storage.
Девайс после ребута пусть подхватит этот файл да и обновится. Не нужно ни java, ни php, ни mysql...

Сейчас так и делается.
Но задача возникла скорее из любопытства чем от практической необходимости.
aaarrr
Сейчас у Вас хороший универсальный метод, ИМХО, лучше бы его не менять.

Вот к чему это может привести:
На днях пришлось скачивать драйверы для ноутбука Dell, так вот эти негодяи активно навязывают свой Download Manager, который я сослепу и выбрал. Менеджер, естественно, не запустился, зато мой случайный выбор был надежно сохранен. В результате пришлось вручную вычищать все dell'овские куки и только после этого получилось скачать драйверы нормальным способом.
Хотели как лучше, а создали в результате геморрой для конечного пользователя (и службы поддержки, т.к. куки удалить догадается, увы, не каждый первый).
V_G
Цитата(kurtis @ Aug 2 2010, 09:22) *
В данный момент алгоритм перепрошивки выглядит так:
1) Пользователь зашел на сайт;
2) Выбирает нужную прошивку, нажимает кнопку "Прошить" в браузере;
3) Прошивка "как-то" попадает на устройство.
4) После перезагрузки у нас новая прошивка.


На мой взгляд, реально только в IE. Можно написать ActiveX, получающий прошивку с сервера и копирующий ее в USB mass storage, после чего девайс при перезагрузке зальет ее в себя.
Остальные браузеры большей частью ActiveX не поддерживают принципиально как чрезвычайно небезопасный элемент. Как написать что-то подобное на JavaScript - не знаю. Как на других языках, поддерживаемых браузерами - пусть скажут знатоки этих других языков. Но сильно сомневаюсь, что можно.
aaarrr
Вообще, пп.2-3 отражают вирусоподобную активность. Да даже просто вирусную, если добавить к "прошивке" файл autorun.inf smile.gif
V_G
Да, это очень похоже на вирус, потому и невозможно в большинстве браузеров. Клиентская часть управления счетом в Райффайзенбанке написана на ActiveX, у меня нигде кроме IE не запускается. Да и IE выдал предупреждение о небезопасности. Я позвонил в банк, там меня уверили, что все ОК, и что только через IE, после чего установил этот софт. Но банк - это серьезно, и ему я действительно доверяю. А как отнесутся пользователи к предложению сайта топикстартера загрузить ActiveX, в целом понятно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.