一种基于虚拟中断的处理器资源使用解藕方法

文档序号:9843912阅读:214来源:国知局
一种基于虚拟中断的处理器资源使用解藕方法
【技术领域】
[0001]本发明涉及一种与处理器异常处理相关的两个独立功能模块能够简单有效集成的方法。
【背景技术】
[0002]中断的处理,是处理器为嵌入式应用软件提供的一项极为关键的功能,是实现嵌入式应用实现调试、外设收发、周期运行等一系列功能的必要手段,可以说,没有有效的中断处理,就没有强大的嵌入式程序。而中断的处理方式,又直接受到处理器异常、中断功能的设计。
[0003]根据处理器提供中断的方式,以及处理器异常与中断控制器的关系来划分,基本可以分为两类,一类是处理器异常和中断控制器属于并联关系,这种方式下,不同中断的产生可以直接触发处理器到不同的中断服务程序入口上运行,不同源的中断在软件处理上,完全是不相关的。使用这种方式的包括了 X86处理器。另一类是处理器异常和中断控制器属于串联关系,不同中断源产生的中断首先触发处理器在同一个异常处理入口中进行基本的上下文处理,之后再查找中断控制器状态,确定具体的外部中断源,再进入到相关的中断处理中。使用这种方式的包括PowerPC系列处理器。这种方式下,不同中断的处理是,至少在整个异常处理的入口和出口环节,是耦合的。
[0004]一般情况下,这种串联方式的中断处理过程,应该首先设计一个统一的异常处理框架,再在此基础上分别实现不同中断源的中断处理。但是,实际工作中有可能遇到一些问题,导致这种方法难以实现。例如,多个中断源的处理分别独立编写、运行、验证过一段时间后,又需要在某个系统中将不同模块的处理集成起来。一些模块,例如任务切换模块,故障处理模块,以及调试模块等,其内部的功能处理,会依赖于入口处理中,处理器寄存器保存的位置和顺序,也就是功能模块运行前的中断上下文保存模式。如果将任何一个模块的入口处理中上下文保存的方式进行修改,以适应另一个模块,都可能造成此模块内部功能需要重新编写,而这将使得之前的成功经验难以继承,需要重新耗费时间对模块进行大量工作。更为极端的情况下,模块是黑盒状态,其内部实现不可见且无法修改,用户无法预知功能模块内部如何使用预先保存的中断上下文进行工作。这种情况下,使用统一异常处理框架的方法更无法实现不同模块的集成。
[0005]在此条件下,需要提出一种方法,能够在集成的过程中,不影响各自模块处理前所需要的上下文环境状态,从而将不同中断源的中断处理模块毫无耦合的集成起来,并且不影响不同处理模块的正常工作。

【发明内容】

[0006]本发明提供了一种基于虚拟中断的处理器资源使用解藕方法,其特征在于:当发生异常、中断时,选择一个功能模块作为基本处理模块,其余功能模块为从处理模块,在基本处理模块的正常中断处理入口上下文保护工作完成后,依次完成以下步骤:
[0007]步骤I):中断功能处理模块选择,或选择后本次中断应该由基本处理模块来处理,则不需要进行虚拟中断现场的构建,直接进入基本处理模块的功能处理中即可,若得到的结果指明当前应该由从处理模块处理,则进入步骤2);
[0008]步骤2):构筑虚拟中断现场,需根据真实处理器的异常上下文场景进行创建,以保证能够将处理器的真实上下文完整的传递给从处理模块的处理入口,之后进入步骤3);
[0009]步骤3):向从处理模块跳转,进入到相应的从处理模块中,之后进入步骤4),需保证跳转所使用的寄存器在虚拟中断的现场中,保存的是进入基本处理模块之前的内容;
[0010]步骤4):在从处理模块内部,将相应中断处理的入口修改为从虚拟中断现场获取中断上下文,来构建从处理模块的中断上下文保存模式,之后进入从处理模块的功能处理。
[0011]对于各从处理模块,需要修改的仅有一个环节,即将相应中断处理的入口,修改为从虚拟中断现场,而不是从真实处理器中断现场获取中断上下文,来构建中断上下文保存模式。
[0012]此方法中,对于各原始功能模块的功能处理部分和出口处理功能完全不需要进行任何修改,即可以成功完成多个功能模块的集成。
[0013]本发明具有的优点和有益效果:本发明是一种基于虚拟中断的处理器资源使用解藕方法,通过这种方法,可以将不同的异常处理模块,以极小的更改代价,就完成集成,同时保证各模块原有功能运行正常。进一步的,使用此方法,具体功能处理过程不可见的模块,也可以顺利完成集成。
【附图说明】
[0014]图1是原始功能模块的处理流程示意图;
[0015]图2是原始功能模块各自所需的中断上下文保存模式范例图;
[0016]图3是使用本发明进行集成后的处理流程示意图。
【具体实施方式】
[0017]下面结合说明书附图对本发明做详细说明,图1显示的是两个原始功能模块的处理流程,其各自的入口和出口处理可见,而具体的功能处理部分可以是黑盒不可见状态。图2则显示两个功能模块运行所各自需要的中断上下文保存模式。可以看出,两个功能模块内部在获取中断上下文中的同一个寄存器时,会使用不同的基地址和不同的偏移。
[0018]使用本方法时,首先选择一个功能模块为基本处理模块,如图3中,选择模块A为基本处理模块。此后,在模块A正常的中断处理上下文保护完成之后,首先根据中断源或其他处理器状态标识,进行中断功能处理模块选择。如图3的步骤SI。
[0019]当选择后,确定本次中断应该由基本处理模块来处理,则当前已经是基本处理模块所需要的中断上下文保存模式,如图2中的模块A中断上下文保存模式。此时不需要进行虚拟中断现场的构筑,直接进入相关的功能处理模块中即可。如图3中运行模块A的中断处理功能。
[0020]如果结果应该由其他处理模块处理,则进行虚拟中断现场构筑,如图3的步骤S2。虚拟中断现场的构筑,是根据真实处理器的异常上下文场景进行创建。需要保证其具体实现能够将处理器的真实上下文完整的传递给从处理模块的处理入口。一种可行的实现方式,是将所有寄存器的状态都恢复到真实寄存器中,而将处理器跳转需要用到的寄存器,以及不可恢复的状态寄存器,保存到特定内存的虚拟寄存器中。
[0021]虚拟中断现场构筑完成后,可通过函数调用等方式,进入到相应的从处理模块中。需保证跳转所使用的寄存器在虚拟中断的现场中,保存的是进入基本处理模块之前的内容。如图3中步骤S3。
[0022]在从处理模块内部,将相应中断处理的入口,修改为从虚拟中断现场,而不是从真实处理器中断现场获取中断上下文,来构建中断上下文保存模式。如图3中步骤S4。完成此过程后,系统中已经构建成如图2中的模块B中断上下文保存模式。此时可以进行从模块的功能处理。如图3中运行模块A的中断处理功能。
[0023]完成以上步骤后,不同模块即可以实现在一个系统中的集成。
[0024]实施例:应用场景如下:在PowerPC755处理器上,分别使用处理器外部异常,实现并验证了操作系统的调度功能,和应用软件的系统调试功能。其中调度功能模块使用定时器中断作为中断源,系统调试功能模块则使用串口中断作为中断源。两个模块对进入异常后的上下文保护处理不同,其中系统调试功能模块,除去中断入口和出口处理外,其内部功能的实现是黑盒不可见的;而调度功能模块的实现,非常依赖于其保护的上下文环境,如果修改,需要进行一系列验证。现在需要将两个模块集成到一个软件系统中。
[0025]此时,即可使用本发明的方法,具体步骤如下:
[0026]首先,选择系统调试功能模块,作为基本处理模块,将调度功能模块作为从处理模块。在系统调试功能模块中,正常入口上下文保护完成之后,判断当前引发外部中断的中断源为哪一个。若当前为串口中断,则直接运行系统调试功能模块余下的流程,处理完后,使用系统调试功能模块的出口处理返回;若当前为定时器中断,则继续以下过程。
[0027]构筑虚拟中断现场,使用的方法是将大部分保存的寄存器上下文恢复到实际的物理寄存器中。部分状态寄存器和跳转用寄存器则使用特定的内存空间作为虚拟寄存器的保存地址。
[0028]之后,跳转到从处理模块的入口处,从处理模块的中断入口处理模块,从虚拟的中断现场中获取中断上下文,构筑所需要的上下文保存现场。之后,即可以运行从处理功能模块。通过实际验证,两个模块能够快速集成,且功能均运行正常无误。
[0029]本发明还可以有其它多种实施例,在不背离本发明精神和实质的情况下,熟悉本领域的技术人员当可根据本发明做出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
【主权项】
1.一种基于虚拟中断的处理器资源使用解藕方法,其特征在于:当发生异常、中断时,选择一个功能模块作为基本处理模块,其余功能模块为从处理模块,在基本处理模块的正常中断处理入口上下文保护工作完成后,依次完成以下步骤: 步骤I):中断功能处理模块选择,或选择后本次中断应该由基本处理模块来处理,则不需要进行虚拟中断现场的构建,直接进入基本处理模块的功能处理中即可,若得到的结果指明当前应该由从处理模块处理,则进入步骤2); 步骤2):构筑虚拟中断现场,需根据真实处理器的异常上下文场景进行创建,以保证能够将处理器的真实上下文完整的传递给从处理模块的处理入口,之后进入步骤3); 步骤3):向从处理模块跳转,进入到相应的从处理模块中,之后进入步骤4),需保证跳转所使用的寄存器在虚拟中断的现场中,保存的是进入基本处理模块之前的内容; 步骤4):在从处理模块内部,将相应中断处理的入口修改为从虚拟中断现场获取中断上下文,来构建从处理模块的中断上下文保存模式,之后进入从处理模块的功能处理。
【专利摘要】本发明提供了一种基于虚拟中断的处理器资源使用解藕方法,其特征在于:当发生异常、中断时,选择一个功能模块作为基本处理模块,其余功能模块为从处理模块,在基本处理模块的正常中断处理入口上下文保护工作完成后,依次完成以下步骤。
【IPC分类】G06F9/30
【公开号】CN105607891
【申请号】CN201410650080
【发明人】颜纪讯, 丛日朝, 朱立平, 鹿雪玲, 淡图南, 徐建军
【申请人】中国航空工业第六一八研究所
【公开日】2016年5月25日
【申请日】2014年11月14日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1