中断处理方法及装置的制作方法

文档序号:6563709阅读:102来源:国知局
专利名称:中断处理方法及装置的制作方法
技术领域
本发明涉及中断技术领域,具体涉及一种中断处理方法及装置。
背景技术
在片上集成系统(SoC)设计中,中断请求处理模块实时收集协处理器发来的中断请求,然后产生特定信号通知主控制器中央处理单元(CPU)或微程序控制器(MCU)运行与该中断请求对应的中断服务程序。
目前,对中断请求的处理分为允许嵌套和不允许嵌套两种,前者允许正在运行的中断服务程序被其它高优先级的中断请求打断,而后者则不允许正在运行的中断服务程序被打断。
图1为现有的允许嵌套的中断处理的流程图,如图1所示,其具体步骤如下步骤101协处理器发出中断请求。
步骤102中断请求处理模块捕捉到该中断请求,判断当前是否有中断服务程序正在运行,若是,执行步骤104;否则,执行步骤103。
步骤103中断请求处理模块通知主控制器运行与该中断请求对应的中断服务程序,本流程结束。
步骤104中断请求处理模块判断正在运行的中断服务程序对应的中断优先级是否高于当前收到的中断请求的中断优先级,若是,不作处理,本流程结束;否则,执行步骤105。
步骤105中断请求处理模块通知主控制器开始运行所述中断请求对应的中断服务程序。
步骤106主控制器收到所述通知后,中止当前中断服务程序的运行,并保存该中断服务程序的当前运行状态信息,开始运行所述中断请求对应的中断服务程序。
步骤107主控制器运行完当前中断服务程序,根据自身保存的被中止的中断服务程序的运行状态信息,恢复被中止的中断服务程序的运行。
由于系统的临时要求,可能会要求正在运行的中断服务程序由允许嵌套转变为不允许嵌套,此时主控制器要通知中断请求处理模块将该中断服务程序的中断优先级设置为最高;中断请求处理模块收到该通知后,首先需要将存储在专用存储空间中的当前各中断服务程序的中断优先级信息拷贝到另一存储空间中,然后更新所述专用存储空间中的中断服务程序的中断优先级信息。在当前中断服务程序运行完毕后,系统通常会要求将该中断服务程序恢复为允许嵌套,此时,中断请求处理模块再以存储的原有的各中断服务程序的中断优先级信息覆盖所述专用存储空间中的各中断服务程序的中断优先级信息。
可以看出拷贝原有的中断服务程序的中断优先级信息会耗费一定的时长,从而会延缓更新中断服务程序的中断优先级的操作的执行,若在执行保存操作期间刚好有中断优先级高于当前中断服务程序原有的中断优先级的中断请求进入,则就会造成当前中断服务程序的中断,达不到系统最新的不允许嵌套的要求,降低了中断处理的可靠性。
同时,由于中断请求处理模块是根据中断优先级来决定中断服务程序是否允许嵌套的,当某个中断服务程序被更改为不允许嵌套时,原则上该中断服务程序是不能被任何中断请求打断的,但是,有可能新发来的中断请求的中断优先级与已被设置为最高中断优先级的中断服务程序的中断优先级相同,在这种情况下,中断请求处理模块仅仅依据中断优先级,有可能允许中断服务程序被该中断请求打断,这也降低了中断处理的可靠性。
另外,从图1所示中断处理流程可以看出当主控制器正在运行中断服务程序时,协处理器发送的中断请求可能无法被及时处理,此时,若协处理器不再发送该中断请求,则该中断请求会被丢失,降低了中断处理的可靠性;或者,协处理器会一直保持该中断请求或再每隔一段时间向中断请求处理模块发送该中断请求,这样就需要在协处理器中设计中断保持或重发电路,增加了设计成本;同时在中断请求无法被及时处理时,需要协处理器和中断请求处理模块的配合才能实现中断请求被处理,导致中断请求处理模块的可移植性差。

发明内容
本发明提供一种中断处理方法和装置,以提高中断处理的可靠性。
本发明的技术方案是这样实现的一种中断处理方法,包括为各中断服务程序设置是否允许嵌套的指示,主控制器确定要更改中断服务程序的嵌套设置时,更改该中断服务程序对应的是否允许嵌套的指示;中断请求处理模块收到中断请求,检测到当前有中断服务程序正在运行,根据该中断服务程序对应的是否允许嵌套的指示进行中断处理。
所述中断请求处理模块进行中断处理包括中断请求处理模块根据为当前正在运行的中断服务程序设置的是否允许嵌套的指示,判断该中断服务程序是否允许嵌套,若允许,且确定该中断服务程序的中断优先级不高于或低于所述中断请求的中断优先级,则通知主控制器运行所述中断请求对应的中断服务程序。
所述中断请求处理模块判定所述中断服务程序允许嵌套之后进一步包括中断请求处理模块确定该中断服务程序的中断优先级高于或不低于所述中断请求的中断优先级,则保存所述中断请求。
所述中断请求处理模块保存所述中断请求之后进一步包括中断请求处理模块检测到所述保存的中断请求中存在中断优先级高于或不低于当前正在运行的中断服务程序的中断优先级的中断请求,且当前正在运行的中断服务程序允许嵌套时,则通知主控制器运行所述保存的中断优先级最高的中断请求对应的中断服务程序,并删除该中断请求。
一种中断处理装置,包括中断嵌套寄存器、主控制器和中断请求处理模块,其中中断嵌套寄存器,用于保存中断服务程序标识与该中断服务程序是否允许嵌套的指示信息的对应关系;主控制器,用于在确定需要更改中断服务程序的嵌套设置时,在中断嵌套寄存器中更改该中断服务程序标识对应的是否允许嵌套的指示信息;中断请求处理模块,用于接收协处理器发来的中断请求,检测到当前有中断服务程序正在运行时,从中断嵌套寄存器中获取该中断服务程序对应的是否允许嵌套的指示信息,根据该指示信息进行中断处理。
所述中断请求处理模块进一步用于,检测到当前正在运行的中断服务程序允许嵌套,且确定该中断服务程序的中断优先级不高于或低于所述中断请求的中断优先级,则通知主控制器运行所述中断请求对应的中断服务程序。
该装置进一步包括中断请求寄存器,用于保存中断请求;且,所述中断请求处理模块进一步用于,根据从中断嵌套寄存器获取的当前正在运行的中断服务程序的是否允许嵌套的指示信息,确定该中断服务程序允许嵌套,且确定该中断服务程序的中断优先级高于或不低于协处理器发来的中断请求的中断优先级,将所述中断请求保存到中断请求寄存器。
所述中断请求处理模块进一步用于,当检测到中断请求寄存器中存在中断优先级高于或不低于当前正在运行的中断服务程序的中断优先级的中断请求、且当前正在运行的中断服务程序允许嵌套时,则通知主控制器运行所述中断请求寄存器中保存的最高中断优先级的中断请求对应的中断服务程序,并将该最高中断优先级的中断请求从中断请求寄存器中删除。
与现有技术相比,本发明通过为每个中断服务程序设置是否允许嵌套的指示,当主控制器确定要更改中断服务程序的嵌套设置时,直接更改该中断服务程序对应的是否允许嵌套的指示,而无需更改中断服务程序的中断优先级,因此,也就无需主控制器通知中断请求处理模块更新中断优先级,中断请求处理模块也无需将各中断服务程序的原有中断优先级信息从专用存储空间拷贝到另一存储空间中,大大减少了更新嵌套设置所耗费的时长,从而提高了中断处理的可靠性;同时,中断请求处理模块在收到中断请求时,首先要判断当前正在运行的中断服务程序是否允许嵌套,若不允许,则即使该中断请求的中断优先级高于或等于该中断服务程序,该中断服务程序也不会被打断,进一步提高了中断处理的可靠性。
另外,本发明中,中断请求处理模块检测到当前无法处理协处理器发来的中断请求时,保存该中断请求,使得在能够处理该中断请求时,可以根据保存的未处理的中断请求,直接通知主控制器运行对应的中断服务程序,避免了中断请求的丢失,提高了中断处理的可靠性;同时,不需要协处理器保持中断请求或重复发送中断请求,从而不需为协处理器设计保持电路或重发电路,降低了设计成本;另外,在中断请求无法被及时处理时,不需要协处理器配合中断请求处理模块来使得该中断请求被最终处理,提高了中断请求处理模块的可移植性。


图1为现有的允许嵌套的中断处理的流程图;图2为本发明实施例一提供的中断处理流程图;图3为本发明实施例二提供的中断处理流程图;图4为本发明实施例一提供的中断处理装置的组成图;图5为本发明实施例二提供的中断处理装置的组成图。
具体实施例方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图2为本发明实施例一提供的中断处理流程图,如图2所示,其具体步骤如下步骤201配置中断嵌套寄存器,在该中断嵌套寄存器中设置中断服务程序标识与该中断服务程序是否允许嵌套的指示信息的对应关系。
例如设定中断嵌套寄存器的每个bit对应一个中断服务程序,则,当中断服务程序1允许嵌套时,将中断嵌套寄存器的第1个bit位设置为1;当中断服务程序2不允许嵌套时,则将中断嵌套寄存器的第2个bit位设置为0;...。
中断服务程序是否允许嵌套,可根据该中断服务程序的具体特点确定,例如有的中断服务程序的实时性要求较高,则中断请求处理模块可将该中断服务程序设置为不允许嵌套。
步骤202主控制器确定要更改中断服务程序的嵌套设置,直接在中断嵌套寄存器中更改该中断服务程序的标识对应的是否允许嵌套的指示信息。
例如若主控制器要将正在运行的中断服务程序由允许嵌套更改为不允许嵌套,则只需将中断嵌套寄存器中与该中断服务程序对应的指示bit由1更改为0;若要将正在运行的中断服务程序由不允许嵌套更改为允许嵌套,则只需将中断嵌套寄存器中与该中断服务程序对应的指示bit由0更改为1。
步骤203中断请求处理模块捕捉协处理器发出的中断请求。
步骤204中断请求处理模块判断当前是否有中断服务程序正在运行,若是,执行步骤206;否则,执行步骤205。
步骤205中断请求处理模块通知主控制器运行与该中断请求对应的中断服务程序,本流程结束。
步骤206中断请求处理模块从中断嵌套寄存器中读取当前正在运行的中断服务程序的标识对应的是否允许嵌套的指示信息,判断正在运行的中断服务程序是否允许嵌套,若是,执行步骤207;否则,执行步骤208。
步骤207中断请求处理模块判断正在运行的中断服务程序对应的中断优先级是否高于当前收到的中断请求的中断优先级,若是,执行步骤208;否则,执行步骤209。
当正在运行的中断服务程序允许嵌套时,是否允许中断优先级与该中断服务程序的中断优先级相等的中断请求打断该中断服务程序,要根据中断请求处理模块的硬件配置决定。中断请求处理模块可以配置为允许相同中断优先级的中断请求打断正在运行的中断服务程序,也可以配置为不允许相同中断优先级的中断请求打断正在运行的中断服务程序。在本实施例中给出的是,中断请求处理模块允许相同中断优先级的中断请求打断正在运行的中断服务程序步骤208中断请求处理模块不作处理,本流程结束。
步骤209中断请求处理模块通知主控制器运行所述中断请求对应的中断服务程序。
步骤210主控制器收到所述通知后,中止当前中断服务程序的运行,并保存该中断服务程序的运行状态信息,开始运行所述中断请求对应的中断服务程序。
步骤211主控制器运行完当前中断服务程序,根据自身保存的被中止的中断服务程序的运行状态信息,恢复被中止的中断服务程序的运行。
在实际应用中,步骤202与步骤203~211在执行时并无先后之分。只要主控制器确定要更改中断服务程序的嵌套设置,就执行步骤202;只要中断请求处理模块捕捉到协处理器发出的中断请求,就执行步骤203~211。
从图2所示实施例可以看出当需要将正在运行的中断服务程序由允许嵌套更改为不允许嵌套时,只需更改中断嵌套寄存器中该中断服务程序的标识对应的是否允许嵌套的指示信息由允许嵌套指示更改为不允许嵌套指示,而无需更改中断服务程序的中断优先级,因此,也就无需主控制器通知中断请求处理模块更新中断优先级,中断请求处理模块也无需将各中断服务程序的原有中断优先级信息从专用存储空间拷贝到另一存储空间中,大大减少了更新嵌套设置所耗费的时长,从而提高了中断处理的可靠性;同时,中断请求处理模块在收到中断请求时,首先要判断当前正在运行的中断服务程序是否允许被嵌套,若不允许,则即使该中断请求的中断优先级高于或等于该中断服务程序,该中断服务程序也不会被打断,进一步提高了中断处理的可靠性。
图3为本发明实施例二提供的中断处理的流程图,如图3所示,其具体步骤如下步骤301~307与步骤201~207相同。
步骤308中断请求处理模块将所述中断请求保存在中断请求寄存器中,转至步骤312。
步骤309~311与步骤209~211相同。
步骤312中断请求处理模块判断当前是否有中断服务程序正在运行,若是,执行步骤314;否则,执行步骤313。
步骤313中断请求处理模块在中断请求寄存器中选择一个中断优先级最高的中断请求,通知主控制器运行该中断请求对应的中断服务程序,本流程结束。
步骤314中断请求处理模块判断正在运行的中断服务程序是否允许嵌套,若是,执行步骤315;否则,不作处理,本流程结束。
步骤315中断请求处理模块判断中断请求寄存器中保存的中断请求中是否存在中断优先级不低于正在运行的中断服务程序的中断优先级的中断请求,若是,执行步骤316;否则,不作处理,本流程结束。
步骤316中断请求处理模块通知主控制器运行中断请求寄存器中保存的最高中断优先级的中断请求对应的中断服务程序,同时,将该中断请求从中断请求寄存器中删除。
当中断请求寄存器中存储有等待处理的中断请求时,中断请求处理模块会实时地将所述中断请求的中断优先级与正在运行的中断服务程序的中断优先级进行比较,若前者不低于后者,则通知主控制器运行所述中断请求对应的中断服务程序,主控制器根据该通知中止正在运行的中断服务程序,开始运行所述中断请求对应的中断服务程序。
在实际应用中,只要中断请求寄存器中存储有等待处理的中断请求,中断请求处理模块就会每隔一段时长执行一次步骤312~316。
在图3所示所示实施例中,当中断请求处理模块确定当前无法立刻处理中断请求时,将该中断请求保存到中断请求寄存器中,此后当检测到该中断请求可被处理时,直接从中断请求寄存器中取出该中断请求,使得在中断请求不能被及时处理时,协处理器不需保持或重发该中断请求,从而无需为协处理器设计保持或重法电路,节省了成本,同时也提高了中断请求处理模块的可移植性。
图4是本发明实施例一提供的中断处理的装置组成图,如图4所示,其主要包括中断嵌套寄存器41、主控制器42和中断请求处理模块43,其中中断嵌套寄存器41用于保存中断服务程序标识与该中断服务程序是否允许嵌套的指示信息的对应关系。
主控制器42用于在确定需要更改中断服务程序是否允许嵌套的设置时,直接在中断嵌套寄存器41中更改该中断服务程序标识对应的是否允许嵌套的指示信息;当收到中断请求处理模块43发来的运行通知时,中止当前中断服务程序的运行,并保存该中断服务程序的运行状态信息,同时运行所述运行通知中指示的中断请求对应的中断服务程序。
中断请求处理模块43用于接收协处理器发来的中断请求,当检测到当前有中断服务程序正在运行时,从中断嵌套寄存器41中读取该中断服务程序的标识对应的是否允许嵌套的指示信息,若该指示信息指示允许嵌套,且该中断服务程序的中断优先级不高于或低于所述中断请求的中断优先级,则向主控制器42发送携带所述中断请求的运行通知。
图5是本发明实施例二提供的中断处理装置组成图,如图5所示,本发明实施例二提供的中断处理装置相比本发明实施例一提供的中断处理装置,进一步包括中断请求寄存器44,用于保存未被处理的中断请求。
对应地,中断请求处理模块43进一步用于,在检测到当前中断服务程序的中断优先级高于或不低于所述中断请求时,将所述中断请求保存到中断请求寄存器44;当检测到中断请求寄存器44中保存的中断请求中存在中断优先级高于或不低于当前正在运行的中断中断服务程序的中断优先级的中断请求、且当前正在运行的中断服务程序允许嵌套时,向主控制器42发送携带中断请求寄存器44中保存的最高中断优先级的中断请求的运行通知,并将该最高中断优先级的中断请求从中断请求寄存器44中删除。
以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种中断处理方法,其特征在于,包括为各中断服务程序设置是否允许嵌套的指示,主控制器确定要更改中断服务程序的嵌套设置时,更改该中断服务程序对应的是否允许嵌套的指示;中断请求处理模块收到中断请求,检测到当前有中断服务程序正在运行,根据该中断服务程序对应的是否允许嵌套的指示进行中断处理。
2.如权利要求1所述的方法,其特征在于,所述中断请求处理模块进行中断处理包括中断请求处理模块根据为当前正在运行的中断服务程序设置的是否允许嵌套的指示,判断该中断服务程序是否允许嵌套,若允许,且确定该中断服务程序的中断优先级不高于或低于所述中断请求的中断优先级,则通知主控制器运行所述中断请求对应的中断服务程序。
3.如权利要求2所述的方法,其特征在于,所述中断请求处理模块判定所述中断服务程序允许嵌套之后进一步包括中断请求处理模块确定该中断服务程序的中断优先级高于或不低于所述中断请求的中断优先级,则保存所述中断请求。
4.如权利要求3所述的方法,其特征在于,所述中断请求处理模块保存所述中断请求之后进一步包括中断请求处理模块检测到所述保存的中断请求中存在中断优先级高于或不低于当前正在运行的中断服务程序的中断优先级的中断请求,且当前正在运行的中断服务程序允许嵌套时,则通知主控制器运行所述保存的中断优先级最高的中断请求对应的中断服务程序,并删除该中断请求。
5.一种中断处理装置,其特征在于,包括中断嵌套寄存器、主控制器和中断请求处理模块,其中中断嵌套寄存器,用于保存中断服务程序标识与该中断服务程序是否允许嵌套的指示信息的对应关系;主控制器,用于在确定需要更改中断服务程序的嵌套设置时,在中断嵌套寄存器中更改该中断服务程序标识对应的是否允许嵌套的指示信息;中断请求处理模块,用于接收协处理器发来的中断请求,检测到当前有中断服务程序正在运行时,从中断嵌套寄存器中获取该中断服务程序对应的是否允许嵌套的指示信息,根据该指示信息进行中断处理。
6.如权利要求5所述的装置,其特征在于,所述中断请求处理模块进一步用于,检测到当前正在运行的中断服务程序允许嵌套,且确定该中断服务程序的中断优先级不高于或低于所述中断请求的中断优先级,则通知主控制器运行所述中断请求对应的中断服务程序。
7.如权利要求5所述的装置,其特征在于,该装置进一步包括中断请求寄存器,用于保存中断请求;且,所述中断请求处理模块进一步用于,根据从中断嵌套寄存器获取的当前正在运行的中断服务程序的是否允许嵌套的指示信息,确定该中断服务程序允许嵌套,且确定该中断服务程序的中断优先级高于或不低于协处理器发来的中断请求的中断优先级,将所述中断请求保存到中断请求寄存器。
8.如权利要求7所述的装置,其特征在于,所述中断请求处理模块进一步用于,当检测到中断请求寄存器中存在中断优先级高于或不低于当前正在运行的中断服务程序的中断优先级的中断请求、且当前正在运行的中断服务程序允许嵌套时,则通知主控制器运行所述中断请求寄存器中保存的最高中断优先级的中断请求对应的中断服务程序,并将该最高中断优先级的中断请求从中断请求寄存器中删除。
全文摘要
本发明公开了一种中断处理方法,包括为各中断服务程序设置是否允许嵌套的指示,主控制器确定要更改中断服务程序的嵌套设置时,更改该中断服务程序对应的是否允许嵌套的指示;中断请求处理模块根据中断服务程序对应的是否允许嵌套的指示进行中断处理。本发明同时公开了一种中断处理装置,包括中断嵌套寄存器、主控制器和中断请求处理模块。本发明大大减少了更新嵌套设置所耗费的时长,从而提高了中断处理的可靠性;同时,中断请求处理模块在收到中断请求时,首先要判断当前正在运行的中断服务程序是否允许嵌套,若否,则即使该中断请求的中断优先级高于或等于该中断服务程序,该中断服务程序也不会被打断,进一步提高了中断处理的可靠性。
文档编号G06F9/46GK1963768SQ20061016187
公开日2007年5月16日 申请日期2006年12月5日 优先权日2006年12月5日
发明者林川 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1