我是司机开发的新手。但是,我购买了一个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设备应该是什么数字?
答案 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。