提示:如果讀者對ARM中斷機制不是很理解,建議先閱讀本人其它三篇文章:
一、概述
S3C6410中斷控制器由兩個VIC(Vectored Interrupt Controller, ARM PrimeCell)組成和兩個TZIC’s(TrustZone Interrupt Controller SP890)。
兩個TZIC’s和VIC’s很好的接合起來支持64個中斷源。但是單從三星提供的硬件手冊上,很徹底了解VIC中斷的工作方式,還需要從ARM公司下載VIC控制器說明手冊,ARM PrimeCell Vectored Interrupt Controller (PL192),通讀該手冊才能幫助我們很好理解VIC中斷控制原理。
二、特點
S3C6410的向量中斷控制器的特性如下:
l 每個VIC控制器包含32向量中斷
l 固定的硬件中斷優先級別
l 可編程的中斷優先級
l 支持硬件的中斷優先級屏蔽
l 可編程的硬件的中斷優先級屏蔽
l 可產生一般中斷和快速中斷
l 可產生軟件中斷
l 原生的中斷狀態
l 中斷請求狀態
l 支持特權模式來限制訪問
如圖1-1所示。
圖1-1 S3C6410的中斷控制器
三、中斷源
S3C6410中斷源如下表所示:
表1-1 中斷源
四、VIC寄存器
VIC0的基址是0x71200000,VIC1的基址是0x71300000
控制寄存器地址 = 偏移地址 + VICn基址
1. 中斷狀態寄存器
當使能對應中斷及選擇了其中斷類型為一般中斷,該寄存器表示對應中斷狀態,表示有無中斷產生。
2. 快速中斷狀態寄存器
當使能對應中斷及選擇了其快速中斷類型,該寄存器表示對應中斷狀態,表示有無快中斷產生。
3. 中斷前狀態寄存器
4. 中斷選擇寄存器
選擇對應的中斷信號類型為一般中斷還是快速中斷。
5. 中斷使能寄存器
使能對應的中斷信號,使能中斷信號只能通過該寄存器,如果禁用中斷使用VICxINTENCLEAR寄存器,在系統重置後,所有中斷都默認被禁用。
6. 中斷源禁用寄存器
該寄存器用來清除VICxINTENABLE寄存器啟用的中斷信號。
7. 軟件中斷寄存器
8. 軟件中斷源清除寄存器
9. 保護模式使能寄存器
默認禁用保護模式,通過寫入1開啟了保護模式,只有特權模式下才可以訪問所有的中斷寄存器。
10. 軟件優先級屏蔽寄存器
是否開啟軟件中斷優先級。
11. 鏈式向量優先級寄存器
12. 向量中斷處理程序地址寄存器
每個寄存器對應一個中斷源的ISR處理程序地址。
13. 向量中斷優先級寄存器
14. 向量地址寄存器
該寄存器裡存放的是當前正在處理的ISR中斷服務例程的地址。當前正在處理中斷時,只能從該寄存器裡讀取其值,在處理完中斷時向該寄存器裡寫入任何值都可以清除其值。