2011-01-27 1021 views
4

为什么USB使用轮询机制而不是中断来检测设备?阅读在这个论坛 ,如果事件是USB轮询机制

  1. 同步(即你知道什么时候期待它的小窗口内)
  2. 不紧急(即一个缓慢的轮询间隔有没有不良影响)
  3. 频繁(即大多数的轮询周期中创建一个“重灾区”)

然后我们可以使用轮询,但在USB的情况下,它是不那么频繁中断机制可以 得到更好的利用。

感谢您的回复, 查希尔

+0

你将不得不指定你的平台。例如,在STM32器件上,来自主机的轮询请求在中断中处理。 – leppie 2011-01-27 06:28:14

回答

4

有没有办法在同一方式与其他硬件中断USB设备“中断”的主控制器。 USB确实支持中断传输方法,但实际上通过轮询1来实现,而且可以实现的延迟大约为1毫秒,但最终受主机性能的限制。

你问

为什么USB轮询机制,而不是中断检测设备?

嗯,其中一个原因是USB协议在通常的硬件意义上根本不支持中断,最有可能使协议更简单。例如,如果某个设备想要解释正在进行的传输,则必须以某种方式发出信号,或者通过破坏现有的传输,或者必须将额外的信号线添加到整个系统中。用硬件快速轮询总线对于大多数类型的设备来说足够快。

请注意,检测新设备时,建议进行轮询的所有三点都会失败。事实上,我们永远不知道何时会期望在总线上出现一个新的USB设备(#1),它很少发生(#3),并且在设备不活跃时,立即检测它并不是优先事项(#2)。为什么要浪费时间和精力检查不太可能发生的事件?