9

我正在研究在 Linux 中与 USB 设备进行通信的方法,并且不希望编写 Linux 内核驱动程序。我知道 libusb 存在并且是一个可以工作的用户级库,但是我们的嵌入式设备不支持 usbfs(并且更改内核以添加支持真的很痛苦)。

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

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

请提出想法和建议。

跟进:

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

4

1 回答 1

7

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

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

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

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

于 2012-03-04T04:24:01.270 回答