【问题标题】:Accessing Linux /dev/USB as standard files to communicate with USB device将 Linux /dev/USB 作为标准文件访问以与 USB 设备通信
【发布时间】:2012-03-21 08:49:30
【问题描述】:

我正在研究在 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 设备编写自定义驱动程序。

【问题讨论】:

    标签: linux linux-kernel usb kernel libusb


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢帕万。这就是我想的答案。继续使用 libusb 应该不会太难。
    • USB 驱动程序是一个有趣的部分!我一直很想在这上面写点东西。很想知道你在这方面的进展,吉姆!
    • Pavan,我设法获得了一个概念验证工具,可以使用 libusb 库与我的 USB 设备进行通信。适用于 HID 类设备。再次感谢您。
    猜你喜欢
    • 2012-12-19
    • 1970-01-01
    • 2012-04-28
    • 2013-04-07
    • 2017-08-07
    • 2018-02-17
    • 2015-04-02
    • 1970-01-01
    相关资源
    最近更新 更多