gpt4 book ai didi

embedded - Linux 上的 USB 软件环回设备

转载 作者:行者123 更新时间:2023-12-01 01:57:52 24 4
gpt4 key购买 nike

我需要编写一个客户端-服务器应用程序,其中一个微型服务器位于 USB 小工具上,并与主机上的客户端应用程序进行通信。

我以前没有做过此类事情,但我做过网络应用程序,通常它们都是使用 lo 环回网络接口(interface)在本地计算机上开发和调试的。这可能影响了我的思维方式,我正在寻找一种在我的机器上模拟 USB 主机和小工具的方法,以便我可以在我的 PC 上完全构建应用程序的两端,然后再深入实际的小工具并获得事情进展。

这是正确的做法吗?我意识到 USB 协议(protocol)是不对称的,并在 here 上找到了一些对此的引用但这似乎是最自然的方式。

如果这是正确的方法,我该如何开始这样的事情?是否存在其他人意识到的我可能会遇到的潜在问题?

更新

我之前通过谷歌搜索找到的引用资料。有一些 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 环回设备或任何类似的愚蠢行为。

  1. 设计您的客户端。

  2. 设计一个“通用”USB 接口(interface)层,它可以简单地将请求传递到真正的 USB 设备驱动程序。暂时不要编写此代码。

  3. 编写一个 USB 接口(interface)层来模拟主机,而不是使用真正的 USB 设备。它与通用 USB 接口(interface)具有相同的接口(interface)。这是一个适当的子类。然而,它实际上并不使用USB设备驱动程序。相反,它的行为就像是USB 设备上的 Web 服务器。

    显然,这不是一个完整的模拟。这足以让您测试您的客户端。客户端必须与之交互的每个关键功能都用足够的 jar 头来表示您确定客户有效的答复。

  4. 当你的客户端工作时,编写真正传递请求的真正的USB接口(interface)层从客户端到设备。您将在生产中使用它并进行集成使用真实的USB设备进行测试。

您的客户端软件现在有两种配置 - 全部在软件中处理:

  • 真正的驱动力——生产。

  • 模拟驱动程序——用于单元测试。

它不应该比这更复杂。而且,您现在可以使用模拟主机对整个客户端进行单元测试。

关于embedded - Linux 上的 USB 软件环回设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2005709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com