开关中断的装置和方法

文档序号:6605547阅读:247来源:国知局
专利名称:开关中断的装置和方法
技术领域
本发明涉及中断控制技术领域,特别是涉及一种开关中断的装置和方法。
背景技术
片上系统(SOC,System on Chip)芯片的中断控制器中通常会有中断屏蔽寄存器 (IMR,Interrupt Mask Register),它通常是一个8位寄存器,用来设置中断请求的屏蔽信 息。当IMR中第i位被屏蔽(mask)时(即IMR中第i位的Bit值为1),禁止(Interrupt Request i)引脚发出的中断请求信号,使之不可能通过中断控制器向CPU申请中断,其 中,巩与中断源相连,用于产生中断请求信号,i = 0 7;反之,当IMR中第i位被开放 (unmask)时(即IMR中第i位的Bit值为0),则允许IRi引脚发出的中断请求信号,使之 通过中断控制器向CPU申请中断。在对第i位进行屏蔽或开放操作时,为了不影响IMR中其它位,需要先把IMR的值 读出。图1示出了现有技术一种IMR寄存器的示例,如果想把第4位的Bit值置1,就需要 把原来的值读出,然后再写入一个值,得到图2所示结果。因此,在屏蔽或开放中断的过程中,需要操作两次IMR寄存器,先读后写,但是,在 实际的操作系统运行的过程中,中断随时都有可能发生,即中断在每条指令中插入,而读写 是两条指令。因此这两条指令很有可能在不同的线程中执行,而不同的线程有可能进行不 同的中断处理,不同的中断处理在读IMR寄存器和写入IMR寄存器的值很有可能不一样,因 而容易导致不同的中断处理在对IMR寄存器的操作中彼此产生干扰。针对上述情形,目前传统的做法是,保证IMR寄存器的读写是一个原子操作,也即 在这个过程中不能被其他线程切换,但是,原子操作会带来读写保护繁琐的问题,进而降低 操作系统的工作效率。总之,需要本领域技术人员迫切解决的一个技术问题就是如何能够提高操作系 统的工作效率。

发明内容
本发明所要解决的技术问题是提供一种开关中断的装置和方法,用以提高操作系 统的工作效率。为了解决上述问题,本发明公开了一种开关中断的装置,包括中断屏蔽寄存器;位数与所述中断屏蔽寄存器一一对应的虚拟寄存器,包括关中断寄存器,接受对其各个位的写入操作;及开中断寄存器,接受对其各个位的写入操作;寄存器转换器,根据关中断寄存器中表示屏蔽中断的位的状态,设置该位在中断 屏蔽寄存器中所对应的位的状态;以及,根据开中断寄存器中表示开放中断的位的状态,设 置该位在中断屏蔽寄存器中所对应的位的状态。
另一方面,本发明还公开了一种开关中断的方法,包括建立位数与中断屏蔽寄存器一一对应的虚拟寄存器,其中,所述虚拟寄存器包括 关中断寄存器和开中断寄存器,所述关中断寄存器、开中断寄存器接受对其各个位的写入 操作;根据关中断寄存器中表示屏蔽中断请求的位的状态,设置该位在所述中断屏蔽寄 存器中所对应的位的状态;根据开中断寄存器中表示屏蔽中断请求的位的状态,设置该位在所述中断屏蔽寄 存器中所对应的位的状态;根据中断屏蔽寄存器的位的状态控制中断的开关。与现有技术相比,本发明具有以下优点本发明采用虚拟寄存器,该虚拟寄存器包括关中断寄存器和开中断寄存器,其中, 所述关中断寄存器寄存器用于接受对其各个位的写入操作,开放寄存器用于接受对其各个 位的写入操作;而寄存器转换器可以自动针对所述虚拟寄存器的“1”位,对中断屏蔽寄存 器中与该“ 1,,位相对应的位进行操作;这样,对于MCU或者CPU等操作系统来说,要关某个 中断时,只需对所述关中断寄存器的相应于该中断的位执行写入操作,要开某个中断时,只 需对所述开中断寄存器的相应于该中断的位执行写入操作;而操作一个寄存器是原子操 作,即写一个寄存器的过程中不会被打断,这样就能够避免操作系统频繁的读写保护。


图1是现有技术一种IMR寄存器的示例;图2是对图1中Bit4置1后的结果示例;图3是本发明一种开关中断的装置一实施例的结构图;图4是本发明在MCU控制器中的一种应用示例;图5是本发明一种开关中断的装置另一实施例的结构图;图6是本发明一种开关中断的方法实施例的流程图。
具体实施例方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实 施方式对本发明作进一步详细的说明。本发明的核心构思之一在于,在原有中断屏蔽寄存器存贮屏蔽信息的前提下,采 用虚拟寄存器驱动芯片的操作系统;具体而言,为保证中断屏蔽寄存器中值的唯一性,本发 明开关中断的装置采用两个虚拟寄存器,包括关中断寄存器和开中断寄存器。其中,关中断 寄存器接受对其各个位的写入操作,开中断寄存器接受对其各个位的写入操作。这样,欲 关闭中断屏蔽寄存器第i位的中断,只需将所述关中断寄存器的相应位写入“1”;欲开放中 断屏蔽寄存器第i位的中断,只需将所述开中断寄存器的相应位写入“1”;如此,中断的屏 蔽或开放只需执行一次寄存器写入操作,因而能够避免CPU或MCU (单片机,Single Chip Microcomputer)等操作系统频繁的读写保护。图3示出了本发明一种开关中断的装置实施例1的结构图。开关中断的装置用于 屏蔽或者开放中断请求,具体可以包括
中断屏蔽寄存器301,用于使能中断;一个操作系统若有n级中断,在CPU中就有n个中断请求触发器,总称为中断请求 寄存器;与之对应的有n个中断屏蔽触发器,总称为中断屏蔽寄存器,其中,n为自然数。所述使能中断主要可以包括屏蔽或开放中断;例如,在屏蔽中断时,即使中断请求 寄存器发出中断信号,也不会响应该信号;而在开放中断时,可根据该中断信号向CPU申请 中断。位数与所述中断屏蔽寄存器301 —一对应的虚拟寄存器302,虚拟寄存器302具体 可以包括关中断寄存器321,根据某一屏蔽中断的请求,接受对该屏蔽中断的请求在关中断 寄存器321中所相应的位的写入操作;开中断寄存器322,根据某一开放中断的请求,接受对该开中断的请求在开中断寄 存器322中所相应的位的写入操作;寄存器转换器303,用于根据关中断寄存器321中表示屏蔽中断的位的状态,设置 该位在中断屏蔽寄存器301中所对应的位的状态;以及,根据开中断寄存器322中表示开放 中断的位的状态,设置该位在中断屏蔽寄存器301中所对应的位的状态。本发明可以应用于S0C等各种芯片中,用以提高操作系统的工作效率;其中,所述 虚拟寄存器302的位与所述中断屏蔽寄存器301的位一一对应,均代表某一中断源。举例而言,关中断寄存器321中取值为二进制代码“1”的位,即关中断寄存器321 的“1”位,表示开放该中断源的某一中断请求,也即关中断;开中断寄存器322中取值为二 进制代码“1”的位,即开中断寄存器322的“1”位,表示开放该中断源的中断请求,也即开 中断;而中断屏蔽寄存器301中取值为二进制代码“0”的位,即中断屏蔽寄存器301的“0” 位,表示开放该中断源的中断请求,也即开中断,中断屏蔽寄存器301中取值为“1”位,即中 断屏蔽寄存器301的“1”位,表示屏蔽该中断源的中断请求,也即关中断。也就是说,寄存器转换器303将关中断寄存器321的“ 1”位在中断屏蔽寄存器301 中所对应的位设置为“1”,而将开中断寄存器322的“1”位在中断屏蔽寄存器301中所对应 的位设置为“0”参照图4,在本发明的一种应用示例中,在芯片的MCU控制器上电后,会为 所述中断屏蔽寄存器301和虚拟寄存器302分配地址空间(操作系统只针对所述虚拟寄存 器302进行操作),例如,所述中断屏蔽寄存器301的地址为0x60002000,所述关中断寄存 器321的地址为0x60002000,所述开中断寄存器322为0x60002004 ;这样,MCU控制器即可 根据关中断或开中断的需求,对所述虚拟寄存器302中与所述需求相应的位地址执行写入 或读出操作。寄存器转换器303忽略所述关中断寄存器321和开中断寄存器322的“0”位,只 是针对中断屏蔽寄存器301中与所述关中断寄存器321和开中断寄存器322的“1”位相对 应的位进行操作。 在具体实现中,可由触发器来实现寄存器转换器303的功能,此时,所述寄存器转 换器303具体可以包括第一触发器A1,具体可以包括第一输入端All,其接所述关中断寄存器321的位;第一输出端A12 其与所述中断屏蔽寄存器301的位相连,用于在所述第一输All由低电平变为高电平时,输出高电平;第二触发器A2,具体可以包括第二输入端A21,其接所述开中断寄存器322的位;第二输出端A22,其与所述中断屏蔽寄存器301的位相连,用于在所述第二输入端 A21由低电平变为高电平时,输出低电平;置零电路A3,用于在所述第一输出端A12输出高电平,或者,所述第二输出端A22 输出低电平时,将所述第一输入端All和第二输入端A21置零。公知的是,因为数字电路只有开(“1”)和关(“0”)两个状态,而开的电压又和 电源等因素有关系,所以,统称为高电平,低电平反之,其中,电压可以是相对于某个参考点 (例如,0 0.5V)的电位差。也即,本发明的输出低电平等同于“0”位状态,输出高电平等 同于“1”位状态。由于中断屏蔽寄存器301与关中断寄存器321的位一一对应,所以,所述第一输入 端All所连接的位与第一输出端A12所连接的位也具有一一对应关系,例如,所述第一输入 端All接关中断寄存器321的第i位,则所述第一输出端A12也与中断屏蔽寄存器301的第 i位相连;同理,所述第二输入端A21所连接的位也与第二输出端A22所连接的位也是一一 对应的。所述两个触发器在各自输入端的上升沿(丨)到来之时,其输出端进行电平状态 的翻转或者保持。为保证所述两个触发器的正常工作,在所述第一输出端A12输出高电平,或者,所 述第二输出端A22输出低电平时,所述置零电路A3会将其各自的输入端置零;在实际中, 所述置零电路A3的输入端可接第一输出端A12和第二输出端A22,输出端则与第一输入端 All和第二输入端A21相连。例如,在时钟周期T,MCU控制器向所述关中断寄存器321的第1位写入“ 1”,也即, 第一输入端All的上升沿到来,第一输出端A12将高电平送到中断屏蔽寄存器301,然后,置 零电路A3将第一输入端All和第二输入端A21置零;在时钟周期T+2,MCU控制器向所述开中断寄存器322的第1位写入“ 1”,也即,第 二输入端A21的上升沿到来,第二输出端A22将低电平送到中断屏蔽寄存器301,然后,置零 电路A3将第一输入端All和第二输入端A21置零;其中,所述T为自然数。对于MCU或者CPU来说,要关某个中断时,只需对关中断寄存器321的相应于该中 断的位执行写入操作,要开某个中断时,只需对开中断寄存器322的相应于该中断的位执 行写入操作;而操作一个寄存器是原子操作,即一个寄存器的写入操作过程不会被打断,这 样就能够避免操作系统频繁的读写保护。图5示出了本发明一种开关中断的装置另一实施例的结构图,具体可以包括中断屏蔽寄存器501;位数与所述中断屏蔽寄存器501—一对应的虚拟寄存器502,该虚拟寄存器502具 体可以包括关中断寄存器521,根据某一屏蔽中断的请求,接受对该屏蔽中断的请求在屏蔽寄 存器521中所相应的位的写入操作;开中断寄存器522,根据某一开放中断的请求,接受对该开放中断的请求在开放寄
7存器522中所相应的位的写入操作;状态寄存器523,接受对其各个位的读出操作;寄存器转换器503,用于将中断屏蔽寄存器501中与所述关中断寄存器521的“1” 位相对应的位设置为“1”;将中断屏蔽寄存器501中与所述开中断寄存器522的“1”位相 对应的位设置为“0”;以及,将所述中断屏蔽寄存器501的位信息送入所述状态寄存器523。在本实施例中,所述状态寄存器523可以提供用户各个位的当前状态;例如,图4 中MCU控制器为所述状态寄存器323分配的地址为0x60002008,通过访问该地址读取状态 寄存器523某一位的值,即可以获知该位处于开中断状态还是关中断状态。所述状态寄存器523各个位的当前状态可以作为写关中断寄存器521和/或开中 断寄存器522的依据,但是,无论状态寄存器523的当前状态如何,用户都可以对关中断寄 存器521和开中断寄存器522执行写入操作;也即,本领域技术人员可以在任意时钟周期执 行上述写入操作,或者,在任意时钟周期获知所述相应位的当前状态,本发明对此不加以限 制。本实施例所述的中断屏蔽寄存器501、关中断寄存器521、开中断寄存器522及寄 存器转换器503与图3所示的中断屏蔽寄存器301、关中断寄存器321开、中断寄存器322 及寄存器转换器303相似,相关之处可以参考前述对图3的说明。与前述装置实施例相应,本发明还公开了一种开关中断的方法实施例,参照图6, 具体可以包括步骤601 步骤603。步骤601、建立位数与中断屏蔽寄存器一一对应的虚拟寄存器,其中,所述虚拟寄 存器可以包括关中断寄存器、开中断寄存器,所述关中断寄存器、开中断寄存器可接受对其 各个位的写入操作;在实际中,所述虚拟寄存器可以直接接受MCU控制器、CPU控制器等操作系统对其 各个位的写入操作。步骤602、根据关中断寄存器中表示屏蔽中断请求的位的状态,设置该位在所述中 断屏蔽寄存器中所对应的位的状态。举例来说,关中断寄存器中取值为“1”的位,即状态为“1”的位,表示屏蔽中断源 的某一中断请求。同样地,中断屏蔽寄存器301中取值为“1”位,即中断屏蔽寄存器301的 “1”位,表示屏蔽该中断源的中断请求,也即关中断。如此,步骤602也就是将所述中断屏蔽 寄存器中与所述关中断寄存器的取值为二进制代码“ 1,,位相对应的位设置为“ 1 ”。在实际中,可利用触发器来实现本步骤的功能,例如,第一触发器的第一输入端接 所述屏蔽寄存器的位,第一输出端与所述中断屏蔽寄存器的相应位相连;在其第一输入端 的上升沿(丨)到来之时,其第一输出端进行电平状态的翻转或者保持;相应地,本步骤的执行过程可以为,在所述关中断寄存器的位由低电平变为高电 平时,向所述中断屏蔽寄存器中相对应的位输出高电平;以及,在向所述中断屏蔽寄存器中 相对应的位输出高电平时,将所述关中断寄存器和开中断寄存器中的相应位置零。步骤603、根据开中断寄存器中表示屏蔽中断请求的位的状态,设置该位在所述中 断屏蔽寄存器中所对应的位的状态。举例来说,开中断寄存器中取值为“1”的位,即状态为“1”的位,表示屏蔽中断源 的某一中断请求。而中断屏蔽寄存器中取值为“0”位,即中断屏蔽寄存器的“0”位,表示开
8放该中断源的中断请求,也即开中断。如此,步骤603也就是将所述中断屏蔽寄存器中与所 述开中断寄存器的取值为二进制代码“1”位相对应的位设置为“0”。同理,可利用触发器原理来实现本步骤在所述开中断寄存器的位由低电平变为 高电平时,向所述中断屏蔽寄存器中相对应的位输出低电平;并且,在向所述中断屏蔽寄存 器中相对应的位输出低电平时,将所述关中断寄存器和开中断寄存器中的相应位置零。本发明中所述置零操作的目的是保证上升沿(低电平变为高电平)的有效性。例 如,在时钟周期T,控制器向所述关中断寄存器的第1位写入“1”,也即,第一输入端的上升 沿到来,第一输出端将高电平送到中断屏蔽寄存器,然后,将第一输入端和第二输入端置 零;在时钟周期T+2,控制器向所述开中断寄存器的第1位写入“1”,也即,在开放寄存 器第1位的上升沿到来时,将低电平送到中断屏蔽寄存器,然后,将第一输入端和开放寄存 器的第1位置零;其中,所述T为自然数。在本发明的另一种实施例中,还可以提供各个位的当前状态,此时,所述虚拟寄存 器还可以包括状态寄存器,接受对其各个位的读出操作;所述方法还可以包括步骤604、将所述中断屏蔽寄存器的位信息送入所述状态寄存器;步骤605、根据中断屏蔽寄存器的位的状态控制中断的开关。中断屏蔽寄存器的某一位代表某一中断源。中断屏蔽寄存器的某一“0”位,可以 表示开放该位对应的中断源的中断请求,也即开中断;中断屏蔽寄存器的某一 “1”位,可以 表示屏蔽该位对应的中断源的中断请求,也即关中断。如此,根据中断屏蔽寄存器的位的状 态即可以控制中断的开关。需要说明的是,本领域技术人员可以根据实际需要,在任意时钟周期对所述关中 断寄存器或开中断寄存器执行写入操作,或者,在任意时钟周期读取所述状态寄存器而获 知所述中断屏蔽寄存器的各个位的当前状态,或者,在任意时钟周期根据中断屏蔽寄存器 的位的状态控制中断的开关;也即,本发明对所述步骤602、步骤603、步骤604和步骤605 的执行时期不加以限制。对于方法实施例而言,由于其与图3所示的装置实施例基本相似,所以描述的比 较简单,相关之处参见图3的部分说明即可。以上对本发明所提供的一种开关中断的装置和方法,进行了详细介绍,本文中应 用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理 解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发 明的限制。
权利要求
一种开关中断的装置,其特征在于,包括中断屏蔽寄存器;位数与所述中断屏蔽寄存器一一对应的虚拟寄存器,包括关中断寄存器,接受对其各个位的写入操作;及开中断寄存器,接受对其各个位的写入操作;寄存器转换器,根据关中断寄存器中表示屏蔽中断的位的状态,设置该位在中断屏蔽寄存器中所对应的位的状态;以及,根据开中断寄存器中表示开放中断的位的状态,设置该位在中断屏蔽寄存器中所对应的位的状态。
2.如权利要求1所述的装置,其特征在于,所述寄存器转换器将中断屏蔽寄存器中与 所述关中断寄存器中取值为“1”的位相对应的位设置为“1”,以及,将中断屏蔽寄存器中与 所述开中断寄存器中取值为“1”的位相对应的位设置为“0”。
3.如权利要求2所述的装置,其特征在于,所述寄存器转换器包括 第一触发器,包括第一输入端,其接所述屏蔽寄存器;及第一输出端,其与所述中断屏蔽寄存器相连,用于在所述第一输入端由低电平变为高 电平时,输出高电平; 第二触发器,包括第二输入端,其接所述开放寄存器;及第二输出端,其与所述中断屏蔽寄存器相连,用于在所述第二输入端由低电平变为高 电平时,输出低电平;及置零电路,用于在所述第一输出端输出高电平,或者,所述第二输出端输出低电平时, 将所述第一输入端和第二输入端置零。
4.如权利要求1所述的装置,其特征在于,还包括 状态寄存器,接受对其各个位的读出操作;所述寄存器转换器,将所述中断屏蔽寄存器的位信息送入所述状态寄存器。
5.一种开关中断的方法,其特征在于,包括建立位数与中断屏蔽寄存器一一对应的虚拟寄存器,其中,所述虚拟寄存器包括关 中断寄存器和开中断寄存器,所述关中断寄存器、开中断寄存器接受对其各个位的写入操 作;根据关中断寄存器中表示屏蔽中断请求的位的状态,设置该位在所述中断屏蔽寄存器 中所对应的位的状态;根据开中断寄存器中表示屏蔽中断请求的位的状态,设置该位在所述中断屏蔽寄存器 中所对应的位的状态;根据中断屏蔽寄存器的位的状态控制中断的开关。
6.如权利要求5所述的方法,其特征在于,根据关中断寄存器中表示屏蔽中断请求的 位的状态,设置该位在所述中断屏蔽寄存器中所对应的位的状态的步骤,即,将所述中断屏 蔽寄存器中与所述关中断寄存器的“ 1,,位相对应的位设置为“ 1 ”。
7.如权利要求5所述的方法,其特征在于,根据开中断寄存器中表示屏蔽中断请求的 位的状态,设置该位在所述中断屏蔽寄存器中所对应的位的状态的步骤,即,将所述中断屏蔽寄存器中与所述开中断寄存器的“ 1”位相对应的位设置为“0”。
8.如权利要求6所述的方法,其特征在于,将所述中断屏蔽寄存器中与所述关中断寄 存器的“ 1,,位相对应的位设置为“ 1,,的步骤,包括在所述关中断寄存器的位由低电平变为高电平时,向所述中断屏蔽寄存器中相对应的 位输出高电平;在向所述中断屏蔽寄存器中相对应的位输出高电平时,将所述关中断寄存器和开中断 寄存器中的相应位置零。
9.如权利要求7所述的方法,其特征在于,所述将所述中断屏蔽寄存器中与所述开中 断寄存器的“ 1,,位相对应的位设置为“0”的步骤,包括在所述开中断寄存器的位由低电平变为高电平时,向所述中断屏蔽寄存器中相对应的 位输出低电平;在向所述中断屏蔽寄存器中相对应的位输出低电平时,将所述关中断寄存器和开中断 寄存器中的相应位置零。
10.如权利要求1所述的方法,其特征在于,所述虚拟寄存器还包括状态寄存器,接受 对其各个位的读出操作;所述方法还包括将所述中断屏蔽寄存器的位信息送入所述状态寄存器。
全文摘要
本发明提供了一种开关中断的装置和方法,其中的装置具体包括中断屏蔽寄存器;位数与所述中断屏蔽寄存器一一对应的虚拟寄存器,包括关中断寄存器,接受对其各个位的写入操作;及开中断寄存器,接受对其各个位的写入操作;寄存器转换器,根据关中断寄存器中表示屏蔽中断的位的状态,设置该位在中断屏蔽寄存器中所对应的位的状态;以及,根据开中断寄存器中表示开放中断的位的状态,设置该位在中断屏蔽寄存器中所对应的位的状态。本发明用以提高操作系统的工作效率。
文档编号G06F9/30GK101894008SQ20101022106
公开日2010年11月24日 申请日期2010年6月28日 优先权日2010年6月28日
发明者艾国 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1