我正在研究在 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 设备编写自定义驱动程序。
吉姆,我不认为你可以逃避编写驱动程序的需要,而只需设法读取 USB 文件/dev
。因为谁定义了当你做某件事时应该发生什么read()
在 USB 设备文件上?谁定义了当您调用时应启动什么操作sysioctl()
? 你的司机!换句话说,设备文件本身没有任何能力,除非它们得到底层驱动程序的支持。事实上,您可以将设备文件视为底层驱动程序的抽象!所以,没有驱动程序,没有使用设备文件:(
我建议您阅读以下有关如何编写驱动程序并了解 USB 内部结构的文章 -
http://www.linux-usb.org/USB-guide/c15.html
http://www.linuxjournal.com/article/4786(有点过时了)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)