阅读:2470回复:9
USB带宽疑问
我在一个USB端口挂了十多个设备(级连了HUB),可一个设备就要占用11%的带宽(协议是否如此),剩下的设备便无法找开,如何是好?
|
|
沙发#
发布于:2003-03-03 20:38
本来就是如此,每个设备需求带宽不同的,硬件设计时尽量少用
带宽比较好,即需要很大,也最好提供一个软件接口,使用户在不使用设备的时候可以选折调整该设备带宽为极少(0~1%)。但是一些占用带宽较高设备如流类设备等,估计计算机就只能带动两~3个。 [编辑 - 3/3/03 by xyzxian] |
|
|
板凳#
发布于:2003-03-03 20:45
一个设备的管道(PIPE)越少,其占用的带宽就越少吗?
如果是这样,一个PIPE大概占用多少带宽? |
|
地板#
发布于:2003-03-03 20:52
另外,如果我用一张USB2.0的主控制器,这个问题是否会得到一定程度上的解决?
每个设备所占用的带宽如何查看? [编辑 - 3/3/03 by hswqs] |
|
地下室#
发布于:2003-03-03 21:01
一般来说,pipe越少硬件需求的带宽就少。
但是对于用户来说,从OS这个角度来看,你的设备(除非很少很特殊很复杂的情况)的control,interrupt,bulk pipe通信时都是使用系统保留的11%左右的带宽就OK了。但是ISO PIPE时就肯定需要很大带宽,数据量大小一般的(大约28Mb/s),也就是需要15%以上就OK |
|
|
5楼#
发布于:2003-03-03 21:33
PIPE带宽的使用是和每个数据包尺寸有关系的,一般每个ENDPOINT有很多ALTERNATE SETTING可供选择,每个ALTERNATE SETTING的数据包尺寸是不一样的,包尺寸越大占用带宽越多,在一个ENDPOINT不用时,把它的ALTERNATE SETTING设置为包尺寸为0的那个,就不会再占用带宽。
|
|
6楼#
发布于:2003-03-03 22:31
谢谢二位!
如果用一张USB2.0的主控制器,这个问题是否会得到一定程度上的解决? 每个设备所占用的带宽如何查看? 请帮忙解答。 |
|
7楼#
发布于:2003-03-04 10:30
补充一下liutang的回答。
对于Alternate Setting,一般是对应于ISO 模式来说的。因为根据USB协议,ISO模式每次传送的包的最大数据量是1023个字节。但是有时候用不了这么多,就可以通过设置 Alternate Setting 来减少每个包的字节数,这样做的同时也减少了带宽的占用。 对于其它3种工作方式(Control,interrupt,bulk),根据USB协议,他们每个包的数据量是固定的,不能通过设置 Alternate Setting 来降低带宽的占用。 我个人认为,USB2.0 和 USB1.1 的区别主要在于传送速率,对于带宽的分配以及解决带宽占用好像区别不大。 至于查看每个设备所占用的带宽,不知道有没有专门的仪器设备,用软件的话,看看带宽总的占用应该可以,看每个设备各自的好像比较难实现。 |
|
8楼#
发布于:2003-03-04 13:46
赞同楼上的,补充一点,ISO时从底层的视点看是通过set alt setting来改变数据包的大小,从而改变设备占用带宽,但是
并不可以为了减小占用带宽而任意调整数据包的大小,这需要 验证才行,因为减小数据包大小同时也意味着数据传输速率的降低, 这对于ISO设备来说很重要。 |
|
|
9楼#
发布于:2003-03-05 00:01
的确,我用set alt setting并未减小带宽,始终占用了11%。
我现在只能在需要操纵设备时才打开,真是麻烦。 在出现带宽警告时,会弹出一个窗口,里面显示了每个设备所占用的带宽,不知这个窗口可以用什么命令打开,在任务管理器里所显示的进程是EXPLORE。 |
|