我正处于需要USB连接的设备开发的早期阶段。设备必须至少作为传统串行端口出现,但如果它可以同时显示为大容量存储设备,它将非常有用。
这是可能的,还是设备需要在大容量存储设备和通信设备之间切换,以便一次只能做一件事?
** [编辑] **我可能有点快速解决问题; this建议使用 USB复合设备框架确实可以完成。如果有人对此有任何经验并且可能有一些提示或指针,使用了什么平台,以及他们可能使用过的任何第三方工具或堆栈,我仍然会感兴趣。
答案 0 :(得分:6)
是的,您可以将同一设备显示为两个(或更多)逻辑设备。
几年前我为一个项目做过这个,但现在已经有一段时间了,我已经忘记了细节。我认为我的大容量存储,视频捕获和串口都同时运行。是的,复合设备听起来很熟悉。我工作的项目没有使用任何第三方操作系统或USB库;它是飞思卡尔i.MX21 CPU的所有“裸机”代码。 Jan Axelson的USB Complete和Packet-Master USB分析仪一样非常宝贵。
答案 1 :(得分:0)
是的,这是可能的。例如。我有一个用于UMTS(3G移动)连接的华为E220 USB记忆棒,它有四个接口:两个是供应商特定的(内核驱动程序最终将它们映射为/dev/ttyUSB{0,1}
),两个是大容量存储。
我知道你可以同时使用这两个/dev/ttyUSB{0,1}
。
答案 2 :(得分:0)
你不必在这里做任何复杂的事情,这只是让描述符正确的问题。
只为你想要的每个'函数'提供一个接口描述符(显然你需要所有其他描述符与'function'一起使用),操作系统将整理所有复合设备的东西。
我建议你是否要进行任何甚至稍微严重的USB开发,你都会得到一个USB分析仪 - 你不仅可以分析自己的东西,还可以插入其他人的工具包,看看他们是如何做到的描述符......