我正在研究如何在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设备编写自定义驱动程序。
答案 0 :(得分:5)
Jim,我认为您无法摆脱编写驱动程序的需要,只是设法在/dev
中读取USB文件。因为谁定义了在USB设备文件上执行read()
时应该发生什么?谁来定义在您调用sysioctl()
时应该启动哪些操作? 您的驱动程序!换句话说,在底层驱动程序支持之前,设备文件本身无法执行任何操作。实际上,您可以将设备文件视为底层驱动程序的抽象!所以,没有驱动程序,没有使用设备文件:(
我建议你阅读以下有关如何编写驱动程序以及了解USB内部结构的文章 -