我需要在Windows 7主机和Linux设备之间建立USB通信以进行数据传输。我能够在设备上编译Linux内核以将Gadget Zero驱动程序包含在内核中(而不是作为可加载模块--Linux版本3.0.15)。我的项目有一些要求,这也解释了为什么我选择Gadget Zero:USB linux小工具零驱动程序与Windows主机通信
1)在Windows 7主机上,必须使用内核模式驱动程序通过USB连接进行通信以发送和接收批量数据。 (速度并不重要,一次不会有很多数据)。
2)在linux设备上,除了通过USB链接轻松发送和接收数据外,USB端没有要求。接收到的数据最终将被“解组”,以调用另一个内核模块中的函数(以及将这些响应打包并发送回主机)。 3)多个linux设备将连接到主机,因此需要简单的方法来枚举连接的设备并与它们进行通信。
因此,由于要求,我决定对小工具系列。我在通过Win 7主机中的内核模式(KMDF)中的虚拟COM端口发送和接收数据时遇到严重问题。 WinUSB似乎不想打开我的连接设备(我在VS2012中使用了KMDF windows模板中的USB驱动程序)另外,在linux端的小工具串行驱动程序中,我找不到数据收到和发送的功能。另外,由于某种原因,任何在linux设备上收到的数据似乎都会回显给主机。 (并且为了测试这一点,我在Windows中编写了一个简单的用户模式应用程序,这对我的项目来说是不允许的)。
Gadget Zero,它在linux上显得简单得多。我可以将USB电缆插入Win7主机,我可以让设备出现在设备管理器中。但是,我又遇到了通过链接进行沟通的问题。小工具零有两个批量端点,所以这不应该是一个问题。当然,有人使用Gadget Zero在Windows主机和Linux设备之间进行数据通信。使用Gadget Zero,应该很容易枚举连接的Linux设备并与它们进行通信。
诀窍是保持Windows端通信在内核模式下。有人可能用小工具零,Windows 7 KMDF和一些示例源代码指向正确的方向吗?我很难相信之前没有人做过这件事,因为我的网络搜索量并不多。 (主要是用Gadget Serial的用户模式解决方案)。
谢谢!