簡體   English   中英

在IRQ7上並行端口IRQ處理程序注冊

[英]Parallel port IRQ Handler registration on IRQ7

我用IRQ處理程序編寫了一個並行端口驅動程序的設備驅動程序。

現在,首先我必須訪問IRQ7,因為我的並行端口對此產生了中斷(我已經在/ proc / interrupts上看到了)。

現在,每當我嘗試請求irq7時,我面臨的問題就是我的request_irq()函數失敗。

另外,我的貓/ proc / interrupt看起來像:

CPU0 CPU1
0:98 0 IO-APIC邊沿計時器
1:11764 2178 IO-APIC邊緣i8042

3:2 0 IO-APIC邊緣
4:2 0 IO-APIC邊緣
7:8 0 IO-APIC邊緣parport0

8:1 0 IO-APIC邊緣rtc0

9:0 0 IO-APIC-fasteoi acpi

我不知道什么是parport0。 按照我的想法,由於這個parport0,我的request_irq失敗了。

我讀過:'parport'代碼在Linux下提供並行端口支持。 這包括在多個設備驅動程序之間共享一個端口的能力。 您可以將參數傳遞給parport代碼以覆蓋其對硬件的自動檢測。 如果要使用IRQ,這尤其有用,因為通常無法成功自動探測這些IRQ。 默認情況下,即使可以對其進行探測,也不使用IRQ。 這是因為有很多人在其並行端口和聲卡或網卡上使用相同的IRQ。

那么,如何在irq7上注冊我的中斷處理程序,以便可以管理來自並行端口的中斷?

您已經在系統上安裝了並行端口驅動程序。 這就是內核無法為驅動程序分配irq的原因。 首先,卸載當前的並行驅動程序,然后重試。

如果您檢查request_irq的返回碼,它將很有幫助。 它會告訴您失敗的原因。 如rakib所述,很有可能安裝了parport0(默認驅動程序)。 您可以嘗試注冊SHARED IRQ處理程序-該方法應該起作用:大多數IRQ是可共享的(SA_SHIRQ標志)。 還請記住不要將NULL指針作為設備ID傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM