【问题标题】:Interrupts caused by USB Host ControllerUSB 主机控制器引起的中断
【发布时间】:2017-09-08 14:29:02
【问题描述】:

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

有人熟悉这个吗?


****我的规格:************* 带有 Ubuntu 14.04.4 TLS 的 Jetson Tegra K1 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/输入/输入8 [83.700372] hid-multitouch 0003:0EEF:C000.0007: 输入:USB HID v2.10 指针 [eGalax Inc. eGalaxTouch EXC3000-1470-46.00.00] 在 usb-tegra-ehci.2-1.2.3/input0 lsusb - v: Bus 002 Device 012: ID 0eef:c000 D-WAV Scientific Co., Ltd bInterfaceClass 3 人机接口设备 bInterfaceSubClass 1 引导接口子类 bInterfaceProtocol 2 鼠标 端点描述符: b长度 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bm属性 3 传输类型中断 同步类型 无 使用类型数据 wMaxPacketSize 0x0040 1x 64 字节 b间隔

【问题讨论】:

    标签: usb ubuntu-14.04 interrupt interrupt-handling


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 亲爱的@Shaibal - 你对用户空间应用程序是什么意思? ehci-tegra.c 中提到的 DMA 内存映射?
    • 对于用户空间,我指的是 URB 中的缓冲区,它被 DMA 缓冲区覆盖。 URB 来自用户空间应用程序。由于我们需要连续的物理内存用于 DMA,缓冲区地址被替换为 ehci-tegra.c 中分配的 dma 内存。
    猜你喜欢
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多