如何确定USB设备的IRQ号码?

时间:2013-05-18 15:30:07

标签: linux usb driver interrupt irq

我是司机开发的新手。但是,我购买了一个OSR USB FX2学习套件,它带有Windows内核/用户模式驱动程序的示例代码。但是,我正在Linux(Ubuntu 12)中编写驱动程序。我已成功发送控制命令并从设备接收控制命令的返回。我也能够通过设备支持的BULK OUT / IN端点成功发送和读取数据。

我还有一个实验尚未完成。该设备具有以下端点:

1. BULK (OUT) --> Address 0x06
2. BULK (IN)  --> Address 0x88
3. INTERRUPT (IN) --> Address 0x81

我无法弄清楚如何找到 INTERRUPT(IN)端点的 IRQ编号。我了解如何使用以下方法安装IRQ处理程序:

int request_irq (unsigned int irq,
                 irq_handler_t handler,
                 unsigned long irqflags,
                 const char * devname,
                 void * dev_id);

并使用正确的函数原型编写处理程序。但是,我想知道如何找到设备正在中断的IRQ线路(IRQ号码)?也就是说,如何确定上面 request_irq 函数中参数 unsigned int irq 的值应该是多少?我通读了“Linux设备驱动程序,第三版”一书,了解并行端口的IRQ编号。但是,这对USB是如何工作的呢?我将如何探测或找出USB设备应该是什么数字?

1 个答案:

答案 0 :(得分:1)

你不需要处理写入USB设备驱动程序的中断,如果你想要一个好的教程可以看看

http://www.linuxforu.com/2011/10/usb-drivers-in-linux-1/

这是学习如何编写USB驱动程序的绝佳起点;

如果你有特定的问题;发布它们我们会看到它是怎么回事:)

编辑

您可以使用platform_get_irq或platform_get_irq_byname来获取设备的irq。

编辑2:

我还指出http://lwn.net/images/pdf/LDD3/ch10.pdf为您的观看乐趣:-)向您展示如何检索分配给设备的IRQ。