[英]USB software loopback device on Linux
我需要编写一个客户端服务器应用程序,其中一个微型服务器位于USB小工具上,并与主机上的客户端应用程序进行通信。
我以前没有做过这种事情,但是我已经做过Web应用程序,通常,它们都是使用lo
回送网络接口在本地计算机上开发和调试的。 这可能影响了我的思维方式,我正在寻找一种在计算机上模拟USB主机和小工具的方法,以便在深入研究实际小工具并获得产品之前,可以在PC上完全构建应用程序的两端。事情进行。
这是正确的方法吗? 我意识到USB协议是非对称的,因此在这里找到了对此的一些参考,但这似乎是最自然的解决方法。
如果这是正确的方法,那么我该如何从这样的事情开始,还有其他人意识到我可能偶然发现的任何潜在问题吗?
我从谷歌搜索找到的参考文献。 有Linux内核模块(也是我的Ubuntu安装的一部分),它们似乎能够模拟主机和小工具(分别是dummy_hcd和gadgetfs)。 我的想法是简单地拥有
Host application (client) on PC <-> device file 0 <-> Loopback device <-> device file 1 <-> Gadget application (server) also on PC (will be moved to gadget).
不要想太多。
您无需看中“回送”设备。
您对模拟USB主机是正确的。 您无需创建精美的USB回送设备或类似的任何愚蠢的东西。
设计您的客户。
设计一个“通用” USB接口层,该层将简单地将请求传递给真实的USB设备驱动程序。 暂时不要编码。
编写一个模拟主机而不使用真实USB设备的USB接口层。 它具有与通用USB接口相同的接口。 这是一个适当的子类。 但是,它实际上并没有使用USB设备驱动程序。 相反,它的行为就像是USB设备上的Web服务器。
显然,这不是一个完整的模拟。 足以测试您的客户。 客户端必须与之交互的每个关键功能都以足够确定的响应表示,您可以确定客户端可以正常工作。
当您的客户端正常工作时,对真正的USB接口层进行编码,该层实际上将请求从客户端传递到设备。 这是您将在生产中使用的,并与真实的USB设备进行集成测试。
您的客户端软件现在具有两种配置-全部在软件中处理:
真正的驱动程序-用于生产。
模拟驱动程序-用于单元测试。
它不应该比这更复杂。 而且,您现在可以使用模拟主机对整个客户端进行单元测试。
虽然您正在寻找的技术上可行,但我想说这很难实现,因为它涉及创建可模拟真实USB设备的USB驱动程序。
我可以推荐几种替代方法。 首先,您可以选择使用虚拟COM端口通过USB进行通信。 可以使用简单的串行接口开发和测试主机软件。 另一个解决方案是首先创建业务逻辑部分,使用软件模拟器对其进行测试,然后再移至硬件部分。
最后,如果您还不了解它,请看一下libusb库。
我建议您使设备看起来像普通的USB网络适配器。 然后服务器就是Web服务器,用户不需要安装软件。 这样一来,在您的PC上进行测试就和以前一样。
或使其看起来像USB串行设备,并在其上放置一个SLIP链接(这很容易)
如果您真的必须有一个怪异的协议,请像一个微芯片USB PIC套件中的一个一样获取USB开发人员套件。 然后对目标系统进行编程并从您的主机PC运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.