[英]How to determine the IRQ number for a USB device?
我是驾驶员开发的新手。 但是,我购买了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设备应使用的数字呢?
如果您想了解有关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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.