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

时间:2009-11-13 10:09:00

标签: embedded usb

我正处于需要USB连接的设备开发的早期阶段。设备必须至少作为传统串行端口出现,但如果它可以同时显示为大容量存储设备,它将非常有用。

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

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

3 个答案:

答案 0 :(得分:6)

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

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

是的,复合设备听起来很熟悉。我工作的项目没有使用任何第三方操作系统或USB库;它是飞思卡尔i.MX21 CPU的所有“裸机”代码。 Jan Axelson的USB CompletePacket-Master USB分析仪一样非常宝贵。

答案 1 :(得分:0)

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

我知道你可以同时使用这两个/dev/ttyUSB{0,1}

答案 2 :(得分:0)

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

只为你想要的每个'函数'提供一个接口描述符(显然你需要所有其他描述符与'function'一起使用),操作系统将整理所有复合设备的东西。

我建议你是否要进行任何甚至稍微严重的USB开发,你都会得到一个USB分析仪 - 你不仅可以分析自己的东西,还可以插入其他人的工具包,看看他们是如何做到的描述符......