2017-04-12 91 views
0

如果我使用带有中断端点(鼠标/ KBD /触摸屏)的USB设备,主机控制器通过轮询该端点从端点获取数据。 所以在Linux中这个管道被称为URB(USB Request Block)...并且这个URB由主机控制器启动。因此,数据由主控制器收集 - 现在,我失去了路径。 我认为数据被缓存到内存,也许是通过dma控制器(不确定)...并且主机控制器必须向中断控制器注册中断,以便内核可以处理来自USB设备的中断。 哪个驱动程序向PIC注册中断?数据在主控制器轮询时存储在哪里?由USB主机控制器引起的中断

有人对此很熟悉吗?


****我的规格:************* 特森的Tegra K1与Ubuntu 14.04.4 TLS Egalax USB触摸屏 - USB HID设备

dmesg:输入:eGalax Inc. eGalaxTouch EXC3000-1470-46.00.00 as /devices/platform/tegra-ehci.2/usb2/2-1/2-1.2/2-1.2.3/2-1.2.3: 1.0/input/input8 [83.700372] hid-multitouch 0003:0EEF:C000.0007:usb-tegra-ehci.2- 1.2.3/input0 lsusb - v: Bus 002 Device 012:ID 0eef:c000 D-WAV Scientific Co.,Lt d bInterfaceClass 3人机接口设备 bInterfaceSubClass 1引导接口子类 bInterfaceProtocol 2鼠标 端点描述符: bLength 7 bDescriptorType 5 bEndpointAddress端点0×81 EP 1 IN bmAttributes 3 传输类型中断 同步类型无 用法类型数据 wMaxPacketSize 0x0040 1x 64字节 b间隔

回答

0

哪个驱动程序向PIC注册中断?

tegra平台的EHCI驱动程序注册中断。只需在“drivers/usb/host”中引用文件ehci-tegra.c即可。您可以为tegra平台添加调试打印和重新编译,并且将构建此文件。

主控制器轮询时存储的数据在哪里?

数据肯定存储在RAM中。而缓冲区地址实际上是由用户空间应用程序设置的。

+0

尊敬的@Shaibal - 您对用户空间应用有何意义?如ehci-tegra.c中所述的DMA内存映射? – fetteotter

+0

在用户空间中,我指的是被DMA缓冲区覆盖的URB中的缓冲区。 URB来自用户空间应用。由于我们需要连续的物理内存用于DMA,所以缓冲区地址由ehci-tegra.c中分配的dma内存替代。 – Shaibal