首页 理论教育 中断控制器寄存器描述嵌入式技术

中断控制器寄存器描述嵌入式技术

时间:2026-01-26 理论教育 南栀 版权反馈
【摘要】:INTMOD寄存器是确定中断源的中断方式。芯片复位后,该寄存器的默认值为0x7F。S3C2410A中的优先级发生模块由7个仲裁器组成,其中6个是一级仲裁器,1个二级仲裁器。每个仲裁器可以处理6个中断请求,这6个中断请求取决于PRIORITY寄存器中ARB_MODE和ARB_SEL两个功能位。在CPU对中断请求处理完毕后,用户需要在软件中对INTPND的相应位进行清零操作,这点与SRCPND寄存器类似,需要注意的是,向INTPND寄存器相应bit位写“1”后,这个bit位被清零。

(1)SRCPND(S OURCE PENDIND REGISTER)——中断源挂起寄存器

SRCPND寄存器的物理地址是0x4A000000,是可读写(R/W)的,寄存器长度是32位的。芯片复位后,该寄存器的默认值为0x00000000。

SRCPND中的每一位都对应着一个中断源。如果SRCPND的某一位被设置为“1”,那么说明该位对应的中断源发出了中断请求并等待处理。如果SRCPND的某一位被设置为“0”,则该位对应的中断源没有发出中断请求。

在使用SRCPND寄存器时应注意,当CPU响应某一中断源的中断请求之后,用户需在软件中将SRCPND寄存器中对应该中断源的bit位清零,否则中断服务程序返回后,中断控制器会认为刚刚CPU响应过的中断源再次发出了中断请求且等待被CPU处理。

表5-2说明了SRCPND寄存器中bit位对应的中断源。

5-2 SRCPND寄存器中bit位对应的中断源

图示

(2)INTMOD(INTERRUPT MODE REGISTER)——中断模式寄存器

INTMOD寄存器的物理地址是0x4A000004,是可读写(R/W)的,寄存器长度是32位的。芯片复位后,该寄存器的默认值为0x00000000。

ARM920T核心有两种中断模式,一种是FIQ模式(快速中断请求),另一种是IRQ模式(普通中断请求)。前者属于CPU特权模式下的一种中断方式,常用于高速数据传输;后者属于CPU用户模式下的中断方式,是最常用的中断方式。一般情况下,FIQ中断模式不常用,常用IRQ中断模式。INTMOD寄存器是确定中断源的中断方式。如果INTMOD中的某一位被设置为“1”,那么对应该位的中断源产生中断的方式为FIQ,否则为IRQ。注意,同时仅有一个中断源可以被配置为FIQ中断模式,也即INTMOD寄存器中同时只有一位可以被设置为“1”。表5-3给出了INTMOD寄存器的具体功能。

5-3 INTMOD寄存器的具体功能

图示

(续)

图示

(3)INTMASK(INTERRUPT MASK REGISTER)——中断屏蔽寄存器

INTMASK寄存器的物理地址是0x4A000008,是可读写(R/W)的,寄存器长度是32位的。芯片复位后,该寄存器的默认值为0xFFFFFFFF。

INTMASK寄存器的功能是屏蔽某个中断源的中断服务,使CPU不响应该中断源的中断服务。如果INTMASK中的某一位被设置为“1”,那么CPU不会响应其对应中断源的中断服务,即使SRCPND中的对应位为“1”也不会响应;反之,CPU会响应其对应中断源的中断服务。表5-4给出了INTMASK寄存器的具体功能。

5-4 INTMASK寄存器的具体功能

图示

(续)

图示

(4)PRIORITY(PRIORITY REGISTER)——优先级寄存器

PRIORITY寄存器的物理地址是0x4A00000C,是可读写(R/W)的,寄存器长度是21位的。芯片复位后,该寄存器的默认值为0x7F。

S3C2410A中的优先级发生模块由7个仲裁器(ARBITER)组成,其中6个是一级仲裁器,1个二级仲裁器。优先级发生模块结构图如图5-2所示。

每个仲裁器可以处理6个中断请求,这6个中断请求取决于PRIORITY寄存器中ARB_MODE和ARB_SEL两个功能位。如果ARB_SEL=00b,则优先级顺序为REQ0、REQ1、REQ2、REQ3、REQ4和REQ5;如果ARB_SEL=01b,则优先级顺序为REQ0、REQ2、REQ3、REQ4、REQ1和REQ5;如果ARB_SEL=10b,则优先级顺序为REQ0、REQ3、REQ4、REQ1、REQ2和REQ5;如果ARB_SEL=11b,则优先级顺序为REQ0、REQ4、REQ1、REQ2、REQ3和REQ5。

仲裁器中REQ0的优先级总是最高的,REQ5的优先级总是最低的。改变ARB_SEL的值可以改变REQ1~REQ4的优先级顺序。

如果ARB_MODE=0b,那么仲裁器将工作在固定优先级顺序模式下。在这种模式中,用户可以通过手动配置ARB_SEL的值来重新定义优先级顺序。如果ARB_MODE=1b,则ARB_SEL的值按照下列原则变化。

●如果REQ0中断请求被CPU响应,那么ARB_SEL的值不发生变化。

●如果REQ1中断请求被CPU响应,那么ARB_SEL的值自动变为01b。

●如果REQ2中断请求被CPU响应,那么ARB_SEL的值自动变为10b。

●如果REQ3中断请求被CPU响应,那么ARB_SEL的值自动变为11b。(https://www.xing528.com)

●如果REQ4中断请求被CPU响应,那么ARB_SEL的值自动变为00b。

图示

图5-2 优先级发生模块结构图

表5-5给出了PRIORITY寄存器的功能表。

5-5 PRIORITY寄存器的功能表

图示

(续)

图示

(5)INTPND(INTERRUPT PENDING REGISTER)——中断挂起寄存器

INTPND寄存器的物理地址是0x4A0000010,是可读写(R/W)的,寄存器长度是32位的。芯片复位后,该寄存器的默认值为0x00000000。

INTPND中的bit位是用来说明其对应的中断源是否发出了中断请求,且这个中断请求是没有被屏蔽的,是有效的,有最高优先级的。

INTPND寄存器位于优先级逻辑之后,所以同时只能有一个bit位能够置“1”,对应的中断源向CPU发出IRQ中断请求。在IRQ中断服务序列中,用户可以读取INTPND寄存器,以确定CPU受理了32个中断源中哪个中断源的请求。在CPU对中断请求处理完毕后,用户需要在软件中对INTPND的相应位进行清零操作,这点与SRCPND寄存器类似,需要注意的是,向INTPND寄存器相应bit位写“1”后,这个bit位被清零。如果INTPND的某个bit位是“1”,而向这个bit位写入“0”,那么INTPND和INTOFFSET寄存器在给bit位上同时会出现意想不到的值,所以不要尝试在INTPND的bit位为“1”的时候写入“0”的操作。表5-6给出了INTPND寄存器的功能表。

5-6 INTPND寄存器的功能表

图示

(6)INTOFFSET(INTERRUPT OFFSET REGISTER)——中断偏移寄存器

INTOFFSET寄存器的物理地址是0x4A0000014,是只读写(R)的,寄存器长度是32位的。芯片复位后,该寄存器的默认值为0x00000000。

这个寄存器的功能是显示在IRQ模式下,哪个中断源在INYPND寄存器中被挂起了。在清零SRCPND和INTPND寄存器之后,INTOFFSET寄存器中的bit位自动被清零。表5-7给出了INTOFFSET寄存器的功能表。

5-7 INTOFFSET寄存器的功能表

图示

(7)SUBSRCPND(SUB SOURCE PENDING REGISTER)——子源挂起寄存器

SUBSRCPND寄存器的物理地址是0x4A0000018,是可读写(R/W)的,寄存器长度是32位的。芯片复位后,该寄存器的默认值为0x00000000。

该寄存器功能和SRCPND类似,它是对SRCPND寄存器中的中断源的补充,在这个寄存器中又列出了11个中断源。SUBSRCPND的操作与SRCPND相同。表5-8给出了SUB- SRCPND寄存器的功能表。

5-8 SUBSRCPND寄存器的功能表

图示

(8)INTSUBMASK(INTERRUPT SUB MASK REGISTER)——子中断屏蔽寄存器

INTSUBMASK寄存器的物理地址是0x4A000001C,是可读写(R/W)的,寄存器长度是32位的。芯片复位后,该寄存器的默认值为0x7FF。

该寄存器的功能与INTMASK寄存器类似,是对其屏蔽中断源的补充。INTSUBMASK寄存器的操作和INTMASK相同。表5-9给出了INTMASK寄存器的功能表。

5-9 INTMASK寄存器的功能表

图示

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈