[英]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.