mini6410中断控制器

提示:如果读者对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所示。

mini6410中断控制器

图1-1 S3C6410的中断控制器

 

三、中断源

S3C6410中断源如下表所示:

表1-1 中断源

mini6410中断控制器

mini6410中断控制器

mini6410中断控制器

四、VIC寄存器

VIC0的基址是0x71200000,VIC1的基址是0x71300000

控制寄存器地址 = 偏移地址 + VICn基址

mini6410中断控制器

mini6410中断控制器

mini6410中断控制器

1.       中断状态寄存器

当使能对应中断及选择了其中断类型为一般中断,该寄存器表示对应中断状态,表示有无中断产生。

 

mini6410中断控制器

2.       快速中断状态寄存器

当使能对应中断及选择了其快速中断类型,该寄存器表示对应中断状态,表示有无快中断产生。

 

mini6410中断控制器

3.       中断前状态寄存器

 

mini6410中断控制器

 

4.       中断选择寄存器

选择对应的中断信号类型为一般中断还是快速中断。

 

mini6410中断控制器

5.       中断使能寄存器

使能对应的中断信号,使能中断信号只能通过该寄存器,如果禁用中断使用VICxINTENCLEAR寄存器,在系统重置后,所有中断都默认被禁用。

 

mini6410中断控制器

6.       中断源禁用寄存器

该寄存器用来清除VICxINTENABLE寄存器启用的中断信号。

 

mini6410中断控制器

7.       软件中断寄存器

 

mini6410中断控制器

8.       软件中断源清除寄存器

 

mini6410中断控制器

9.       保护模式使能寄存器

默认禁用保护模式,通过写入1开启了保护模式,只有特权模式下才可以访问所有的中断寄存器。

 

mini6410中断控制器

10.   软件优先级屏蔽寄存器

是否开启软件中断优先级。

 

mini6410中断控制器

11.   链式向量优先级寄存器

 

mini6410中断控制器

12.   向量中断处理程序地址寄存器

每个寄存器对应一个中断源的ISR处理程序地址。

 

mini6410中断控制器

13.   向量中断优先级寄存器

 

mini6410中断控制器

14.   向量地址寄存器

该寄存器里存放的是当前正在处理的ISR中断服务例程的地址。当前正在处理中断时,只能从该寄存器里读取其值,在处理完中断时向该寄存器里写入任何值都可以清除其值。

 

mini6410中断控制器

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wygdyg.html