本申请涉及嵌入式系统,尤其涉及一种强制退出中断服务程序的方法和装置。
背景技术:
1、在嵌入式操作系统中,有些中断服务程序是应用程序开发人员编写的,当这些中断服务程序调用操作系统的服务函数时,如果操作系统检测到调用非法,则需要强制结束当前的中断服务程序。
2、例如,autosar os操作系统中的保护设施产生的错误处理,比如用户编写的中断服务程序函数是userisra,userisra函数调用了autosar os的服务函数activatetask,activatetask函数检测到了一个异常状态,比如请求激活的任务的激活次数已经达到了上限,不允许再激活这个任务了,autosar os规范要求结束中断服务程序的userisra函数的运行,继续去运行其他等待的中断服务程序或者任务。
3、因此,如何实现在有需要时强制退出中断服务程序,并使得被中断服务程序打断的任务继续运行是有待解决的技术问题。
技术实现思路
1、本申请的主要目的在于提供一种强制退出中断服务程序的方法和装置,旨在解决如何强制退出中断服务程序,并使得被中断服务程序打断的任务继续运行的技术问题。
2、第一方面,本申请提供一种强制退出中断服务方法,所述方法包括以下步骤:
3、在任务被用户中断服务程序打断后,通过预设的中断入口函数将cpu现场信息进行备份,并在备份完成后调用所述用户中断服务程序;
4、若所述用户中断服务程序运行存在异常,则将备份的cpu现场信息恢复到cpu寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行。
5、一些实施例中,在任务被用户中断服务程序打断后,通过预设的中断入口函数将cpu现场信息进行备份,并在备份完成后调用所述用户中断服务程序,包括:
6、在任务被用户中断服务程序打断后,通过所述中断入口函数获取对应的中断号;
7、根据中断号查找打断任务的所述用户中断服务程序,将cpu现场信息备份至所述用户中断服务程序对应的缓存区中,并在备份完成后调用所述用户中断服务程序。
8、一些实施例中,若所述用户中断服务程序运行存在异常,则将备份的cpu现场信息恢复到cpu寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行,包括:
9、若所述用户中断服务程序存在非法调用操作系统的服务函数,则通过所述操作系统的服务函数,将备份的cpu现场信息恢复到cpu寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行。
10、一些实施例中,若所述用户中断服务程序运行存在异常,则将备份的cpu现场信息恢复到cpu寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行,还包括:
11、若所述用户中断服务程序的运行时间超过为其配置的时间阈值,被所述操作系统的系统中断程序打断,则通过所述中断入口函数调用所述系统中断程序,将备份的cpu现场信息恢复到cpu寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行。
12、一些实施例中,该方法还包括:
13、若所述用户中断服务程序在运行时,被更高优先级的优先用户中断服务程序打断,通过所述中断入口函数获取对应的中断号;
14、根据中断号查找打断所述用户中断服务程序的优先用户中断服务程序,将cpu现场信息备份至所述优先用户中断服务程序对应的缓存区中,并在备份完成后调用所述优先用户中断服务程序;
15、当所述优先用户中断服务程序存在非法调用所述操作系统的服务函数时,通过所述操作系统的服务函数将备份的cpu现场信息恢复至cpu寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的所述用户中断服务程序继续运行。
16、一些实施例中,该方法还包括:
17、通过调用缓存setjmp函数,将cpu现场信息进行备份。
18、一些实施例中,该方法还包括:
19、通过调用跳转longjmp函数,将备份的cpu现场信息恢复到cpu寄存器中。
20、第二方面,本申请还提供一种强制退出中断服务程序的装置,所述装置包括:
21、备份模块,其用于在任务被用户中断服务程序打断后,通过预设的中断入口函数将cpu现场信息进行备份,并在备份完成后调用所述用户中断服务程序;
22、恢复模块,其用于若所述用户中断服务程序运行存在异常,则将备份的cpu现场信息恢复到cpu寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行。
23、一些实施例中,所述备份模块还用于:
24、在任务被用户中断服务程序打断后,通过所述中断入口函数获取对应的中断号;
25、根据中断号查找打断任务的所述用户中断服务程序,将cpu现场信息备份至所述用户中断服务程序对应的缓存区中,并在备份完成后调用所述用户中断服务程序。
26、一些实施例中,所述恢复模块还用于:
27、若所述用户中断服务程序存在非法调用操作系统的服务函数,则通过所述操作系统的服务函数,将备份的cpu现场信息恢复到cpu寄存器中,使程序跳转回所述中断入口函数继续运行,进而回到被打断的任务继续运行。
28、本申请提供一种强制退出中断服务程序的方法和装置,通过在任务被用户中断服务程序打断后,通过预设的中断入口函数将cpu现场信息进行备份,并在备份完成后调用所述用户中断服务程序;若所述用户中断服务程序运行存在异常,则将备份的cpu现场信息恢复到cpu寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行。实现了在用户中断服务程序异常时,能够及时离开异常的用户中断服务程序,并使得被用户中断服务程序打断的任务能够继续运行,有效的提高了操作系统的安全性和稳定性。
1.一种强制退出中断服务程序的方法,其特征在于,包括:
2.根据权利要求1所述的强制退出中断服务程序的方法,其特征在于,在任务被用户中断服务程序打断后,通过预设的中断入口函数将cpu现场信息进行备份,并在备份完成后调用所述用户中断服务程序,包括:
3.根据权利要求1所述的强制退出中断服务程序的方法,其特征在于,若所述用户中断服务程序运行存在异常,则将备份的cpu现场信息恢复到cpu寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行,包括:
4.根据权利要求1所述的强制退出中断服务程序的方法,其特征在于,若所述用户中断服务程序运行存在异常,则将备份的cpu现场信息恢复到cpu寄存器中,以强制退出所述用户中断服务程序,使得被打断的任务继续运行,还包括:
5.根据权利要求1所述的强制退出中断服务程序的方法,其特征在于,该方法还包括:
6.根据权利要求1所述的强制退出中断服务程序的方法,其特征在于,还包括
7.根据权利要求1所述的强制退出中断服务程序的方法,其特征在于,还包括:
8.一种强制退出中断服务程序的装置,其特征在于,包括:
9.根据权利要求8所述的强制退出中断服务程序的装置,其特征在于,所述备份模块还用于:
10.根据权利要求8所述的强制退出中断服务程序的装置,其特征在于,所述恢复模块还用于: