我是驱动程序开发的新手。但是,我购买了一个 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
我无法弄清楚如何找到中断 (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 设备的这个数字应该是什么?