LINUX.ORG.RU

Вопрос по созданию ЮСБ драйвера


0

0

Привет всем! Помогите советом. В програмировании под Линукс я новичок. А тут еще задача подвалила написать драйвер для юсб девайса. У девайса 4 конечных точки. Одна CONTROL,2 BULK, 1 INTERUPT. Нада читать в хост с INTERUPT_IN и с BULK_IN. Писать в BULK_OUT. Как я понимаю связать уровень ядра(драйвера) с пользовательским(прикладная прога) можно через вызовы write(),read(). А сам драйвер подключает к этим вызовам прописаную в нем функцию чтения/записи. Таким образом я могу подключить допустим 2 точки BULK, одну к чтению, другую к записи. Но остается INTERUPT_IN. А с прикладной программы мне нада точно отсылать запрос или на INTERUPT_IN или на BULK_IN, чтобы с них прочитать. Ну и соответственно знать что же я читаю INTERUPT_IN или BULK_IN, а не общую кашу того что они прислали(это в случае прописки их обеих на read()), так как я не знаю сколько байт мне должно прийти. Как решить этот вопрос? Можна ли использовать както ioctl? Или нет другого пути как кроме нескольких конфигураций/интерфейсов для девайса? Надеюсь я понятно обяснил проблему, если нет я постараюсь уточнить, если будут вопросы.

anonymous

А разве нельзя dev создать и через него работать? У меня /dev/bus/usb. И эту вешь вроде как делает usbbus, или ещё какая команда (а может изначально было). Главное, что бы устройство в lsusb было.

Что такое эти точки - понять не смог. Разве там не четыре проводка - Data+, Data-, +5, Grnd?!

Вообщем, сам с этим не сталкивался.

anonymous_num_0
()

Порекомендую посмотреть в сторону libusb.

Slavaz ★★★★★
()

по-идее разбор протокола должен происходить внутри ядрового драйвера. если таки хочется в юзерспейсе, то смотреть на libusb. промежуточные варианты: нарисовать несколько char device, нарисовать аттрибуты в sysfs.

generatorglukoff ★★
()
Ответ на: комментарий от generatorglukoff

Если производительность не сильно важна - то libusb, иначе делать ядерный драйвер. В сурсах есть пример простого драйвера.

krum
()
Ответ на: комментарий от anonymous

Читал я 13 часть. Там вскользь упоминалось, но примера четкого нету. Там в основном про то как писать для одного интерфейса и одной конфигурации. Если вдруг кто сам писал чтото похожее, было бы интересно почитать как.

anonymous
()
Ответ на: комментарий от generatorglukoff

>по-идее разбор протокола должен происходить внутри ядрового драйвера. >если таки хочется в юзерспейсе, то смотреть на libusb. промежуточные >варианты: нарисовать несколько char device, нарисовать аттрибуты в >sysfs. >generatorglukoff * (*) (08.11.2008 3:17:15)

А можно поподробней. Как это нарисовать несколько чар девайсов?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.