访问Linux / dev / USB作为标准文件以与USB设备通信

时间:2012-03-02 20:58:08

标签: linux linux-kernel usb kernel libusb

我正在研究如何在Linux中与USB设备进行通信,而不愿意编写Linux内核驱动程序。我知道libusb存在并且是一个可以工作的用户区域库,但我们的嵌入式设备不支持usbfs(并且真的很难改变内核以添加支持)。

所以我的问题基本上是这样的:通过直接读取和写入/ dev / USB或与USB设备对应的udev文件来与USB设备进行通信是否可行/可行,从而避免了对自定义Linux驱动程序的需求和usbfs?

我希望只要在/ dev / USB或udev设备文件打开后直接通过文件类型的读/写命令读/写协议包,就可以使用USB设备协议进行通信。

请提出想法和建议。

关注:

由于我需要与之通信的USB设备是USB HID类设备,我可以通过直接读/写/ dev / hidraw0(或相应的/ dev /)来使用libudev和标准的Linux USB HID RAW驱动程序hidraw设备)。没有必要为简单的USB HID设备编写自定义驱动程序。

1 个答案:

答案 0 :(得分:5)

Jim,我认为您无法摆脱编写驱动程序的需要,只是设法在/dev中读取USB文件。因为谁定义了在USB设备文件上执行read()时应该发生什么?谁来定义在您调用sysioctl()时应该启动哪些操作? 您的驱动程序!换句话说,在底层驱动程序支持之前,设备文件本身无法执行任何操作。实际上,您可以将设备文件视为底层驱动程序的抽象!所以,没有驱动程序,没有使用设备文件:(

我建议你阅读以下有关如何编写驱动程序以及了解USB内部结构的文章 -

  1. http://www.linux-usb.org/USB-guide/c15.html

  2. http://www.linuxjournal.com/article/4786(略显过时)