代码之家  ›  专栏  ›  技术社区  ›  Clifford

是否可以将单个物理USB设备显示为两个单独的设备类?

  •  3
  • Clifford  · 技术社区  · 15 年前

    我正处于需要USB连接的设备开发的早期阶段。作为最低要求,该设备必须显示为传统串行端口,但如果它可以同时显示为大容量存储设备,则会很有用。

    这是可能的,还是设备需要在大容量存储和通信设备之间进行切换,以便一次只处理一件事?

    **[编辑]**我可能有点快就开始提问了; this 建议确实可以使用 USB复合设备框架 . 如果有人对此有任何经验,并且可能有一些提示或指针,使用了什么平台,如果他们使用了任何第三方工具或堆栈,我仍然感兴趣。

    3 回复  |  直到 15 年前
        1
  •  6
  •   Greg Hewgill    15 年前

    是的,您可以使同一个设备显示为两个(或更多)逻辑设备。

    几年前我为一个项目做了这个,但是已经有一段时间了,我忘记了细节。我想我的大容量存储、视频捕获和串行端口都同时运行。

    是的,复合设备听起来很熟悉。我从事的项目没有使用任何第三方操作系统或USB库;它都是飞思卡尔i.mx21 CPU的“裸机”代码。Jan Axelson USB Complete 是无价的,就像 Packet-Master USB分析仪。

        2
  •  0
  •   ndim    15 年前

    是的,这是可能的。例如,我有一个华为E220 U盘用于UMTS(3G移动)连接,它有四个接口:两个是特定于供应商的(内核驱动程序最终将它们映射为 /dev/ttyUSB{0,1} )二是大容量存储。

    我知道你可以用这两个 /dev/ttyub_0,1_ 同时。

        3
  •  0
  •   Will Dean    15 年前

    您不必在这里做任何复杂的事情,这只是得到正确的描述符的问题。

    只需为您想要的每个“函数”提供一个接口描述符(显然,您将需要与该“函数”一起使用的所有其他描述符),操作系统将整理出所有的复合设备内容。

    我建议,如果你要做一些甚至是稍微严肃的USB开发,你可以得到一个USB分析仪-不仅可以分析你自己的东西,而且你还可以插入其他人的工具包,看看他们是如何做他们的描述符的…