第8章 集成可编程中断控制器.docx

上传人:b****6 文档编号:5885738 上传时间:2023-01-01 格式:DOCX 页数:53 大小:313.07KB
下载 相关 举报
第8章 集成可编程中断控制器.docx_第1页
第1页 / 共53页
第8章 集成可编程中断控制器.docx_第2页
第2页 / 共53页
第8章 集成可编程中断控制器.docx_第3页
第3页 / 共53页
第8章 集成可编程中断控制器.docx_第4页
第4页 / 共53页
第8章 集成可编程中断控制器.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

第8章 集成可编程中断控制器.docx

《第8章 集成可编程中断控制器.docx》由会员分享,可在线阅读,更多相关《第8章 集成可编程中断控制器.docx(53页珍藏版)》请在冰豆网上搜索。

第8章 集成可编程中断控制器.docx

第8章集成可编程中断控制器

第八章集成可编程中断控制器(IPIC)

本章介绍集成可编程中断控制器(IPIC),包括外部信号的定义及其功能。

此外,本章还介绍配置、控制和状态寄存器。

注意,本参考手册的每一章都介绍了一个部件的特定的具体的初始化过程。

8.1绪论

本节介绍IPIC中断协议、IPIC单元控制的不同类型的中断源、以及IPIC寄存器及其编程指南。

编程模型与MPC8260的中断控制相似。

中断控制器提供中断管理,负责接收来自不同中断源(内部的和外部的)的硬件产生的中断。

它还将中断分为不同的优先级,并将中断交付给CPU,由CPU服务。

IPIC区分来自下列控制单元的中断的优先级并管理这些中断:

●DDR存贮器控制器(DDR)

●本地总线内存控制器(LBC)

●PCI1和PCI2

●四通道DMA控制器(DMA)

●消息单元(MU)

●双三态Ethernet控制器(TSEC1和TSEC2)

●DUART通信模块(DUART)

●USB2.0控制器(USBDR和USBMPH)

●安全引擎(SEC)

●系统总线仲裁器(SBA)

●周期间隔定时器(PIT)

●实时时钟定时器(RTCALR和RTCSEC)

●八个全局定时器(GTM1-GTM8)

●软件看门狗定时器(WDT)

●I2C控制器(I2C1和I2C2)

●SPI控制器(SPI)

●电源管理控制器(PMC)

●两个通用I/O控制器(GPIO1和GPIO2)

●外部引脚(/IRQ[0:

7])

IPIC单元控制的中断源引起处理器核内部的异常。

内部中断(/int)信号是从IPIC到核的主要中断输出信号,它引起常规中断异常。

/cint是从IPIC到处理器核的紧急中断输出信号,它引起紧急中断异常。

/smi信号是从IPIC到处理器核的系统管理中断输出信号,它引起系统管理中断异常。

机器检查异常由IPIC产生的内部/mcp引起,通知主处理器出现错误、外部/IRQ0机器检查请求有效(在SEMSR[SIRQ0]=1时允许)、以及其他情况。

表8-1列出了各种功能部件和设备的外部信号与IPIC单元的关系。

IPIC接收来自下列两个地方的中断请求信号:

●该集成设备的外部

●该集成设备的内部

该单元从当前所有的中断中选择最高优先级的中断,并将它交给内部处理器核,或片外,在外部服务中断。

IPIC还管理内部不可屏蔽机器检查处理器(/mcp)信号和片外中断源产生的中断(/IRQ[0:

7])。

IPIC的中断发送程序监控内部配置寄存器的输出。

若某个收到的中断信号的优先级最高,IPIC就将某个中断未决寄存器中的对应位置位——系统内部中断未决寄存器(SIPNR)/系统外部中断未决寄存器(SEPNR)。

如果该中断未被屏蔽,IPIC就宣告/int信号有效,向处理器指示中断请求。

若处理器正在运行特定/int、/cint或/smi的中断处理程序代码,则处理器必须通过显式(用软件)读取相应的中断向量寄存器(SIVCR、SCVCR或SMVCR),将外部中断处理程序向量化。

读取后,IPIC单元将向量(与中断源相关)返回给中断处理程序例程。

此外,处理程序可以将不同分支的中断处理向量化

图8-1中断源结构图

IPIC可以接收来自下列不同中断域的中断:

●8个外部——片外信号(/IRQ[0:

7])

●35个内部——片上中断信号。

中断源为DDRMEMC、LB、PCI1、PCI2、DMA、MU、TSEC1、TSEC2、DUART、USB、SEC、系统总线仲裁器、PIT、RTC、GTM、I2C1、I2C2、SPI、GPIO1、GPIO2和PMC

●1个外部和5个内部——片上/mcp中断信号。

中断源为/IRQ0、软件看门狗定时器(WDT)、PCI1、PCI2、MU和系统总线仲裁器(SBA)

中断控制器提供了屏蔽每个中断源的能力,还可以屏蔽GPIO、SEC或SBA外围事件中的多个事件。

当收到一个内部或外部中断时,IPIC检查其配置寄存器,确定应将中断发送到片外(到外部/INTA),还是作为正常外部中断由处理器核服务(通过/int信号)。

第三种方法是,如果进来的中断已经被配置为紧急中断或系统管理中断,IPIC就向核宣告/cint或/smi有效,完成该中断的处理。

到核的/cint或/smi信号有效会把中断分别作为紧急或系统管理中断来服务。

8.2特性

IPIC单元实现了下列特性:

●与MPC8260中断控制器在功能和编程方面兼容

●支持8个外部和35个内部离散向量化中断源

●支持1外部个和5个内部/mcp中断源

●可编程最高优先级请求(可被编程,以支持紧急(/cint)或系统管理(/smi)中断)

●两个可编程优先级混合组,每组4个片上和4个外部中断信号,两种优先级方案:

分组的(grouped)和分散的(spread)

●两个可编程优先级内部组,每组8个片上中断信号,两种优先级方案:

分组的(grouped)和分散的(spread)

●每组可以安排两个最高优先级的中断,以支持紧急或系统管理中断类型

●外部和内部中断可以定向到主处理器

●每个中断源的向量号唯一

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-1IPIC信号属性

名字

端口

功能

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-2IPIC外部——详细信号说明

信号

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-3IPIC寄存器地址映射

偏移量

寄存器

访问

复位值

节/页

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系统全局中断配置寄存器(SICFRSystemGlobalInterruptConfigurationRegister)

SICFR如图8-2所示,它定义最高优先级中断,以及中断在优先级表中是分组的还是分散的。

更多信息见表8-4。

图8-2系统全局中断配置寄存器(SICFR)

表8-4定义了SICFR的位字段。

表8-4SICFR字段说明

名字

说明

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的定义如下:

00HPI到核的/int请求有效。

01HPI到核的/smi请求有效。

10HPI到核的/cint请求有效。

11保留。

24-31

写忽略,读=0

8.5.2系统常规中断向量寄存器(SIVCRSystemRegularInterruptVectorRegister)

SIVCR如图8-3所示,它包括7位编码,表示最高优先级上的常规未屏蔽中断源(/INT)。

注意

在核禁止模式中,用户只能使用SIVCR,以便读取更新了的中断向量寄存器(不应使用SCVCR和SMVCR)。

图8-3系统常规中断向量寄存器(SIVCR)

表8-5定义了SIVCR的位字段。

表8-5SIVCR字段说明

名字

说明

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-6IVEC/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

TSEC1Tx

0b010_0000

33

TSEC1Rx

0b010_0001

34

TSEC1Err

0b010_0010

35

TSEC2Tx

0b010_0011

36

TSEC2Rx

0b010_0100

37

TSEC2Err

0b010_0101

38

USBDR

0b010_0110

39

USBMPH

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

RTCALR

0b100_0100

69

USBMPH

0b100_0101

70

SBA

0b100_0110

71

USBMPH

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和LSystemInternalInterruptPendingRegister)

SIPNR_H和SIPNR_L中的每一位都对应一个内部中断源,如图8-4和8-5所示。

(表8-7列出了已实现了的位。

)当收到中断请求时,中断控制器置位对应的SIPNR位。

在处理完未决中断后,通过清除对应的事件寄存器位,用户可以清除SIPNR位。

注意,SIPNR位的状态不会依相对优先级改变。

图8-4系统内部中断挂起寄存器(SIPNR_H)

表8-7列出了实现的SIPNR_H位。

表8-7SIPNR_H/SIFCR_H/SIMSR_H分配

字段

0

TSEC1Tx

1

TSEC1Rx

2

TSEC1Err

3

TSEC2Tx

4

TSEC2Rx

5

TSEC2Err

6

USBDR

7

USBMPH

8-23

24

UART1

25

UART2

26

SEC

27-28

29

I2C1

30

I2C2

31

SPI

表8-8定义了SIPNR_H的位字段。

表8-8SIPNR_H字段说明

名字

说明

0-31

INTn

每个已实现了的位(表8-7中列出)都对应一个内部中断源。

当收到中断请求时,中断控制器置位对应的SIPNR位。

在处理完未决中断后,通过清除对应的事件寄存器位,用户可以清除SIPNR位。

SIPNR位是只读的。

写入该寄存器无用。

注意,SIPNR位的状态不会依相对优先级变化。

对于未实现的位,写忽略,读=0。

SIPNR_L如图8-4所示。

图8-5系统内部中断未决寄存器(SIPNR_L)

表8-9列出了实现的SIPNR_L位。

表8-9SIPNR_L/SIFCR_L/SIMSR_L分配

字段

0

RTCSEC

1

PIT

2

PCI1

3

ipi_int_internal[35]-

4

RTCALR

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-10SIPNR_L字段说明

名字

说明

0-31

INTn

每个已实现了的位(表8-7中列出)都对应一个内部中断源。

当收到中断请求时,中断控制器置位对应的SIPNR位。

在处理完未决中断后,通过清除对应的事件寄存器位,用户可以清除SIPNR位。

SIPNR位是只读的。

写入该寄存器无效。

注意,SIPNR位的状态不会依相对优先级变化。

对于未实现的位,写忽略,读=0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1