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