關於Linux2 6中斷的一些記錄

2021-06-16 04:47:01 字數 1168 閱讀 1602

1. 中斷向量和中斷號(中斷線)

中斷向量是從cpu角度規定的中斷訊號劃分;中斷號是pic引腳號

2. 幾種異常

故障,陷阱,中止

3. 中斷描述符表idt

異常與中斷發生時,都需要到idt中查詢相關資訊,以找到對應的處理程式以及其他動作。需要注意的是,保護模式下發生許可權提公升時,中斷穿越的是中斷門,而異常穿越的是陷阱門。二者的區別是:當cpu穿越中斷門時,是自動關中斷的(清除eflags裡的if標誌位[cli],在進入do_irq函式後會開啟中斷[sti]);而穿越異常門則不會。

4. 8259a pic的基本原理 

「中斷遮蔽暫存器」(interrupt mask register,簡稱imr)用於遮蔽8259a的中斷訊號輸入,每一位對應乙個輸入。當imr中的bit[i](0≤i≤7)位被置1時,相對應的中斷訊號輸入線iri上的中斷訊號將被8259a所遮蔽,也即iri被禁止。 

當外設產生中斷訊號時(由低到高的跳變訊號,80x86系統中的8259a是邊緣觸發的,edge triggered),中斷訊號被輸入到「中斷請求暫存器」(interrupt request register,簡稱irr),並同時看看imr中的相應位是否已被設定。如果沒有被設定,則irr中的相應位被設定為1,表示外設產生乙個中斷請求,等待cpu服務。 

然後,8259a的優先順序仲裁部分從irr中選出乙個優先順序最高中斷請求。優先順序仲裁之後,8259a就通過其int引腳向cpu發出中斷訊號,以通知cpu有外設請求中斷服務。cpu在其當前指令執行完後就通過他的inta引腳給8259a發出中斷應答訊號,以告訴8259a,cpu已經檢測到有中斷訊號產生。 

8259a在收到cpu的inta訊號後,將優先順序最高的那個中斷請求在isr暫存器(in-service register,簡稱isr)中對應的bit置1,表示該中斷請求已得到cpu的服務,同時irr暫存器中的相應位被清零重置。 

然後,cpu再向8259a發出乙個inta脈衝訊號,8259a在收到cpu的第二個inta訊號後,將中斷請求對應的中斷向量放到資料匯流排上,以供cpu讀取。cpu讀到中斷向量後,就可以裝入執行相應的中斷處理程式。 

如果8259a工作在aeoi(auto end of interrupt,簡稱aeoi)模式下,則當他收到cpu的第二個inta訊號時,它就自動重置isr暫存器中的相應位。否則,isr暫存器中的相應位就一直保持為1,直到8259a顯示地收到來自於cpu的eoi命令。

linux2 6關於中斷的一些入門介紹

我覺得要學好中斷的話,下面的內容遲早都要很熟的。底層硬體操作方法 每一條中斷線都有乙個底層硬體操作函式集struct irq chip 大多數控制方法都是重複的 基本上只要有 中斷響應 中斷遮蔽 中斷開啟 中斷觸發型別設定等方法就可以滿足要求了。其他各種方法基本上和這些相同。這些操作方法的實現在檔案...

Linux2 6 中斷處理函式和申請中斷函式的變化

linux2.6 中斷處理函式和申請中斷函式的變化 2009 07 29 08 46 今天練習了中斷。linux裝置驅動開發技術及應用 作者使用的是2.6.4,現在看來也很古老了,按照書上的例子,免不了很多錯。例如 裡 自己定義的中斷處理函式 irqreturn t int interrupt in...

關於Linux中斷一些思考

目錄前言 關於中斷歷史與發展 linux中斷設計 linux中斷下半部實現 軟中斷 tasklet 工作佇列 關於可重入和不可重入函式 在我們學習中斷的時候,先要了解幾個概念。何為中斷?為什麼要使用中斷?中斷如何運作?弄明白這些再去使用中斷會顯得得心應手。何為中斷?cpu在執行的過程中,由於外部因素...