The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Интервью с Вячеславом Калошиным по вопросу перевода предприя..."
Отправлено User294, 11-Сен-09 19:49 
>UART - CreateFile. Ты вообще писал что нибудь?

Работу с уартом под винду - писал, да. Только вот это с UART все просто. С виртуальным, сделанным из юсб уже чуть сложнее: в пингвинах то есть дрова для большинства usb-to-serial чипов и - все работает как из пушки сразу после втыкания девайса. Т.е. появляется наш родной ttyUSB0 или что там еще и - с ним можно работать из своей проги как с обычным компортом. Что столь же просто как сам компорт - замечательно, левых телодвижений - ноль и наблюдается полный плагнплюй во всей красе в общем то.

В виндозе чтобы дать свою железку на таком же чипаке виндузятнику - надо еще и дровами чипака моста уарт-юсб его снабжать и описаловом как их ставить (и спасибо если вендор чипака выпускает не кривые дрова регулярно под новые версии виндозы и они подписаны).В итоге - с пингвинами получается сильно меньше секаса т.к. драйвера уже есть сразу и майнтайнятся самими ядерщиками, тогда как в винде юзер их должен где-то сбоку взять, что на практике - очень неудобное такое требование. В итоге - в линухе воткнули - работает. В виндозе воткнули - ставим дрова - и только потом работает. Констатируем что в виндозе плагнплей - хуже и требует больше телодвижений при совершенно равных стартовых условиях.

А при желании поработать с юсб нативно, в том виде как оно есть, я вижу кой-какие грабли:
Скажите, плиз, как произвести в виндозе энумерацию шины, понять что там появился мой девайс, а потом - приконектиться своей программой не к какому-то абстрактному "UART" а к нативной usb-шной сущности (aka endpoint) и погонять между моей программой и моей железкой данные? Не попадая на написание своих драйверов ядра для виндозы. Допустим, железка не вписывается ни в один стандартный класс и дров для нее по этой причине система не имеет (для простоты фирмваре железки, которое только тупо гоняет данные по эндпойнту, ни разу не пытаясь прикинуться чем-то стандартным).

В пингвине с этим все понятно - есть libusb, который позволяет работу с usb сущностями и спецификами из юзер-мода, так что если влом писать драйвер, можно из юзермода все сделать. Да, система не опознает девайс и ничего по поводу его наличия делать не будет. Но прога работающая с девайсом сама может все сделать через libusb.

А в виндозе ... где и какое есть апи для работы на этом уровне с usb? Я что-то не нашел в RTFMах никаких аналогов, как минимум когда интересовался этим во времена Win XP.

Пример нахрена это надо? А легко: скажем у n800 есть бутлоадер. Он конектится через usb и прога-флешер обновляет фирмварь. Сие не вписывается в какой-то стандартный класс (протокол у нокии самопальный). В пингвинах нокия как я понимаю юзает libusb и через него все делает. А в виндозе для такого ставится ядерный драйвер... и почему бы это он ставится? :).Что самое веселое - точно такие же схемы не только у нокии.

>>поработать с своей железкой например. Не попадая на написание драйверов ядра.
>CreateFile

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

Если что - могу накидать примеров софта который через usb что-то "нестандартное" (==не попадающее в стандартные классы) делает с железками. В линухе и макоси сроду достаточно libusb. И все - найдя девайс можно с ним пообщаться через ендпойнты вплоть до юзания дефолтного - используемого для конфигурации и т.п. (виндоза такого как я понял вообще не позволяет, ни с дровами, ни без). А в виндозе почему-то сроду требуют ставить ядерные дрова. Особенно показательно на портабельных вариантах такого софта: Линух, макос - юзайте дескать либюсб и все будет зашибись. Виндозе - поставьте дрова для железки, блаблабла - иначе работать не будет.

Так что давайте вы мне покажете пример кода с CreateFile и т.п. который:
1) Понимает что некий девайс появился на шине.
2) Понимает что этот девайс - наш (узрев правильные vid и pid, неизвестные ни 1 драйверу).
3) Конфигуряет девайс, etc.
4) Юзает usb-шные endpoint-ы для простой коммуникации с девайсом, не нуждаясь в ядерном драйвере и не требуя прикидываться стандартным классом устройств. Просто качая в произвольном формате данные через endpoint-ы, так что хост шлет, девайс выгребает и наоборот.

Я даже буду гадом и не поленюсь проверить. Благо, есть на чем. Например как раз под рукой есть кучка мелких армовских SoC с дефолтовым фабричным бутлоадером, умеющим шиться через usb. Ессно каким-то своим собственным протоколом, который ни разу не косит под стандартные классы устройств и стало быть по дефолту дров под него в системе быть не может. Ну вот и посмотрим как оно под виндузей зашьется без установки ядерных драйверов. А то почем-то под пингвина все маны рекомендуют "скачате прошивалку и проверьте что libusb стоит - и готово".А под виндозу - "поставьте дрова такие-сякие и только потом сможете прошиваться".

>>цепляя всякие FTDI, PL200x и т.п. чипы сполоборота в режиме плагнплэй.
>Да ну?

Tested and works ;).Что самое веселое FTDI даже дает (открытые) утили для записи еепром конфигурации через их чипак прямо по юсб. Весьма мило с их стороны. Вообще, честное пионерское, мне с ними в пингвине возиться понравилось больше. Плагнплей тотатальный - воткнули - появился виртуальный порт. Все, можно с ним работать! В отличие от виндозы, где надо ...ацца с установкой дров самолично да и утилиты для записи конфигурационного еепрома чипака как-то apt-get'ом 1 командой хрен с два поставишь, надо искать и качать где-то самому.Что шибко дольше, раз так в эн.

>>А может, в виндах можно расшарить GPS ресивер на несколько программ цивильными
>>методами? В пингвинах и вообще *никс - можно, и софт в
>про IRP ты вообще не слышал.

Что - IRP? IRP - I/O Request Packet, сущность с которой дрова НТ работают разруливая запросы приложений. И дальше что? Вот в линухе например: по виртуальному компорту проброшенному по синезубу (или юсб, или натуральному уарту) прицеплен ресивер. К нему вместо программ конектится по уарту (зачастую виртуальному) сам gpsd. А далее он выступает этаким хабом который на всю ораву уже по TCP/IP раздает навигационные данные. При этом программ может быть вагон (TCP/IP это в отличие от уарта допускает). И все просто - компорт юзает 1 программа, котрая шарит навигационные данные в форматах ставших в *никсах более-менее общепринятыми. Поэтому я могу запустить на моей n800 пять программ навигации и все пять будут знать координаты и не будут драться за один виртуальный уарт. А теперь покажите мне как поюзать 5 программ навигации одновременно в виндозе с 1 ресивером? Ваши рецепты для виндозе? Единственное что в бошку лезет - юникс-вэй как то поюзать портированный софт и допиленный gpsd :).Такое вот эпичное опускалово. Я вот уже сегодня могу в пингвине юзать один ресивер на ораву софта. Что я и делаю регулярно на n800 :D.

>В линухе он вообще не работает. НЕ РАБОТАЕТ. Изредка можно заставить работать
>модем. ОН НЕ РАБОТАЕТ.

Я не знаю что там у вас не работает, но отсылать файлы с убунты на окружаюшие девайсы - получается как из пушки и даже можно "позвонить" через DUN (родная приблуда гнома впрочем достаточно глючна и лучше юзать другую). А уж n800 и вовсе в плане синезуба - рулит. А ведь внутри тот же дебиан, тот же bluez и прочая. И знаете, она пашет как часики. В отличие от телефона с симбияном где блутус стек вечно глюкает и барахлит на все лады. Да, даешь гетзефактс... уныло и предсказуемо. Зато в виндозе вот родной мс-овский стек с его дровами что-то вообще не хочет с блютэйковской донглой работать. То есть - вроде девайс опознан но ничего не работает. Приходится выколупывать эти дрова и ставить с сидюка родные. Система при этом верещит что у меня "гранаты не той системы",  в смысле несовместимые дрова. Может и не совместимы, но зато - работают. Я бы с удовольствием посмотрел как домохозяйки вырулят из такого штопора. Даже за билет на такое шоу заплатил бы.

>Да ну? Это ты заврался ппц в конец. Пруфы в студию.

http://en.wikipedia.org/wiki/Monitor_mode - доступно? Апи для загона карты в оный режим (полезный для мониторинга окружающей обстановки, захвата пакетов, etc) появилось только в висте. А висты едва ли 20% до сих пор. А большинство, пардон, на XP, где такой роскоши нет. Ну и вот такое вот в виндах везде - для всего новья апи или нет или какой-то дебильный гемор, недоделки и нехватка функционала.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру