1. 程式人生 > >Fs4412中斷處理和程式設計流程

Fs4412中斷處理和程式設計流程

中斷處理: 1.中斷:在處理器中,中斷是一個過程,即CPU正在執行程式過程中,遇到外部或內部緊急事件需要處理,暫時中止當前程式執行轉而去為事件服務,待服務完畢,再返回到暫停處(斷點)繼續執行原來的程式。 為事件獨舞的程式稱之為中斷服務程式。 2.中斷的分類(硬中斷和軟中斷,內部中斷和外部中斷)     中斷的分為:硬體中斷(包括:內部中斷和外部中斷);軟體中斷     1)硬中斷和軟中斷的區別         ----軟中斷是執行中斷指令產生的,而硬中斷是由外設引發的。         ----硬中斷的中斷號是由中斷控制器提供的,軟中斷的中斷號由指令直接指出,無需使用中斷控制器。         ----硬中斷是可遮蔽的,軟中斷不可遮蔽。
        ----硬中斷處理程式要確保它能快速地完成任務,這樣程式執行時才不會等待較長時間,稱為上半部。         ----軟中斷處理硬中斷未完成的工作,是一種推後執行的機制,屬於下半部。     2)內部中斷和外部中斷的區別         ----外部中斷一般是指由計算機外設發出的中斷請求,如:鍵盤中斷、印表機中斷、定時器中斷等。         外部中斷是可以遮蔽的中斷,也就是說,利用中斷控制器可以遮蔽這些外部裝置 的中斷請求。         ----內部中斷是指因硬體出錯(如突然掉電、奇偶校驗錯等)或運算出錯(除數為零、運算溢位、單步中斷等)所引起的中斷。內部中斷是不可遮蔽的中斷
3.中斷優先順序     複習異常處理優先順序         1.復位異常(reset)         2.資料異常(data abort)         3.快速中斷異常(fiq)         4.外部中斷異常(irq)         5.預取異常(prefetch abort)         6.軟體中斷(swi)         7.未定義指令異常(undef) 4. 中斷響應步驟:         1.保護斷點(儲存下一條指令的地址,壓棧)         2.尋找中斷入口(根據不同的中斷源產生的中斷查詢終端入口地址)         3.執行中斷處理程式         4.終端返回

中斷控制器:是對產生的中斷進行控制,選擇CPU介面和核心介面,什麼處理模式。     GIC為中斷控制器,不要和ARMcore的中斷搞混了,這些中斷都是連線到ARM core的IRQ或者FIQ上的。     GIC是用來管理系統中所有彙集到一起的中斷,並且連線CPU和外設     ARM CPU對外的連線只有2箇中斷,一個是IRQ,一個是FIQ,相對應的處理模式分別是     一般中斷(IRQ)處理模式和快速中斷(FIQ)處理模式。所以 GIC 最後要把中斷彙集成2條線,與CPU對接。     GIC 是聯絡外設中斷和 CPU 的橋樑,也是各 CPU 之間中斷互聯的通道(也帶有管理功能),     它負責檢測、管理、分發中斷,可以做到:         1)使能或禁止中斷;         2)把中斷分組到組 0 還是組 1(安全系統中使用 FIQ,Group0,Group1 作為非安全系統使用連線 IRQ)         3)多核系統中將中斷分配到不同處理器上         4)設定電平觸發還是邊沿觸發方式(不等於外設的觸發方式)         5)虛擬化擴充套件     SGI(Software-generated interrupt),SGI為軟體可以觸發的中斷,經常用於各個core之間的通訊         ID:0-15     PPI(Private peripheral interrupt),PPI為每個core的私有外設中斷         ID: 16-31     SPI(Shared peripheral interrupt),SPI為各個core公用的中斷         ID: 32-1019(我們用的只有160箇中斷,32-159)
8.GIC的組成部分     1)分發器(Distributor)         作用:             檢測各個中斷源的狀態             控制各個中斷源的行為             分發各個中斷源產生的中斷事件分發到指定的一個或者多個CPU             各個子中斷使能             設定觸發方式  2)CPU介面(CPU Interface)  -----(普通processor介面和虛擬機器介面)                 作用:             優先順序排序             分發到哪個CPU上             雖然分發器可以管理多箇中斷源,但是它總是把優先順序最高的那個中斷請求送往CPU介面。             總的中斷的使能             狀態的維護 具體步驟:(前3步為外設初始化,後幾步為gic初始化,基於Fs4412開發板) 1.配置按鍵GPIO為外部中斷(通過查使用者手冊可以得知使用GPX_1),GPX1_CON = 0xf << 4; 2.設定觸發模式:EXT_INT41_CON = 0x2 << 4;(觸發方式為下降沿);

中斷處理的流程圖片:
這個是我自己的筆記總結,僅供參考;