歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> mini6410中斷控制器-VIC中斷控制器

mini6410中斷控制器-VIC中斷控制器

日期:2017/3/1 10:34:47   编辑:Linux編程

提示:如果讀者對ARM中斷機制不是很理解,建議先閱讀本人其它三篇文章:

S3C2440系統中斷

ARM處理器異常處理

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中斷服務例程的地址。當前正在處理中斷時,只能從該寄存器裡讀取其值,在處理完中斷時向該寄存器裡寫入任何值都可以清除其值。

Copyright © Linux教程網 All Rights Reserved