Доступ к Linux / dev / USB в качестве стандартных файлов для связи с USB-устройством - PullRequest
7 голосов
/ 03 марта 2012

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

Так что мой вопрос в основном таков: возможно ли / желательно ли общаться с USB-устройством, непосредственно читая и записывая в / dev / USB или файл udev, соответствующий USB-устройству, таким образом, обходя необходимость в специальном драйвере Linux а usbfs?

Я надеюсь, что можно обмениваться данными с использованием протокола устройств USB, просто читая / записывая пакеты протокола непосредственно с помощью команд чтения / записи файлового типа, как только откроется файл устройства / dev / USB или udev.

Мысли и предложения, пожалуйста.

СЛЕДУЙТЕ ЗА:

Поскольку USB-устройство, с которым мне нужно было поговорить, является устройством класса USB HID, я смог использовать libudev и стандартный драйвер Linux HID RAW для Linux, прочитав / записав напрямую в / dev / hidraw0 (или соответствующий / dev / устройство hidraw). Нет необходимости писать собственный драйвер для простого USB HID устройства.

1 Ответ

5 голосов
/ 04 марта 2012

Джим, я не думаю, что вы избавитесь от необходимости писать драйвер и просто сможете прочитать файл USB в /dev.Потому что, кто определяет, что должно произойти, когда вы делаете read() в файле устройства USB?И кто определяет, какое действие должно быть инициировано, когда вы вызываете sysioctl()? Ваш драйвер! Другими словами, файлы устройства сами по себе не способны ни на что, пока они не поддерживаются соответствующими драйверами.Фактически, вы можете рассматривать файлы устройств как абстракцию основного драйвера!Таким образом, ни драйвер, ни использование файла устройства: (

Я предлагаю вам пройти следующие статьи о том, как написать драйвер, а также понять внутреннее устройство USB-

  1. http://www.linux -usb.org / USB-гид / c15.html

  2. http://www.linuxjournal.com/article/4786 (слегка устаревший)

...