设备和主机之间的USB交互(端点 - 缓冲区 - HostController)

时间:2017-04-06 22:38:20

标签: usb buffer interrupt endpoint

我所知道的:

  • USB设备(鼠标)具有中断IN端点,其中存储到主机的传出数据。
  • 主机轮询此中断IN端点并将数据写入缓冲区。

我在哪里可以找到这个缓冲区?我在主板的技术手册(USB ...控制器......缓冲区)中很难找到它,但我找不到这个寄存器。

HostController使用自己的缓冲区来存储来自设备的Endpoint IN数据,还是Host Conroller将它映射到其他寄存器?

如果有动作(例如鼠标移动或点击),USB主机控制器是否会导致中断? 我在哪里可以找到这个存储/缓冲的数据?

我正在使用ubuntu并查看/proc/interrupts我可以找到带有IRQ连接USB设备(鼠标)的EHCI_HCD:USB2控制器......

也许任何人都可以帮助我理解这个usb Enpoint => HostController =>中断---机制。

非常感谢你!

1 个答案:

答案 0 :(得分:0)

我在哪里可以找到这个缓冲区?我在主板的技术手册(USB ...控制器......缓冲器)中很难找到它,但我找不到这个寄存器。

  

此缓冲区来自URB形式的HID类驱动程序。所以它是一个软件缓冲区。

HostController使用自己的缓冲区来存储来自设备的Endpoint IN数据,还是Host Conroller将它映射到其他寄存器?

  

正如我之前所说,主机控制器中没有用于存储数据的寄存器。主机控制器使用HCD传递的软件缓冲区。

如果有动作(例如鼠标移动或点击),USB主机控制器是否会导致中断?我在哪里可以找到这个存储/缓冲的数据?

  

没有。不会有任何中断。您将轮询中断端点以获取状态。主机控制器使用中断来通知完成传输,即在您的情况下为中断IN传输。

为清楚起见,请参阅传输描述符的下图。主机控制器使用“缓冲区指针”分别在IN和OUT事务的情况下存储或检索数据。要了解有关传输描述符的更多信息,请阅读EHCI规范。

enter image description here