我是驾驶员发展新手。 但是,我购买了一个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
我无法弄清楚如何findINTERRUPT(IN)端点的IRQ号码 。 我明白如何使用以下方法安装IRQ处理程序:
int request_irq (unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char * devname, void * dev_id);
并用正确的函数原型编写处理程序。 但是,我想知道如何find设备中断的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。