soc(九) 中斷控制器

中斷控制器在芯片中的位置
中斷控制器的發展
中斷控制器的分類

中斷處理過程

在這裏插入圖片描述

  • 從gic的角度考慮 整個過程
既然處理中斷的最核心模塊是 中斷控制器 , 那麼 我們就應該瞭解 中斷控制器的典型工作流程 .

在瞭解工作過程中自然瞭解到 中斷控制器留給 CPU 的接口.從而達到怎麼控制中斷控制器來處理中斷的過程.

GIC對一箇中斷源的處理過程包含Inactive, Pending, Active和Active and Pending四種狀態。

1. 中斷控制器彙集各類外設發出的中斷信號
2. 中斷控制器告訴CPU , 此時CPU在吃到第5根陽春麪,這一根吃到了一半

3. CPU保存當前程序的運行環境
4. CPU置位PC,中斷服務程序處理中斷

5. 軟件ISR中進行相應的處理。
6. 軟件清除中斷,通過讀寫中斷控制器和外設相關的寄存器來實現。
7. 軟件恢復原來的環境
8. 軟件調用iret

9. 軟件控制 CPU 告知 中斷控制器中斷處理完畢 // 當interrupt handler處理完了一箇中斷的時候,會向寫CPU interface的寄存器從而通知GIC CPU已經處理完該中斷。
10.CPU 繼續吃第5根陽春麪剩下的一半  

arm 芯片上的中斷控制器發展及種類

arm cortex-m 使用 NVIC // 適用於單核?
arm cortex-a 使用 GIC  // 適用於多核和單核?

gic  是有 單獨的 RF和trm 的.
nvic 的 RF和trm  分別在 cortex-m 處理器的 RF和trm 中.

問題:
	cortex-a 和 cortex-m 在中斷系統上有什麼不同?
	cortex-a 可以使用 NVIC嗎?

    1. 標準的中斷控制器

1.標準的中斷控制器

	就是沒有對中斷進行管理,直接給 arm core 
	
    一開始是沒有中斷控制器的,這個叫做標準的中斷控制器
    	軟件可以設置忽略或屏蔽某設備的中斷請求
    	軟件讀寄存器判斷是哪個設備的什麼請求
    1. NVIC
3.VIC
    對於ARM架構的soc,使用較多的中斷控制器是VIC(Vector Interrupt Controller)
    至於能不能嵌套,看具體實現.
    	區分中斷優先級
    	硬件判斷中斷源並主動跳轉對應處理程序地址
    
    stm32 等 cortex-m0 m1 m4 m0+ 用的 

2.NVIC 
    可嵌套中斷控制器


	單核時代用的
	用於對中斷信號進行處理,然後給 arm core
	
	arm7 arm11 cortex-a8(這幾個都是單核)
	
	VIC是處於芯片外設和ARM內核之間的一個模塊,對芯片所有外設中斷進行管理,決定哪些中斷源可以產生中斷、產生哪種類型的中斷以及中斷後執行哪段服務程序。
	ARM處理器內核具有兩個中斷輸入:向量中斷請求(IRQ)和快速中斷請求(FIQ)。向量中斷控制器使用32箇中斷請求輸入,可將其編程分配爲FIQ或向量IRQ類型。
	可編程分配機制意味着外設中斷的優先級可動態分配和調整。


4.GIC
    進入多核時代以後,GIC(General Interrupt Controller)的應用也開始逐漸變多。
    GIC 可以實現中斷嵌套
    
	單核時代用的
	用於對中斷信號進行處理,然後給 arm core
	cortex-a9( Cor tex-A9 爲單核 ,Cor tex-A9 MPCore 爲多核)
	
	GIC爲中斷控制器,不要和ARM core的中斷搞混了,這些中斷都是連接到ARM core的IRQ或者FIQ上的。

ARM中斷種類

中斷源 分類 Cortex-M進入模式 ARM7進入模式 Cortex-A進入模式
一般外設 IRQ handler工作模式 SVC異常模式 SVC異常模式
電源鍵 FIQ handler工作模式 IRQ異常模式 IRQ異常模式
SWI指令 SWI handler工作模式 FIQ異常模式 FIQ異常模式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章