• 沒有找到結果。

向量中断控制器

在文檔中 嵌入式计算机系统 (頁 29-45)

注意 :部分器件内部虽然没有用户 Flash空间(比如 LPC2210/2220/2290),但它们仍然存在Boot Block,并且

4.3 向量中断控制器

•  概述

ARM7TDMI内核具有两个中断输入,分别为 IRQ中断和FIQ中断。向量中断控制器(VIC)负责 管理芯片的中断源,最多可以管理32个中断输入请 求。

CPU 内核 ARM7TDMI-S

4.3 向量中断控制器

•  程序状态寄存器CPSR与VIC的关系

ARM内核通过CPSR来监视和控制内部的操作,

CPSR中的“I”位和“F”位分别用来控制IRQ模式和FIQ 模式的使能。

CPU ARM7TDMI-S

VIC

IRQ

FIQ

CPSR[ 7 ](I)

CPSR[ 6 ](F)

4.3 向量中断控制器

•  程序状态寄存器CPSR与VIC的关系

Ø  当I = 1时,禁止IRQ中断

CPU ARM7TDMI-S

VIC

IRQ

FIQ

CPSR[ 7 ](I)

CPSR[ 6 ](F)

Ø  当I = 0时,使能IRQ中断

CPU ARM7TDMI-S

VIC

IRQ

FIQ

CPSR[ 7 ](I)

CPSR[ 6 ](F)

4.3 向量中断控制器

•  程序状态寄存器CPSR与VIC的关系

Ø  当F = 1时,禁止FIQ中断

CPU ARM7TDMI-S

VIC

IRQ

FIQ

CPSR[ 7 ](I)

CPSR[ 6 ](F)

Ø  当F = 0时,使能FIQ中断

CPU ARM7TDMI-S

VIC

IRQ

FIQ

CPSR[ 7 ](I)

CPSR[ 6 ](F)

4.3 向量中断控制器

•  中断分类

中断输入请求可以在VIC中被设置为以下三类:

§ 

FIQ中断:具有最高优先级;

§ 

向量IRQ中断:具有中等优先级;

§ 

非向量IRQ中断:具有最低优先级;

ARM7 TDMI VIC

向量IRQ

非向量IRQ FIQ

IRQ

FIQ

4.3 向量中断控制器

•  FIQ中断硬件处理流程

将当前的程序状态寄存器的内容备份 即,SPSR_fiq = CPSR

处理器切换到FIQ模式

禁止IRQ和FIQ中断,即,I = F = 1 保存返回地址

LR_fiq = PC

设置FIQ异常入口地址 PC = 0x1C

发生FIQ异常事件

说明:ARM7不支持FIQ中断嵌套

4.3 向量中断控制器

•  IRQ中断相应流程

将当前的程序状态寄存器的内容备份 即,SPSR_irq = CPSR

处理器切换到IRQ模式

禁止IRQ中断,即,I = 1 保存返回地址

LR_irq = PC

设置IRQ异常入口地址 PC = 0x18

发生IRQ异常事件

说明:ARM7不支持IRQ中断嵌套

向量 VICVectCntl0

向量地址0寄存器 VICVectAddr0

默认向量地址寄存器 VICDefVectAddr

向量 VICVectCntl15

向量地址15寄存器 VICVectAddr15

DefIRQ IRQ0

IRQ15 VectAddr0

VectAddr15

DefVectAddr

VICVectAddr

IRQ0

IRQ15

DefIRQ

IRQ中断信号 VICIRQStatus

FIQ 中断 信号 中断选择寄存器

VICIntSelect 中断使能寄存器

VICIntEnable

中断使能清零寄存器 VICIntEnClr

中断源 [31:0]

软件中断使能寄存器 VICSoftInt

软件中断清零寄存器 VICSoftIntClear

FIQ中断状态寄存器 VICFIQStatus 中断状态寄存器

VICRawIntr IRQ

FIQ

中断选择寄存器 VICIntSelect 中断使能寄存器

VICIntEnable

中断使能清零寄存器 VICIntEnClr

中断源 [31:0]

软件中断使能寄存器 VICSoftInt

软件中断清零寄存器

VICSoftIntClear 中断状态寄存器

VICRawIntr IRQ

FIQ

名称 描述 访问 复位值 地址

VICIntEnable 中断使能寄存器

控制32个中断请求(包括软件中断)的使能 R/W 0 0xFFFF F010 VICSoftIntClear 软件中断清零寄存器

禁止对应通道的软件中断 W 0 0xFFFF F01C

•  寄存器描述-控制寄存器

•  控制寄存器功能描述

4.3 向量中断控制器

控制寄存器 功能描述

VICIntEnable

使能(禁止)中断源产生中断 VICIntEnClr

VICIntSelect 中断类型选择:FIQ & IRQ VICSoftInt

软件中断设置寄存器 VICSoftIntClear

FIQ中断

向量IRQ中断 非向量IRQ中断 中断源0

中断源1

……

中断源31

VIC 32个 中断输入 进行分配

向量 VICVectCntl0

向量地址0寄存器 VICVectAddr0

默认向量地址寄存器 VICDefVectAddr

向量 VICVectCntl15

向量地址15寄存器 VICVectAddr15

向量地址寄存器 VICVectAddr

•  寄存器描述-参数设置寄存器

名称 描述 复位置 地址

VICVectCntl0

VICVectCntl15

向量控制0寄存器 VICVectAddr0

VICVectAddr15

向量地址0寄存器

•  IRQ中断特点

4.3 向量中断控制器

特点 区别

向量 IRQ

l  支持16个向量IRQ中断;

l  16个优先级;

l  每个优先级指定一个服务程序入口地址。

能为每个向量IRQ中断源 设置服务程序地址。

非向量 IRQ

l  支持1个非向量IRQ中断;

l  所有非向量IRQ的入口地址都相同。

所有的非向量IRQ中断都 共用一个相同的服务程 序入口地址。

•  IRQ中断相关寄存器

4.3 向量中断控制器

寄存器名称 功能

VICVectCntl0~15 为中断源分配向量IRQ中断的优先级。

VICVectAddr0~15 为该中断优先级设置服务程序入口地址。

VICDefVectAddr 设置非向量中断服务程序的入口地址。

注意:如果将同⼀一个中断源分配给多个使能的向 量IRQ中断,那么该中断源发生中断时,会使用最高 优先级(最低编号)的寄存器设置。

•  产生中断后的服务程序地址

4.3 向量中断控制器

向量IRQ中断 发生向量IRQ中断后,VIC将对应的向量地址寄 存器中的数据存入VICVectAddr寄存器中。

非向量IRQ中断 发生非向量IRQ中断后,VIC将默认向量地址寄 存器中的数据存入VICVectAddr寄存器中

IRQ中断状态寄存器 VICIRQStatus

中断选择寄存器 VICIntSelect 中断使能寄存器

VICIntEnable

中断使能清零寄存器 VICIntEnClr

中断源 [31:0]

软件中断使能寄存器 VICSoftInt

软件中断清零寄存器 VICSoftIntClear

FIQ中断状态寄存器 VICFIQStatus 中断状态寄存器

VICRawIntr IRQ

FIQ

•  寄存器描述-状态寄存器

名称 描述 访问 复位值 地址

VICIRQStatus IRQ状态寄存器

该寄存器读出定义为IRQ并使能的中断的状态 RO 0 0xFFFF F000 VICFIQStatus FIQ状态请求

该寄存器读出定义为FIQ并使能的中断的状态 RO 0 0xFFFF F004 VICRawIntr

所有中断的状态寄存器 该寄存器

读出32个中断请求/软件中断的状态,不管中 断是否使能或分类

RO 0 0xFFFF F008

注意:读取VICRawIntr寄存器将得到所有32个中断请 求和软件中断的状态,它不管中断是否使能或分类 。

•  保护使能寄存器

4.3 向量中断控制器

保护使能寄存器(VICProtection ):

[31:1] 0

功能 当该位为1时,只能在特权模式下访问VIC寄存器。

在某些场合可能需要禁止在用户模式下访问 VIC寄存器,以提高软件的安全等级。

•  FIQ中断处理

4.3 向量中断控制器

SPSR_fiq = CPSR 1

2 CPSR = nzcvqIFt_fiq

在文檔中 嵌入式计算机系统 (頁 29-45)

相關文件