中断响应方法、装置及可读存储介质与流程

文档序号:24730224发布日期:2021-04-20 12:57阅读:86来源:国知局
中断响应方法、装置及可读存储介质与流程

1.本发明涉及计算机技术领域,特别是涉及一种中断响应方法、装置及可读存储介质。


背景技术:

2.现有计算机系统中,中央处理器(cpu,central processing unit)作为系统控制中心,需要对系统中多个功能模块进行管理,功能模块包括串口模块、控制器局域网络(can,controller area network)模块等。例如,当cpu正常执行某个应用程序时,如果串口模块收到数据,cpu就会被打断,产生中断,此种情况下理论上需要cpu暂停正在执行的应用程序,立即去响应中断。
3.目前,在mips平台的boot程序中对中断响应的实现方法为:将中断查询函数和应用程序主函数封装成一个循环函数。boot程序启动后,cpu执行循环函数中的应用程序主函数,然后执行中断查询函数检查每个功能模块的中断状态寄存器是否置位,如果某个功能模块的中断状态寄存器置位,则执行该功能模块对应的中断服务程序,中断服务程序处理完成后返回执行应用程序主函数,应用程序主函数执行完成后再执行中断查询函数检查每个功能模块的中断状态寄存器是否置位,如此往复循环。
4.因此,mips平台boot程序中采用对中断状态寄存器进行循环遍历的方法对中断进行响应,虽然能够完成中断响应功能,但是中断不能及时响应而且进行过多无用的查询会使循环函数效率降低。


技术实现要素:

5.鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种中断响应方法、装置及可读存储介质。
6.本发明的第一方面,提供了一种中断响应方法,包括:
7.开启中央处理器cpu的状态寄存器的中断使能;
8.配置中断入口地址并开启所述cpu的每个功能模块的中断使能;
9.当接收到所述每个功能模块中的目标功能模块发送的中断状态时,跳转到所述中断入口地址调用与所述目标功能模块对应的中断处理函数;
10.其中,所述中断状态为所述目标功能模块接收到中断的触发信号时向所述cpu发送的信息。
11.本发明的第二方面,提供了一种中断响应装置,包括:
12.开启模块,用于开启中央处理器cpu的状态寄存器的中断使能;
13.配置模块,用于配置中断入口地址并开启所述cpu的每个功能模块的中断使能;
14.处理模块,用于当接收到所述每个功能模块中的目标功能模块发送的中断状态时,跳转到所述中断入口地址调用与所述目标功能模块对应的中断处理函数;
15.其中,所述中断状态为所述目标功能模块接收到中断的触发信号时向所述cpu发
送的信息。
16.本发明的第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上任一所述的中断响应方法的步骤。
17.本发明的第四方面,提供了一种中断响应装置,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上述任一项所述的中断响应方法的步骤。
18.本发明实施例包括以下优点:
19.本发明实施例中断响应方法、装置及可读存储介质,无需等到应用程序主函数执行完成后再执行中断查询函数检查查询每个功能模块是否发生了中断,而是通过开启中央处理器cpu的状态寄存器的中断使能,配置中断入口地址并开启所述cpu的功能模块的中断使能,这样在cpu的功能模块发生中断后,发生中断的功能模块就会向cpu上报自己的中断状态,cpu就能够确定哪个功能模块发生了中断,即可以确定目标功能模块发生了中断,可以立即跳转到中断入口地址调用与目标功能模块对应的中断处理函数以响应目标功能模块产生的中断。从而可以实现对目标功能模块产生的中断的快速响应。
20.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
21.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
22.图1为本发明实施例提供的一种中断响应方法的步骤流程图;
23.图2是本发明实施例提供的另一种中断响应方法的步骤流程图;
24.图3为本发明实施例提供的一种中断响应装置的结构示意图;
25.图4为本发明实施例所提供的另一种中断响应装置的结构示意图。
具体实施方式
26.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
27.应当理解,此处所描述的具体实施例仅用以解释本发明,仅仅是本发明一部分实施例,而不是全部的实施例,并不用于限定本发明。
28.参照图1,图1为本发明实施例提供的一种中断响应方法的步骤流程图,本实施例提供的中断响应方法适用于无内部互锁流水级的微处理器(mips,microprocessor without interlocked piped stages)平台的boot程序启动后,cpu能够对cpu的功能模块发生中断进行及时响应的情况,本实施例提供的中断响应方法由中断响应装置执行,中断响应装置可以部署于计算机系统中,中断响应方法可以包括以下步骤:
29.s110、开启cpu的状态寄存器的中断使能。
30.开启cpu的状态(status)寄存器的中断使能,可以通过将mips架构cpu的状态寄存器的bev位置为1,以开启cpu的状态寄存器的中断使能。开启cpu中状态寄存器的中断使能为开启cpu的功能模块的中断使能的前置准备步骤,用于当任意一功能模块的中断状态寄存器被置位时,cpu的状态寄存器能够随之更改自身指定控制位(bev位之外的其他位)的状态。
31.s120、配置中断入口地址并开启cpu的功能模块的中断使能。
32.需要说明的是,中断入口地址可以配置在只读存储器(rom,read-only memory)中,cpu的功能模块包括串口模块、can模块等功能模块,在中断发生前,先配置一个中断入口地址并开启所述cpu的功能模块的中断使能(配置的这个中断入口地址为不同功能模块的中断入口地址),如果中断发生,可以直接跳转到中断入口地址调用中断处理函数响应中断。其中,cpu的每个功能模块的中断使能可以通过配置每个功能模块的寄存器中的中断使能位的值实现。
33.需要说明的是,有的功能模块具有单独的中断使能寄存器,可以通过配置中断使能寄存器的中断使能位控制功能模块的中断使能,例如将中断使能位置为1,使功能模块开启中断使能。对于没有单独的中断使能寄存器的功能模块,可以通过配置控制寄存器的中断使能位控制没有单独的中断使能寄存器的功能模块的中断使能。本发明实施例中对开启每个功能模块的中断使能的方式不进行限制。功能模块的中断使能开启后,功能模块才能接收到中断的触发信号。例如,串口模块的中断使能开启,串口模块才能接收到数据。
34.s130、当接收到每个功能模块中目标功能模块发送的中断状态时,跳转到中断入口地址调用与目标功能模块对应的中断处理函数。
35.其中,目标功能模块用于在接收到中断的触发信号时向cpu发送自身的中断状态,从而可以向cpu请求资源,利用cpu分配的资源执行目标功能模块的功能。中断状态为目标功能模块接收到中断的触发信号时向cpu发送的信息。当目标功能模块接收到中断的触发信号时,也即中断到来,cpu就会跳转到中断入口地址调用与目标功能模块对应的中断处理函数以响应目标功能模块产生的中断。例如,串口模块正常情况下不接收数据,如果cpu在执行一个应用程序时,串口模块接收到一个数据,串口模块就会把自己收到数据的状态也即自己的中断状态发送给cpu,cpu根据串口模块上报的中断状态,可以确定串口模块发生了中断,需要跳转到中断入口地址调用与串口模块对应的中断处理函数以响应串口模块发生的中断,并利用cpu分配的资源收发数据。
36.需要说明的是,由于现有技术中需要等到应用程序主函数执行完成后再执行中断查询函数,进而遍历检查每个功能模块的中断状态寄存器是否置位来判断某个功能模块是否发生了中断,而且需要cpu一次又一次的检查(循环检查)每个功能模块是否发生了中断,因此中断不能及时响应而且进行过多无用的查询会使循环函数效率降低。例如,cpu需要查询10个功能模块中有没有目标功能模块,如果前9个功能模块都没有发生中断,只有第10个功能模块发生了中断,cpu需要查询前9个功能模块后才能查询到第10个功能模块,因此造成cpu不能及时响应中断,并且,前9个功能模块没有发生中断,cpu也要查询前9个功能模块,这样就造成了许多无用的查询从而使查询效率降低。或者,例如这10个功能模块都没有发生中断,cpu也要去执行查询,因此造成了许多无用的查询。
37.需要说明的是,任意一个功能模块的中断状态寄存器置位,都可以使s110中的cpu
的状态寄存器中指定控制位置位,而cpu的状态寄存器中指定控制位置位后,cpu获知存在功能模块发生了中断,但并不能确定是哪个功能模块发生了中断。因此,本实施例中通过在配置中断入口地址并开启cpu的每个功能模块的中断使能,在接收到所述每个功能模块中的目标功能模块发送的中断状态时,跳转到所述中断入口地址调用与所述目标功能模块对应的中断处理函数,从而使cpu无需查询每个功能模块是否发生了中断。
38.而本实施例提供的中断响应方法,无需等到应用程序主函数执行完成后再执行中断查询函数查询每个功能模块是否发生了中断,而是通过开启cpu的状态寄存器的中断使能,配置中断入口地址并开启所述cpu的功能模块的中断使能,这样在应用程序的主函数执行过程中,cpu的功能模块发生中断后,发生中断的功能模块就会向cpu上报自己的中断状态,cpu就能够暂停正在执行的应用程序主函数,进而确定哪个功能模块发生了中断,即可以确定目标功能模块发生了中断,可以立即跳转到中断入口地址调用与目标功能模块对应的中断处理函数以响应目标功能模块产生的中断。从而可以实现对目标功能模块产生的中断的快速响应。
39.图2是本发明实施例提供的另一种中断响应方法的步骤流程图,如图2所示,该方法可以包括:
40.s201、开启cpu的状态寄存器的中断使能。
41.s202、配置中断入口地址并开启cpu的每个功能模块的中断使能。
42.s203、清除cpu的状态寄存器的中断状态。
43.可以通过将cpu的状态寄存器的exl位清零来清除cpu的状态寄存器的中断状态。清除cpu的状态寄存器的中断状态可以避免cpu一直处在中断状态。
44.s204、调用压栈函数。
45.压栈函数用于申请一块栈空间,并将cpu的每个寄存器的值压栈至栈空间中。寄存器至少包括状态寄存器和子程序的返回地址寄存器;所述子程序用于表征所述cpu可执行的任意一应用程序中的任意一步骤。其中,可以在内存中申请一块栈空间。
46.其中,cpu的每个寄存器包括cpu的通用寄存器和cpu的控制寄存器。通用寄存器可以包括用来保存子程序的返回地址的子程序的返回地址寄存器,返回地址寄存器即(ra,return address)寄存器、用来存放子程序返回的值的寄存器、用来保存临时变量的寄存器等。控制寄存器可以包括状态寄存器、原因(cause)寄存器等,状态寄存器用于配置cpu的工作状态,将cpu的状态寄存器的值(cpu响应中断时的状态)压栈保存后,保证cpu能回到原来的状态(即中断产生时的状态)。原因寄存器用于保存中断类型,方便cpu查询中断类型,从而找出发生中断的功能模块。中断类型例如有外部中断、内部中断等。
47.其中,上述子程序是指cpu可执行的任意一应用程序中的某个步骤。例如,cpu正常执行某个应用程序时,如果cpu收到一个串口模块发送的中断状态,如果此时cpu正在执行应用程序的第2个步骤(子程序),则可以先将第2个步骤的返回地址存放在ra寄存器,等cpu处理完中断后,可以从ra寄存器取出第2个步骤的返回地址,并接着执行第2个步骤之后的步骤。
48.s205、在调用压栈函数后,将子程序的返回地址寄存器的值修改为出栈函数地址。
49.s206、当接收到每个功能模块中的目标功能模块发送的中断状态时,跳转到中断入口地址调用与目标功能模块对应的中断处理函数。
50.其中,跳转到中断入口地址调用与目标功能模块对应的中断处理函数可以通过如下步骤实现:
51.将cpu的功能模块中发生中断的功能模块确定为目标功能模块;跳转到中断入口地址调用与目标功能模块对应的中断处理函数。
52.可选的,将cpu的功能模块中发生中断的功能模块确定为目标功能模块可以通过如下两种方式实现:
53.一种方式为:根据cpu的原因寄存器的值,确定中断所属的中断类型;根据中断类型,从cpu的功能模块中确定属于中断类型的功能模块;根据属于中断类型的功能模块分别对应的中断状态寄存器的值确定目标功能模块。
54.需要说明的是,cpu首先根据cpu的原因寄存器的值,确定中断所属的中断类型,根据中断类型,从cpu的功能模块中确定属于中断类型的功能模块,从而缩小了cpu确定目标功能模块的范围,使cpu能够更快的确定出目标功能模块。例如,根据原因寄存器的值确定出发生的中断类型为外部中断、cpu只需从外部中断对应的功能模块中确定目标功能模块,不需要再查找内部中断及其他中断类型的功能模块。例如,cpu从外部中断对应的功能模块中确定串口模块对应的中断状态寄存器的值如果为1,则表示串口模块发生了中断,即可以确定串口模块为目标功能模块。串口模块对应的中断状态寄存器的值如果是0,则表示串口模块未发生中断。
55.另一种方式为:根据cpu的每个功能模块分别对应的中断状态寄存器的值确定目标功能模块。
56.该种方式也即查找cpu的所有功能模块分别对应的中断状态寄存器的值,如果确定某个功能模块对应的中断状态寄存器的值为1,则可以确定该功能模块为目标功能模块。其中,每个功能模块对应一个中断状态寄存器。
57.需要说明的是,上述两种方式都可以是在应用程序的主函数执行过程中,确定目标功能模块,无需如现有技术中需要等到应用程序的主函数执行完成后,才能执行中断查询函数检查每个功能模块的中断状态寄存器是否置位,从而实现对目标功能模块产生的中断的快速响应。
58.s207、从子程序返回地址寄存器中获取出栈函数地址,根据出栈函数地址调用出栈函数,出栈函数用于将栈空间中保存的cpu的每个寄存器的值出栈并赋值给对应的寄存器。
59.跳转到中断入口地址调用与目标功能模块对应的中断处理函数后,可以从子程序返回地址寄存器中获取出栈函数地址,根据出栈函数地址调用出栈函数,可以通过先入后出的方式将栈空间中保存的cpu的每个寄存器的值依次出栈并保存给对应的寄存器,以保证cpu响应中断后能够回到原来的执行的程序。例如,将子程序返回地址出栈后赋值给子程序返回地址寄存器,将cpu响应中断时的状态出栈后赋值cpu的状态寄存器,保证cpu能够回到响应中断前的工作状态。例如,cpu正在执行应用程序a时,当cpu接收到串口模块发送的中断状态时,跳转到中断入口地址调用与串口模块对应的中断处理函数后,调用出栈函数后就可以使cpu能够接着执行应用程序a。
60.需要说明的是,例如,cpu的寄存器例如包括状态寄存器、通用寄存器,则将出栈函数用于将栈空间中保存的cpu的状态寄存器的值出栈并赋值给状态寄存器,将栈空间中保
存的cpu的通用寄存器的值出栈并赋值给通用寄存器。
61.s208、退出中断。
62.本实施例提供的中断响应方法,通过开启cpu的状态寄存器的中断使能,配置中断入口地址并开启cpu的功能模块的中断使能,这样在cpu的功能模块发生中断后,目标功能模块就会向cpu上报自己的中断状态,cpu就能够确定哪个功能模块发生了中断,可以立即跳转到中断入口地址调用与目标功能模块对应的中断处理函数以响应目标功能模块产生的中断,从而可以实现对目标功能模块产生的中断的快速响应。并且,通过根据原因寄存器的值确定出发生的中断类型为外部中断、cpu只需从外部中断对应的功能模块中确定目标功能模块,不需要再查找内部中断及其他中断类型的功能模块,从而保证能够更快的确定目标功能模块,进一步提高了中断响应的及时性。并且,将栈空间中保存的cpu的每个寄存器的值出栈并赋值给对应的寄存器保证cpu响应中断后,能够回到原来正在执行的应用程序。
63.参照图3,图3为本发明实施例提供的一种中断响应装置的结构示意图,本实施例提供的中断响应装置可以部署于计算机系统中,中断响应装置300包括以下模块:开启模块310、配置模块320和处理模块330。
64.开启模块310用于开启中央处理器cpu的状态寄存器的中断使能;
65.配置模块320用于配置中断入口地址并开启cpu的每个功能模块的中断使能;处理模块330用于当接收到每个功能模块中的目标功能模块发送的中断状态时,跳转到中断入口地址调用与目标功能模块对应的中断处理函数;
66.其中,中断状态为目标功能模块接收到中断的触发信号时向cpu发送的信息。
67.本实施例提供的中断响应装置,无需如现有技术中需要等到应用程序主函数执行完成后再执行中断查询函数遍历检查每个功能模块是否发生了中断,而是通过开启中央处理器cpu的状态寄存器的中断使能,配置中断入口地址并开启所述cpu的功能模块的中断使能,这样在cpu的功能模块发生中断后,发生中断的功能模块就会向cpu上报自己的中断状态,cpu就能够确定哪个功能模块发生了中断,即可以确定目标功能模块发生了中断,可以立即跳转到中断入口地址调用与目标功能模块对应的中断处理函数以响应目标功能模块产生的中断。从而可以实现对目标功能模块产生的中断的快速响应。
68.可选的,处理模块330还用于在跳转到中断入口地址调用与目标功能模块对应的中断处理函数之前,清除cpu的状态寄存器的中断状态。
69.可选的,处理模块330还用于在清除cpu的状态寄存器的中断状态之后,调用压栈函数,压栈函数用于申请一块栈空间,并将cpu的每个寄存器的值压栈至所述栈空间中;所述寄存器至少包括状态寄存器和子程序的返回地址寄存器;所述子程序用于表征所述cpu可执行的任意一应用程序中的任意一步骤;在调用所述压栈函数后,将子程序返回地址寄存器的值修改为出栈函数地址;在跳转到中断入口地址调用与目标功能模块对应的中断处理函数之后,从子程序返回地址寄存器中获取出栈函数地址,根据出栈函数地址调用出栈函数,出栈函数用于将栈空间中保存的cpu的每个寄存器的值出栈并赋值给对应的寄存器。
70.可选的,处理模块330具体用于将cpu的功能模块中发生中断的功能模块确定为目标功能模块;跳转到中断入口地址调用与目标功能模块对应的中断处理函数。
71.可选的,处理模块330具体用于根据cpu的原因寄存器的值,确定中断所属的中断
类型;根据中断类型,从cpu的功能模块中确定属于中断类型的功能模块;根据属于中断类型的功能模块分别对应的中断状态寄存器的值确定目标功能模块。
72.可选的,处理模块330具体用于根据cpu的每个功能模块分别对应的中断状态寄存器的值确定目标功能模块。
73.另外,本发明实施例还提供一种中断响应装置,如图4所示,图4为本发明实施例所提供的另一种中断响应装置的结构示意图。该中断响应装置400包括处理器410,存储器420以及存储在存储器420上并可在处理器410上运行的计算机程序,该计算机程序被处理器410执行时实现上述实施例的中断响应方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
74.本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述的中断响应方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,的计算机可读存储介质,可以为只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等。
75.本发明实施例还提供了一种计算机程序,该计算机程序可以存储在云端或本地的存储介质上。在该计算机程序被计算机或处理器运行时用于执行本发明实施例的中断响应方法的相应步骤,并且用于实现根据本发明实施例的中断响应装置中的相应模块。
76.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
77.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
78.本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。
79.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1