Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [Все]   Вниз
  Печать  
Автор Тема: Системный драйвер USB  (Прочитано 52178 раз)
0 Пользователей и 1 Гость смотрят эту тему.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« : 21-06-2003 16:03 » 

w2k
Есть ли он вообще что сним можно сделать и где про него почитать.
Записан

Да да нет нет все остальное от лукавого.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #1 : 21-06-2003 16:09 » 

Есть конечно - я посмотрю, что про него можно найти.
Записан

А птичку нашу прошу не обижать!!!
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #2 : 21-06-2003 16:51 » 

Вопрос не очень понял но отвечу.
Читать надо в DDK.
 В win2k есть драйвер для USB шины, если контроллер стандартный USB 1.1, то это один из следующих драйверов- usbohcd.sys, usbuhcd.sys, openhci.sys , драйвер usbhub.sys сидит над этими драйверами, драйвер usbstor.sys сидит над usbhub.sys и управляет дисками на usb. Win 2k пока не поддерживает USB 2.0, для поддержки производитель должен поставить свой драйвер контроллера, если он есть- все будет работать, так у меня от adaptec есть контроллер USB 2.0, работает на Win 2k с их драйвером adphcd.sys.
 В XP то же самое, но она поддерживает стандартные контроллеры USB 2.0, тот же контроллер от adaptec работает уже с майкрософтовским драйвером, только имена у драйверов контроллеров изменились на usbohci.sys, usbuhci.sys, usbehci.sys.
 На Win2003 то же что и на XP.

C именами драйверо контроллеров мог напутать(буквы там не те написать), но вроде все правильно.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 21-06-2003 16:58 » 

У меня есть задумка подключить свое устройство на USB контролеры стоят копейки, прошиник имеется у хороших друзей.  
Новот писать свой драйвер совершенно не охото, там всей логики аск выкинул пакет принял, и в другую сторну тоже самое. Никаких передергиваний, нужно просто опрашивать устроойство в цикле  и время от времени ему команды  передавать.

Я так думаю что стандартный драйвер все это уметь должен.  
Или я не прав?
Записан

Да да нет нет все остальное от лукавого.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #4 : 21-06-2003 17:02 » 

Обязан!
Записан

А птичку нашу прошу не обижать!!!
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #5 : 21-06-2003 17:10 » 

Цитата: PSD
У меня есть задумка подключить свое устройство на USB контролеры стоят копейки, прошиник имеется у хороших друзей.  
Новот писать свой драйвер совершенно не охото, там всей логики аск выкинул пакет принял, и в другую сторну тоже самое. Никаких передергиваний, нужно просто опрашивать устроойство в цикле  и время от времени ему команды  передавать.

Я так думаю что стандартный драйвер все это уметь должен.  
Или я не прав?


Все равно придется писать драйвер, доступа напрямую из приложений получить невозможно.
Система предоставляет интерфейс к контроллеру USB, ты должен создать пакеты и послать их на драйвер контроллера USB он уже сам решит что с ними делать( обычно он создает структуры в памяти и передает указатель на них контроллеру), сделать эти структуры можно только из драйвера.
Поддержка есть только для стандартных устройств- например USB Disk(usbstor.sys), мыши и клавиатуры( hid.usb) и еще каких-то, если твое устройство к ним не относится - надо писать драйвер.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 21-06-2003 17:31 » 

Чегото я не допонимаю,  что мешает мне собрать в приложении пакет и передать его драйверу?
Записан

Да да нет нет все остальное от лукавого.
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #7 : 21-06-2003 18:24 » 

Цитата: PSD
Чегото я не допонимаю,  что мешает мне собрать в приложении пакет и передать его драйверу?


А как ты передашь это драйверу из юзер мода, память под пакет надо выделять в пуле ядра, или твой пакет после переключения контекстов не будет верен, да и в своп файл улетит. А как ты передашь инфу драйверу из юзер мода, там INTERNAL request. А инфу как от драйвера контроллера получишь? в общем я не в догадках летаю, я это знаю.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 21-06-2003 18:32 » 

А вот я как раз в догадках.

Своему то драйверу я эту инфу передовать как-то буду. И получать от него ее тоже буду.  

Вот и пытаюсь понять почему этого нельзя сделать сразу на прямую.
Записан

Да да нет нет все остальное от лукавого.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #9 : 21-06-2003 18:37 » 

Т.е. USB устройство не имеет обычного стрим интерфейса, как обычный порт ввода вывода???

Еще вопрос - обычно USB полностью PnP девайс, как это организовано в драйвере? Особенно нестандартном, своем.
Записан

А птичку нашу прошу не обижать!!!
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #10 : 21-06-2003 18:45 » 

Цитата: PSD
А вот я как раз в догадках.

Своему то драйверу я эту инфу передовать как-то буду. И получать от него ее тоже буду.  

Вот и пытаюсь понять почему этого нельзя сделать сразу на прямую.


Чтобы понять почему это сделать нельзя надо понять как организован PnP менеджер и что такое стек устройств.
Драйвер USB шины найдет твой девайс, создаст для него PDO(PhysicalDeviceObject), сообщит об этом PnP менеджеру, тот получит идентификатор твоего устройства и попробует установить драйвер над этим PDO называться он будет FDO(FunctionalDeviceObject)- вот на него и надо засылать запросы, если драйвер устройства не найдут то у вас будет PDO без FDO, и что вам с ним делать? С ним можно общаться из режима ядра, что эквивалентно общению напрямую с контроллером(управляется он драйвером контроллера), а в юзер мод никакого толкового интерфейса от контроллера не выводится. Все эти stream и другие интерфейсы вывешиваюит FDO, если его нет- нет никакого интерфейса.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 21-06-2003 18:50 » 

Что есть стрим интерфейс?

От устройства в машину должен литься поток данных, данные не критичные, хост взял значит взял, не взял ну и бог сними. Передача данных предположительно в Bulk моде.

От машины в устройство передаются управляющие команды, действительно как в порт.
Записан

Да да нет нет все остальное от лукавого.
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #12 : 23-06-2003 12:08 » 

Цитата: PSD
Что есть стрим интерфейс?


В DDK набери слово stream и увидишь, но к нам это не имеет отношения(это class drivers для Audio/Video).

Цитата

От устройства в машину должен литься поток данных, данные не критичные, хост взял значит взял, не взял ну и бог сними. Передача данных предположительно в Bulk моде.

От машины в устройство передаются управляющие команды, действительно как в порт.


Тебе надо сделать драйвер или взять у производителя этого девайса, в DDK есть примеры драйверов и того как общаться с ними из приложений- посмотри.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 23-06-2003 13:28 » 

Я вобщемто смотрел.

И мне очень захотелось узнать что умеет системный драйвер, те
для всего ли нужен свой драйвер или какието вещи можно сотворить и без него.
Записан

Да да нет нет все остальное от лукавого.
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #14 : 23-06-2003 16:10 » 

Возьми bulkusb из DDK. Он конечно глючный и его немного дорабатывать надо, но вполне рабочий. И иметь может столько Bulk или Interrupt эндпоинтов, сколько тебе надо.
Записан

Megabyte be with you!
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #15 : 23-06-2003 19:19 » 

Цитата: PSD
Я вобщемто смотрел.

И мне очень захотелось узнать что умеет системный драйвер, те
для всего ли нужен свой драйвер или какието вещи можно сотворить и без него.


Задача драйвера контроллера(или стека драйверов- обычно их 2-3 в стеке, для управления контроллером)- создать в памяти структуры-связанные списки, которые содержат команды и указатели на буфера, и передать указатель на заголовок списка контроллеру USB, контроллер USB начнет последовательно вынимать команды из памяти и выполнять их, переходя от одной к другой через указатели в списке.  Интерфейс к стеку драйверов контроллера определен фирмой Microsoft и как стандартные драйвера так и драйвера от производителей ему следуют. Описание ты можешь почитать в DDK. Драйвера контроллера умеет все, главное создать правильные URB, из которых драйвер контроллера и создаст вышеупомянутые списки. Создать URB ты можешь только в своем драйвере, юзер мод тебе тут не поможет.
Записан
axel
Гость
« Ответ #16 : 25-06-2003 14:32 » 

а HID драйвер использовать не пробовали???
ведь с помощью него можно получить файловый доступ к USB.  Если интересно расскажу дальше как сделать на верхнем уровне и в устройстве.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #17 : 25-06-2003 14:33 » 

Да интересно!
Записан

А птичку нашу прошу не обижать!!!
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #18 : 25-06-2003 14:49 » 

Очень интересно.
Записан

Да да нет нет все остальное от лукавого.
axel
Гость
« Ответ #19 : 25-06-2003 14:50 » 

HID драйвер -  (Human Interface Driver) драйвер для устройств интерфейса с пользователем. Обычно в группу таких устр-в входят клавы, мыши, джойстики и т.д.  Можно создавать свои HID устр-ва и работать с ними через файловый доступ, т.е. CreateFile, ReadFile, WriteFile.
 Каждое устройство при подключении к USB проходит процесс енумерации в течение которого определяется группа устройства и после подгружаются соответствующие драйвера. HID устройство содержит так называемый HID descriptor и Report descriptor. В первом описывается номер устройства, код вендора, кол-во конечных точек и т.д. Во втором как конечные точки взаимодействуют с хостом. Процесс открытия устройства из программы примерно следующий HidD_GetHidGuid, SetupDiGetClassDevs,  SetupDiEnumDeviceInterfaces, SetupDiGetDeviceInterfaceDetail, CreateFile, HidD_GetAttributes. Далее проверяются аттрибуты и если они соответствующие, то с устройством работают, если нет, то закрывают.
Записан
axel
Гость
« Ответ #20 : 25-06-2003 15:06 » 

Если публике интересно, напишу статью про HID драйвер и PIC контроллер. Кстати я все не сам придумал. посмотрите на usbcentral.com. Там какую то книжку рекламировали и были примеры кода из нее. Только вот ошибки там есть и некоторые даже трагично себя в деле показали  Жаль .
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #21 : 25-06-2003 15:26 » 

Цитата: axel
HID драйвер -  (Human Interface Driver) драйвер для устройств интерфейса с пользователем. Обычно в группу таких устр-в входят клавы, мыши, джойстики и т.д.  Можно создавать свои HID устр-ва и работать с ними через файловый доступ, т.е. CreateFile, ReadFile, WriteFile.


Оно конечно здорово, только вот как ты собираешься для не HID девайса загрузить над его PDO FDO, управляемый HID драйвером для USB. Система сама такую штуку делать не будет. Или ты сам как PnP менеджер отработаешь?
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #22 : 25-06-2003 15:30 » 

Цитата: axel
Если публике интересно, напишу статью про HID драйвер и PIC контроллер. Кстати я все не сам придумал. посмотрите на usbcentral.com. Там какую то книжку рекламировали и были примеры кода из нее. Только вот ошибки там есть и некоторые даже трагично себя в деле показали  Жаль .


Что за сайт usbcentral.com, пишут Domain for sale.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #23 : 25-06-2003 15:32 » 

Ну так что - ждем статью с объяснениями.
Записан

А птичку нашу прошу не обижать!!!
axel
Гость
« Ответ #24 : 25-06-2003 15:36 » 

Сайт наверное прекратил свое существование (может книжку всю раскупили  Улыбаюсь ?) А на счет не HID девайсов ответ такой: если оно не HID, то предполагает какой то свой стандарт обмена информацией, свой драйвер и т.д. и никчему на него HID взгромождать. да и не получится. Я то имел ввиду что если ты сам создаешь какую то поделку, и нужно чтобы она общалась с компьютером через USB, то можно ее сделать HID устройством, и облегчить себе жизнь не создавая драйвер для нее. Первоначальный вопрос обсуждения именно так проблему и ставил.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #25 : 25-06-2003 15:38 » 

Цитата: axel
Сайт наверное прекратил свое существование (может книжку всю раскупили  Улыбаюсь ?) А на счет не HID девайсов ответ такой: если оно не HID, то предполагает какой то свой стандарт обмена информацией, свой драйвер и т.д. и никчему на него HID взгромождать. да и не получится. Я то имел ввиду что если ты сам создаешь какую то поделку, и нужно чтобы она общалась с компьютером через USB, то можно ее сделать HID устройством, и облегчить себе жизнь не создавая драйвер для нее. Первоначальный вопрос обсуждения именно так проблему и ставил.


Ну тогда рассказывай как там что делали. А книжка в электронном виде есть?
Записан
axel
Гость
« Ответ #26 : 25-06-2003 15:44 » 

Ха Ха что рассказывать то? Статью я пообещал написать. Книжки в электронном виде нет конечно. Стали бы ее там выкладывать! Ее же продавали баксов за 30 примерно. Писать буду вечером или незнаю когда. а пока все внимание - работе что то я сегодня разболтался.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #27 : 25-06-2003 15:47 » 

Факт устройство свое  гонится поток реалтайм данных как пердставлять, дело мое, главное что поток жирный.
Записан

Да да нет нет все остальное от лукавого.
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #28 : 25-06-2003 15:48 » 

Цитата: PSD
Факт устройство свое  гонится поток реалтайм данных как пердставлять, дело мое, главное что поток жирный.


Если гарантия доставки не важна- тогда тебе изохронный драйвер нужен.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #29 : 25-06-2003 15:50 » 

А это что такое ?
Записан

Да да нет нет все остальное от лукавого.
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #30 : 25-06-2003 15:57 » 

Цитата: PSD
А это что такое ?


Гарантированная полоса пропускания без гарантии доставки, только девайс должен поддерживать такое.
Гарантируется полоса пропускания благодаря тому что изохронные запросы ставятся в очередь контроллера первыми.
Записан
axel
Гость
« Ответ #31 : 25-06-2003 16:07 » 

Если поток жирный то вообще то HID не очень то подходит, там все по прерываниям по моему. а вообще надо посмотреть. Для больших потоков bulk передачи рекомендуют использовать
Записан
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #32 : 25-06-2003 16:22 » 

Скорось передачи по bulk самая непредсказуемая и зависит от множества факторов. Например от производителности машины ну и т.д.
Записан

Megabyte be with you!
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #33 : 25-06-2003 16:26 » 

Цитата
Гарантированная полоса пропускания без гарантии доставки, только девайс должен поддерживать такое.


Ты имешь в виду тип передачи изохроник шины USB?
Записан

Да да нет нет все остальное от лукавого.
axel
Гость
« Ответ #34 : 25-06-2003 16:28 » 

А у меня с прерываниями в HID под XP странности приключились. В HID descriptor'е есть параметр polling interval т.е. интервал через который комп мониторит USB устройство. Под всеми ОС нормально, а под XP хост шлет запросы примерно 500 раз в секунду и плюет на этот параметр. кто-нибудь сталкивался с такой проблемой?
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #35 : 25-06-2003 16:29 » 

Ты б сначала рассказал по подробнее что и как делаешь - хотя бы тут. Раз уж статейка пока курит в сторонке Улыбаюсь
Записан

А птичку нашу прошу не обижать!!!
axel
Гость
« Ответ #36 : 25-06-2003 16:30 » 

Слишком долго рассказывать, т.к. нужно и про контроллер и про хост писать и про структуру HID. это ж не на форточках кататься......
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #37 : 25-06-2003 16:37 » 

Ну так что - ты ж предложил сам сделать раздел по контроллерам, статьи пообещал и все....

Жаль Я так не игрю (С) Карлсон, который живет на крыше.
Записан

А птичку нашу прошу не обижать!!!
axel
Гость
« Ответ #38 : 25-06-2003 16:44 » 

а я и не отказываюсь, только вот времени это сколько нибудь потребует.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #39 : 25-06-2003 17:17 » 

Ну естественно. но сообщеить о том, что решение принято надо бы.
Записан

А птичку нашу прошу не обижать!!!
p0et
Гость
« Ответ #40 : 28-06-2003 09:41 » 

Люди! Привет! А если у меня сильных проблем драйвер написать нет, зато я не знаю как в свое устройство цеплять к USB? Инфа есть у кого-нить? И по COM? Сразу предупреждение! Мне надо чтонить типа при приходе сигнала(какого?) такого-то у нас пошел пакет данных (что ето за пакет?) мы в ответ посылаем сигнал(Какой?) о принятии данных, мы хотим послать данные... :twisted:
Записан
Страниц: 1 2 [Все]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines