资源描述
第八章 集成可编程中断控制器(IPIC)
本章介绍集成可编程中断控制器(IPIC),包括外部信号的定义及其功能。此外,本章还介绍配置、控制和状态寄存器。注意,本参考手册的每一章都介绍了一个部件的特定的具体的初始化过程。
8.1 绪论
本节介绍IPIC中断协议、IPIC单元控制的不同类型的中断源、以及IPIC寄存器及其编程指南。编程模型与MPC8260的中断控制相似。中断控制器提供中断管理,负责接收来自不同中断源(内部的和外部的)的硬件产生的中断。它还将中断分为不同的优先级,并将中断交付给CPU,由CPU服务。IPIC区分来自下列控制单元的中断的优先级并管理这些中断:
l DDR存贮器控制器(DDR)
l 本地总线内存控制器(LBC)
l PCI1和PCI2
l 四通道DMA控制器(DMA)
l 消息单元(MU)
l 双三态Ethernet控制器(TSEC1和TSEC2)
l DUART通信模块(DUART)
l USB 2.0控制器(USB DR 和USB MPH)
l 安全引擎(SEC)
l 系统总线仲裁器(SBA)
l 周期间隔定时器(PIT)
l 实时时钟定时器(RTC ALR和RTC SEC)
l 八个全局定时器(GTM1-GTM8)
l 软件看门狗定时器(WDT)
l I2C控制器(I2C1和I2C2)
l SPI控制器(SPI)
l 电源管理控制器(PMC)
l 两个通用I/O控制器(GPIO1和GPIO2)
l 外部引脚(/IRQ[0:7])
IPIC单元控制的中断源引起处理器核内部的异常。内部中断(/int)信号是从IPIC到核的主要中断输出信号,它引起常规中断异常。/cint是从IPIC到处理器核的紧急中断输出信号,它引起紧急中断异常。/smi信号是从IPIC到处理器核的系统管理中断输出信号,它引起系统管理中断异常。机器检查异常由IPIC产生的内部/mcp引起,通知主处理器出现错误、外部/IRQ0机器检查请求有效(在SEMSR[SIRQ0]=1时允许)、以及其他情况。
表8-1列出了各种功能部件和设备的外部信号与IPIC单元的关系。
IPIC接收来自下列两个地方的中断请求信号:
l 该集成设备的外部
l 该集成设备的内部
该单元从当前所有的中断中选择最高优先级的中断,并将它交给内部处理器核,或片外,在外部服务中断。
IPIC还管理内部不可屏蔽机器检查处理器(/mcp)信号和片外中断源产生的中断(/IRQ[0:7])。
IPIC的中断发送程序监控内部配置寄存器的输出。若某个收到的中断信号的优先级最高,IPIC就将某个中断未决寄存器中的对应位置位——系统内部中断未决寄存器(SIPNR)/系统外部中断未决寄存器(SEPNR)。如果该中断未被屏蔽,IPIC就宣告/int信号有效,向处理器指示中断请求。若处理器正在运行特定/int、/cint或/smi的中断处理程序代码,则处理器必须通过显式(用软件)读取相应的中断向量寄存器(SIVCR、SCVCR或SMVCR),将外部中断处理程序向量化。读取后,IPIC单元将向量(与中断源相关)返回给中断处理程序例程。此外,处理程序可以将不同分支的中断处理向量化
图8-1 中断源结构图
IPIC可以接收来自下列不同中断域的中断:
l 8个外部——片外信号(/IRQ[0:7])
l 35个内部——片上中断信号。中断源为DDR MEMC、LB、PCI1、PCI2、DMA、MU、TSEC1、TSEC2、DUART、USB、SEC、系统总线仲裁器、PIT、RTC、GTM、I2C1、I2C2、SPI、GPIO1、GPIO2和PMC
l 1个外部和5个内部——片上/mcp中断信号。中断源为/IRQ0、软件看门狗定时器(WDT)、PCI1、PCI2、MU和系统总线仲裁器(SBA)
中断控制器提供了屏蔽每个中断源的能力,还可以屏蔽GPIO、SEC或SBA外围事件中的多个事件。
当收到一个内部或外部中断时,IPIC检查其配置寄存器,确定应将中断发送到片外(到外部/INTA),还是作为正常外部中断由处理器核服务(通过/int信号)。第三种方法是,如果进来的中断已经被配置为紧急中断或系统管理中断,IPIC就向核宣告/cint或/smi有效,完成该中断的处理。到核的/cint或/smi信号有效会把中断分别作为紧急或系统管理中断来服务。
8.2 特性
IPIC单元实现了下列特性:
l 与MPC8260中断控制器在功能和编程方面兼容
l 支持8个外部和35个内部离散向量化中断源
l 支持1外部个和5个内部/mcp中断源
l 可编程最高优先级请求(可被编程,以支持紧急(/cint)或系统管理(/smi)中断)
l 两个可编程优先级混合组,每组4个片上和4个外部中断信号,两种优先级方案:分组的(grouped)和分散的(spread)
l 两个可编程优先级内部组,每组8个片上中断信号,两种优先级方案:分组的(grouped)和分散的(spread)
l 每组可以安排两个最高优先级的中断,以支持紧急或系统管理中断类型
l 外部和内部中断可以定向到主处理器
l 每个中断源的向量号唯一
8.3 操作模式
IPIC单元可以运行在核允许模式或核禁止模式。
8.3.1 核允许模式
在核允许模式中,所有的内部中断(包括来自PCI1和PCI2部件的那些中断)都被送到IPIC,或源自IPIC,将中断发送给PowerPC核。DMA控制器可以随意(根据DMA寄存器的设计)将其中断通过INTA信号送给PCI主机。
在该模式中,IPIC搜集所有的机器检查中断,并将它们发送给PowerPC核。如果设备作为PCI主机操作,那么应将其他PCI代理(agent)的中断连接到实现(设备)的/IRQ信号,并将它们当作正常外部中断对待(发送给核)。
8.3.2 核禁止模式
在核禁止模式中,所有的内部中断(包括来自PCI1和PCI2部件的那些中断)都被送到IPIC,或源自IPIC,然后将中断通过/INTA信号发送给PCI主机的CPU。注意,核中断信号被屏蔽。在该模式中,用户应仅使用/int输出中断类型(不能使用/cint或/smi输出中断类型)读取更新了的SIVCR。(参见8.5.7节“系统内部中断控制寄存器(SICNR)”和8.5.12节“系统外部中断控制寄存器(SECNR)”。)
在该模式中,在/INTA上或/MCP_OUT上驱动的机器检查中断是电平敏感中断。SERCR[MCPR](见8.5.15节“系统错误控制寄存器(SERCR)”)控制使用哪个外部信号。
8.4 外部信号说明
下面几节概述并详细说明了IPIC信号。
8.4.1 概述
该设备有8个不同的外部中断请求输入信号(/IRQ[0:7])和一个中断请求输出信号(/INTA)。IPIC接口信号在表8-1中定义。
表8-1 IPIC信号属性
名字
端口
功能
I/O
复位
需要上拉
/IRQ[0:7]
/IRQ[0:7]
外部中断
I
-
是
/INTA
/INTA
中断请求输出
O
Z
是
/MCP_OUT
/MCP_OUT
中断请求输出
O
Z
是
8.4.2 详细信号说明
表8-2提供了外部IPIC信号的详细说明
表8-2 IPIC外部——详细信号说明
信号
I/O
说明
/IRQ[0:7]
I
中断请求0-7。每一个信号的检测(电平或边沿)都是可编程的。所有这些输入都可以被完全异步驱动。
状态含义
有效——当外部中断请求信号有效时(根据规定的极性),IPIC单元检查优先级,有条件地将中断传给处理器。
无效——没有来自那个源的中断。
时序
有效——可以被完全异步地宣告所有输入有效。
无效——规定为电平敏感的中断在被服务之前必须保持有效。
/INTA
OD
中断请求输出。低有效,开漏极。若将IPIC设置为核禁止模式,则该输出反映的是片上中断源产生的原始中断。细节参见8.3节“操作模式”。
状态含义
有效——当前正在向外部系统报告至少一个中断。
无效——指示当前没有发向/IRQ_OUT的中断源。
时序
因为外部中断是异步的,不考虑系统时钟,所以/IRQ_OUT的有效和无效可以异步出现,与中断源无关。这里给出的所有时序都是近似的。
有效——内部中断源:中断发生后的3个系统总线时钟周期。外部中断源:中断发生后的4个周期。
无效——中断源无效后,后面跟下列延迟:内部中断源:3个系统总线时钟周期。外部中断源: 4个周期。
/MCP_OUT
OD
不可屏蔽中断请求(机器检查)输出。低有效,开漏极。若将IPIC设置为核禁止模式,则该输出反映的是片上中断源产生的/mcp中断。细节参见8.3节“操作模式”。
状态含义
有效——当前正在向外部系统报告至少一个机器检查中断。
无效——指示当前没有发向/MCP_OUT的中断源。
时序
因为外部中断是异步的,不考虑系统时钟,所以/MCP_OUT的有效和无效可以异步出现,与中断源无关。这里给出的所有定时时间都是近似的。
有效——内部中断源:中断发生后的2个系统总线时钟周期。外部中断源:中断发生后的4个周期。
无效——中断源无效后,后面跟下列延迟:内部中断源:2个系统总线时钟周期。外部中断源: 4个周期。
8.5 内存映射/寄存器定义
IPIC可编程寄存器映射占用256个字节的内存空间。读取内存映射的未定义部分返回全零,写入无效。
所有的IPIC寄存器都为32位宽,位于32位地址边界。软件可以对所有IPIC寄存器执行字节、半字或字访问。本章使用的所有地址都是距IPIC基址的偏移量,如第二章“内存映射”所定义的。
表8-3列出了IPIC单元的内存映射。
表8-3 IPIC寄存器地址映射
偏移量
寄存器
访问
复位值
节/页
0x00
系统全局中断配置寄存器(SICFR)
R/W
0x0000_0000
8.5.1/8-8
(需调整)
0x04
系统常规中断向量寄存器(SIVCR)
R
0x0000_0000
8.5.2/8-8
(需调整)
0x08
系统内部中断未决寄存器(SIPNR_H)
R
0x0000_0000
8.5.3/8-8
0x0C
系统内部中断未决寄存器(SIPNR_L)
R
0x0000_0000
8.5.3/8-8
0x10
系统内部中断组A优先级寄存器(SIPRR_A)
R/W
0x0530_9770
8.5.4/8-8
0x14
保留
-
-
-
0x18
保留
-
-
8.5.5/8-8
0x1C
系统内部中断组D优先级寄存器(SIPRR_D)
R/W
0x0530_9770
8.5.5/8-8
0x20
系统内部中断屏蔽寄存器(SIMSR_H)
R/W
0x0000_0000
8.5.6/8-8
0x24
系统内部中断屏蔽寄存器(SIMSR_L)
R/W
0x0000_0000
8.5.6/8-8
0x28
系统内部中断控制寄存器(SICNR)
R/W
0x0000_0000
8.5.7/8-8
0x2C
系统外部中断未决寄存器(SEPNR)
R/W
特殊
8.5.8/8-8
0x30
系统混合中断组A优先级寄存器(SMPRR_A)
R/W
0x0530_9770
8.5.9/8-8
0x34
系统混合中断组B优先级寄存器(SMPRR_B)
R/W
0x0530_9770
8.5.10/8-8
0x38
系统外部中断屏蔽寄存器(SEMSR)
R/W
0x0000_0000
8.5.11/8-8
0x3C
系统外部中断控制寄存器(SECNR)
R/W
0x0000_0000
8.5.12/8-8
0x40
系统错误状态寄存器(SERSR)
R/W
0x0000_0000
8.5.13/8-8
0x44
系统错误屏蔽寄存器(SERMR)
R/W
0xFF00_0000
8.5.14/8-8
0x40
系统错误控制寄存器(SERCR)
R/W
0x0000_0000
8.5.15/8-8
0x4C-0x4F
保留
-
-
-
0x50
系统内部中断强制寄存器(SIFCR_H)
R/W
0x0000_0000
8.5.16/8-8
0x54
系统内部中断强制寄存器(SIFCR_L)
R/W
0x0000_0000
8.5.16/8-8
0x58
系统外部中断强制寄存器(SEFCR)
R/W
0x0000_0000
8.5.17/8-8
0x5C
系统错误强制寄存器(SERFR)
R/W
0x0000_0000
8.5.18/8-8
0x60
系统紧急中断向量寄存器(SCVCR)
R
0x0000_0000
8.5.19/8-8
0x64
系统管理中断向量寄存器(SMVCR)
R
0x0000_0000
8.5.20/8-8
0x68-0xFF
保留
-
-
-
8.5.1 系统全局中断配置寄存器(SICFR System Global Interrupt Configuration Register)
SICFR如图8-2所示,它定义最高优先级中断,以及中断在优先级表中是分组的还是分散的。更多信息见表8-4。
图8-2 系统全局中断配置寄存器(SICFR)
表8-4定义了SICFR的位字段。
表8-4 SICFR字段说明
位
名字
说明
0
-
写忽略,读=0
1-7
HPI
最高优先级中断。指定一个中断控制器中断源的7位唯一中断号/向量(见表8-6),将该中断源提升为IPIC优先级表(见表8-31)中的最高优先级。可以动态修改HPI。
8
-
写忽略,读=0
9
MPSB
组B的混合中断优先级方案。选择相应的MIXB优先级方案。不能动态修改。
0 分组的。在表顶部按优先级分组MIXB。
1 分散的。在表中按优先级分散MIXB。
10
MPSA
组A的混合中断优先级方案。选择相应的MIXA优先级方案。不能动态修改。
0 分组的。在表顶部按优先级分组MIXA。
1 分散的。在表中按优先级分散MIXA。
11
-
写忽略,读=0
12
IPSD
组D的内部中断优先级方案。选择相应的SYSD优先级方案。不能动态修改。
0 分组的。在表顶部按优先级分组SYSD。
1 分散的。在表中按优先级分散SYSD。
13-14
-
写忽略,读=0
15
IPSA
组A的内部中断优先级方案。选择相应的SYSA优先级方案。不能动态修改。
0 分组的(grouped)。在表顶部按优先级分组SYSA。
1 分散的(spread)。在表中按优先级分散SYSA。
16-21
-
写忽略,读=0
22-23
HPIT
HPI优先级位置IPIC输出中断类型。定义在HPI优先级位置中,哪种类型的IPIC输出中断信号(/int、/cint或/smi)向核宣告其请求有效。不能动态修改这些位。(如果软件确实要修改,软件必须确认相应中断源已被屏蔽,或者在修改时不会发生中断)。
HPIT的定义如下:
00 HPI到核的/int请求有效。
01 HPI到核的/smi请求有效。
10 HPI到核的/cint请求有效。
11 保留。
24-31
-
写忽略,读=0
8.5.2 系统常规中断向量寄存器(SIVCR System Regular Interrupt Vector Register)
SIVCR如图8-3所示,它包括7位编码,表示最高优先级上的常规未屏蔽中断源(/INT)。
注意
在核禁止模式中,用户只能使用SIVCR,以便读取更新了的中断向量寄存器(不应使用SCVCR和SMVCR)。
图8-3 系统常规中断向量寄存器(SIVCR)
表8-5定义了SIVCR的位字段。
表8-5 SIVCR字段说明
位
名字
说明
0-5
IVECx
向后(MPC8260)兼容的常规中断向量。指定核未决的、IPIC最高优先级常规中断源的6位唯一中断号。在出现常规中断请求时,可以读取SIVCR。如果有多个常规中断源,SIVCR锁存最高优先级的常规中断。注意,IVECx字段仅正确反映前64个中断向量(细节见表8-6)。读取时,不能修改SIVEC的值。
6-24
-
写忽略,读=0
25-31
IVEC
常规中断向量。指定核未决的、IPIC最高优先级常规中断源的7位唯一中断号。注意,在出现常规中断请求时,可以读取SIVCR。如果有多个常规中断源,SIVCR锁存最高优先级的常规中断。注意,IVEC字段正确反映所有的中断向量(细节见表8-6)。读取时,不能修改SIVCR(SIVEC?)的值。
表8-6给出了IVEC的定义。
表8-6 IVEC/CVEC/MVEC字段定义
中断ID号
中断含义
中断向量
0
错误(无中断)
0b000_0000
1-8
保留
0b000_0000-0b000_1000
9
UART1
0b000_1001
10
UART2
0b000_1010
11
SEC
0b000_1011
12-13
保留
0b000_1100-0b000_1101
14
I2C1
0b000_1110
15
I2C2
0b000_1111
16
SPI
0b001_0000
17
ipp_ind_ext-int[1]
0b001_0001
18
ipp_ind_ext-int[2]
0b001_0010
19
ipp_ind_ext-int[3]
0b001_0011
20
IRQ4
0b001_0100
21
IRQ5
0b001_0101
22
IRQ6
0b001_0110
23
IRQ7
0b001_0111
24-31
保留
0b001_1000-0b001_1111
32
TSEC1 Tx
0b010_0000
33
TSEC1 Rx
0b010_0001
34
TSEC1 Err
0b010_0010
35
TSEC2 Tx
0b010_0011
36
TSEC2 Rx
0b010_0100
37
TSEC2 Err
0b010_0101
38
USB DR
0b010_0110
39
USB MPH
0b010_0111
40-47
保留
0b010_1000-0b010_1111
48
ipp_ind_ext-int[0]
0b011_0000
49-63
保留
0b011_0001-0b011_1111
64
ipp_ind_ext-int[32]
0b100_0000
65
ipp_ind_ext-int[33]
0b100_0001
66
ipp_ind_ext-int[34]
0b100_0010
67
ipp_ind_ext-int[35]
0b100_0011
68
RTC ALR
0b100_0100
69
USB MPH
0b100_0101
70
SBA
0b100_0110
71
USB MPH
0b100_0111
72
GTM4
0b100_1000
73
GTM8
0b100_1001
74
GPIO1
0b100_1010
75
GPIO2
0b100_1011
76
DDR
0b100_1100
77
LBC
0b100_1101
78
GTM2
0b100_1110
79
GTM6
0b100_1111
80
PMC
0b101_0000
81-83
保留
0b101_0001-0b101_0011
84
GTM3
0b101_0100
85
GTM7
0b101_0101
86-89
保留
0b101_0110-0b101_1001
90
GTM1
0b101_1010
91
GTM5
0b101_1011
92-127
保留
0b101_1100-0b111_1111
8.5.3 系统内部中断未决寄存器(SIPNR_H和L System Internal Interrupt Pending Register)
SIPNR_H和SIPNR_L中的每一位都对应一个内部中断源,如图8-4和8-5所示。(表8-7列出了已实现了的位。)当收到中断请求时,中断控制器置位对应的SIPNR位。在处理完未决中断后,通过清除对应的事件寄存器位,用户可以清除SIPNR位。
注意,SIPNR位的状态不会依相对优先级改变。
图8-4 系统内部中断挂起寄存器(SIPNR_H)
表8-7列出了实现的SIPNR_H位。
表8-7 SIPNR_H/SIFCR_H/SIMSR_H分配
位
字段
0
TSEC1 Tx
1
TSEC1 Rx
2
TSEC1 Err
3
TSEC2 Tx
4
TSEC2 Rx
5
TSEC2 Err
6
USB DR
7
USB MPH
8-23
-
24
UART1
25
UART2
26
SEC
27-28
-
29
I2C1
30
I2C2
31
SPI
表8-8定义了SIPNR_H的位字段。
表8-8 SIPNR_H字段说明
位
名字
说明
0-31
INTn
每个已实现了的位(表8-7中列出)都对应一个内部中断源。当收到中断请求时,中断控制器置位对应的SIPNR位。在处理完未决中断后,通过清除对应的事件寄存器位,用户可以清除SIPNR位。
SIPNR位是只读的。写入该寄存器无用。
注意,SIPNR位的状态不会依相对优先级变化。
对于未实现的位,写忽略,读=0。
SIPNR_L如图8-4所示。
图8-5 系统内部中断未决寄存器(SIPNR_L)
表8-9列出了实现的SIPNR_L位。
表8-9 SIPNR_L/SIFCR_L/SIMSR_L分配
位
字段
0
RTC SEC
1
PIT
2
PCI1
3
ipi_int_internal[35]-
4
RTC ALR
5
MU
6
SBA
7
DMA
8
GTM4
9
GTM8
10
GPIO1
11
GPIO2
12
DDR
13
LBC
14
GTM2
15
GTM6
16
PMC
17-19
-
20
GTM3
21
GTM7
22-25
-
26
GTM1
27
GTM5
28-30
-
31
-
表8-10定义了SIPNR_L的位字段。
表8-10 SIPNR_L字段说明
位
名字
说明
0-31
INTn
每个已实现了的位(表8-7中列出)都对应一个内部中断源。当收到中断请求时,中断控制器置位对应的SIPNR位。在处理完未决中断后,通过清除对应的事件寄存器位,用户可以清除SIPNR位。
SIPNR位是只读的。写入该寄存器无效。
注意,SIPNR位的状态不会依相对优先级变化。
对于未实现的位,写忽略,读=0。
8.5.4 系统内部中断组A优先级寄存器(SIPRR_A System Internal Interrupt Group A Priority Register)
SIPRR_A如图8-6所示,它定义TSEC1发送请求(TSEC1 Tx)、TSEC1接收请求(TSEC1 Rx)、TSEC1发送/接收错误(TSEC1 Err)、TSEC2发送请求(TSEC2 Tx)、TSEC2接收请求(TSEC2 Rx)、TSEC2发送/接收错误(TSEC2 Err)、USB DR和USB MPH内部中断信号之间的优先级。
更多信息参见8.6.3节“内部中断组相对优先级”
图8-6 系统内部中断组A优先级寄存器(SIPRR_A)
表8-11定义了SIPRR_A的位字段。
表8-11 SIPRR_A字段说明
位
名字
说明
0-2
SYSA0P
SYSA0优先级顺序。定义哪个中断源在SYSA0优先级位置中宣告其请求有效。用户不能为多个优先级位置(0-7)规定相同的编码。可以动态改变这些位。SYSA0P的定义如下:
000 TSEC1 Tx在SYSA0优先级位置中宣告其请求。
001 TSEC1 Rx在SYSA0优先级位置中宣告其请求。
010 TSEC1 Err在SYSA0优先级位置中宣告其请求。
011 TSEC2 x在SYSA0优先级位置中宣告其请求。
100 TSEC2 Rx在SYSA0优先级位置中宣告其请求。
101 TSEC2 Err在SYSA0优先级位置中宣告其请求。
110 USB DR在SYSA0优先级位置中宣告其请求。
111 USB MPH在SYSA0优先级位置中宣告其请求。
3-11,16-27
SYSA1P-SYSA7P
与SYSA0P相同,但为SYSA1P-SYSA7P定义
12-15,28-31
-
写忽略,读=0
更多信息参见8.6.3节“内部中断组相对优先级”
8.5.5 系统内部中断组D优先级寄存器(SIPRR_D System Internal Interrupt Group D Priority Register)
SIPRR_D如图8-7所示,它定义表8-12列出的中断源之间的优先级。
图8-7 系统内部中断组D优先级寄存器(SIPRR_D)
表8-12定义了SIPRR_D的位字段。
表8-12 SIPRR_D字段说明
位
名字
说明
0-2
SYSD0P
SYSD0优先级顺序。定义哪个中断源在SYSD0优先级位置中宣告其请求有效。用户不能为多个优先级位置(0-7)规定相同的编码。可以动态改变这些位。SYSD0P的定义如下:
000 UART1在SYSD0优先级位置中宣告其请求。
001 USRT2在SYSD0优先级位置中宣告其请求。
010 SEC在SYSD0优先级位置中宣告其请求。
011 保留
100 保留
101 I2C1在SYSD0优先级位置中宣告其请求。
110 I2C2在SYSD0优先级位置中宣告其请求。
111 SPI在SYSD0优先级位置中宣告其请求。
3-11,16-27
SYSD1P-SYSD7P
与SYSD0P相同,但为SYSD1P-SYSD7P定义
12-15,28-31
-
写忽略,读=0
8.5.6 系统内部中断屏蔽寄存器(SIMSR_H和SIMSR_L System Internal Interrupt Mask Register)
SIMSR_H和SIMSR_L实现的每一位都对应一个内部中断源,如图8-8和8-9所示。用户通过清除对应的SIMSR位屏蔽中断。当出现中断请求时,无论SIMSR位的设置如何,对应的SIPNR位都会被置位。但是,如果对应的SIMSR位是清除的,则不将中断请求传给核。
如果用户在对应中断源请求中断服务的同时清除SIMSR位,则请求停止。如果用户稍后置位SIMSR位,则核根据其优先级处理所有未决的对应的中断请求。
图8-8 系统内部中断屏蔽寄存器(SIMSR_H)
表8-13定义了SIMSR_H的位字段。
表8-13 SIMSR_H字段说明
位
名字
说明
0-31
INTn
每个实现了的位(表8-9中列出)内部中断源。用户通过清除对应的SIMSR位屏蔽中断,置位对应的SIMSR位则不屏蔽(允许)中断。用户可在任何时候读取SIMSR。
注意:
l SIMSR位的状态不会依相对优先级变化。
l 用户只能通过清除对应事件寄存器中的所有未屏蔽事件,来清除由多个中断事件置位的未决寄存器位。
l 如果在对应SIPNR位引起到核的中断请求的同时, SIMSR位是屏蔽的,则发出错误向量(如果无其他未决中断)。所以用户应永远包括一个错误向量例程,即使该例程仅包括一条rfi指令。不能屏蔽错误向量。
对于未实现的位,即图8-8中显示为保留的位,写忽略,读=0。
SIMSR_L如图8-9所示。
图8-9 系统内部中断屏蔽寄存器(SIMSR_L)
表8-14定义了SIMSR_L的位字段。
表8-14 SIMSR_L字段说明
位
名字
说明
0-31
INTn
每个实现了的位(表8-9中列出)都对应一个内部中断源。用户通过清除对应的SIMSR位屏蔽中断,置位对应的SIMSR位则不屏蔽(允许)中断。用户可在任何时候读取SIMSR。
注意:
l SIMSR位的状态不会依相对优先级变化。
l 用户只能通过清除对应事件寄存器中的所有未屏蔽事件,来清除由多个中断事件置位的未决寄存器位。
l 如果在对应SIPNR位引起到核的中断请求的同时, SIMSR位是屏蔽的,则发出错误向量(如果无其他中断挂起)。所以用户应永远包括一个错误向量例程,即使该例程仅包括一条rfi指令。不能屏蔽错误向量。
对于未实现的位,即图8-9中显示为保留的位,写忽略,读=0。
8.5.7 系统内部中断控制寄存器(SICNR System Internal Interrupt Control Register)
SICNR如图8-10所示,它定义IPIC在SYSA0-SYSA1和SYSD0-SYSD1状态中的输出中断类型(/int、/cint或/smi)。所有其他优先级位置向核宣告/int有效。
注意,在核禁止模式中,用户应使用/int输出中断类型(不应使用/cint或/smi)来读取更新了的SIVCR。
图8-10 系统内部中断控制寄存器(SICNR)
表8-15定义了SICNR的位字段。
表8-15 SICNR字段说明
位
名字
说明
0-1
SYSD0T
SYSD0优先级位置IPIC输出中断类型。定义在SYSD0优先级位置中,哪种类型的IPIC输出中断信号(/int、/cint或/smi)向核宣告其请求有效。不能动态修改这些位。(要修改它,软件必须确保对应中断源被屏蔽,或在修改期间不会发生中断)。
SYSD0T定义如下:
00 SYSD0的/int请求对核有效。
01 SYSD0的/cint请求对核有效。
10 SYSD0的/smi请求对核有效。
11 保留
2-3
SYSD1T
与SYSD0T相同,但为SYSD1T定义
4-23
-
写忽略,读=0
24-25
SYSA0T
SYSA0优先级位置IPIC输出中断类型。定义在SYSA0优先级位置中,哪种类型的IPIC输出中断信号(/int、/cint或/smi)向核宣告其请求有效。不能动态修改这些位。(要修改它,软件必须确保对应中断源被屏蔽,或在修改期间不会发生中断)。
SYSA0T定义如下:
00 SYSA0的/int请求对核有效。
01 SYSA0的/cint请求对核有效。
10 SYSA0的/smi请求对核有效。
11 保留
26-27
SYSA1T
与SYSA0T相同,但为SYSA1T定义
28-31
-
写忽略,读=0
8.5.8 系统外部中断未决寄存器(SEPNR System External Interrupt Pending Register)
SEPNR中的每一位都对应一个外部中断源,如图8-11所示。当收到中断时,中断寄存器置位相应的SEPNR位。
1 该位仅在将ipp_ind_ext_int[0]信号配置为外部可屏蔽中断(SEMSR[Sipp_ind_ext_int[0]]=0)时才有效
2 用户应在复位无效之前将所有的IRQ输入都驱动为无效状态
图8-11 系统外部中断挂起寄存器(SEPNR)
表8-16定义了SEPNR的位字段。
表8-16 SEPNR位字段说明
位
名字
说明
0-7
IRQn
每一位都对应一个外部中断源。当收到中断时,中断寄存器置位相应的SEPNR位。
在处理未决中断时,用户必须清除对应的SEPNR位。对于电平触发的情况,软件需要将/IRQn置为无效,这样可以自动清除SEPNR中的位。对于边沿触发的情况,软件需要清除SEPNR中的位。
将SEPNR位置为1可以清除SEPNR位。因为用户只能清除该寄存器中的位,因此向该寄存器写入0无效。
8-31
-
写忽略,读=0
8.5.9 系统混合中断组A优先级寄存器(SMPRR_A System Mixed Interrupt Group A Priority Register)
SMPRR_A如图8-12所示,它定义表8-17所列出的中断源之间的优先级。
图8-12 系统混合中断组A优先级寄存器(SMPRR_A)
表8-17定义了SMPRR_A的位字段。
表8-17 SMPRR_A字段说明
位
名字
说明
0-2
MIXA0P
MIXA0优先级顺序。定义哪个中断源在MIXA0优先级位置中宣告其请求有效。用户不能为多个优先级位置(0-7)规定相同的编码。可以动态改变这些位。MIXA0P的定义如下:
000 ipi_int_internal[32]在MIXA0P优先级位置中宣告其请求有效。
001 ipi_int_internal[33]在MIXA0P优先级位置中宣告其请求有效。
010 ipi_int_internal[34]在MIXA0P优先级位置中宣告其请求有效。
011 ipi_int_internal[35]在MIXA0P优先级位置中宣告其请求有效。
100 ipp_ind_ext_int [0]在MIXA0P优先级位置中宣告其请求有效。在将ipp_ind_ext_int [0]信号配置为外部可屏蔽中断(SEMSR[S ipp_ind_ext_int [0]]=0)时,MIXA0位置的该字段才有效(不能被忽略)。
101 ipp_ind_ext_int [1]在MIXA0P优先级位置中宣告其请求有效。。
110 ipp_ind_ext_int [2]在MIXA0P优先级位置中宣告其请求有效。
111 ipp_ind_ext_int [3]在MIXA0P优先级位置中宣告其请求有效。
3-11,16-27
MIXA1P-MIXA 7P
与MIXA 0P相同,但为MIXA 1P-MIXA 7P定义
12-15,28-31
-
写忽略,读=0
8.5.10 系统混合中断组B优先级寄存器(SMPRR_B System Mixed Interrupt Gro
展开阅读全文