[发明专利]中断处理方法及装置在审
申请号: | 201210397619.1 | 申请日: | 2012-10-18 |
公开(公告)号: | CN103778009A | 公开(公告)日: | 2014-05-07 |
发明(设计)人: | 韩美卿;于光海 | 申请(专利权)人: | 深圳市中兴微电子技术有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 田红娟;龙洪 |
地址: | 518083 广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 中断 处理 方法 装置 | ||
1.一种中断处理方法,其特征在于,适用于基于MIPS32作为处理器并且以μCOS-Ⅱ作为操作系统的平台,所述方法包括:
步骤1,在系统进行初始化时,对中断及其驱动程序进行初始化,在执行当前任务时发生中断的情况下,将中断现场的上下文信息保存到预先设置的中断堆栈中,并判断是否为中断嵌套,如果判断为否,执行步骤2,否则,执行步骤3;
步骤2,将当前任务现场的上下文信息保存到预先设置的任务堆栈中,并将堆栈指针SP移到所述中断堆栈,执行步骤3;
步骤3,通知系统开始进入中断处理,读取中断优先级,打开中断,使能中断嵌套,并在执行中断处理程序后,禁止中断,通知系统退出中断处理,并判断是否处于中断嵌套,如果判断为是,执行步骤4,否则,执行步骤5;
步骤4,从所述中断堆栈中恢复保存的所述当前中断现场的上下文信息,并返回上层中断继续执行;
步骤5,从所述任务堆栈中恢复保存的所述当前任务现场的上下文信息,并返回被打断的所述当前任务继续执行。
2.如权利要求1所述的方法,其特征在于,在系统进行初始化时,对中断及其驱动程序进行初始化具体包括:
配置所有中断的优先级和触发模式,并禁用所有中断,其中,所述触发模式包括:电平触发或者边缘触发;
获取所有中断的中断号,将相应的中断处理程序与所述中断号相对应;
在使能中断之前将中断处理程序拷贝到其对应的中断向量入口地址上,其中,所述中断向量之间的间隔为32字节。
3.如权利要求1所述的方法,其特征在于,将中断现场的上下文信息保存到预先设置的中断堆栈中具体包括:将中断现场的无内部互锁流水级的微处理器MIPS通用寄存器、状态寄存器SR、以及例外程序寄存器EPC中的信息保存到预先设置的中断堆栈中。
4.如权利要求1所述的方法,其特征在于,将当前任务现场的上下文信息保存到预先设置的任务堆栈中具体包括:
依次将当前任务现场的程序计数器PC、SP、相关寄存器中的信息、以及中断返回地址保存到预先设置的任务堆栈中,其中所述相关寄存器包括SR和其他相关通用寄存器;
将指向最后一个压栈内容的当前任务现场指针保存到预定函数中,其中,所述当前任务现场指针在恢复当前任务时出栈使用。
5.如权利要求1所述的方法,其特征在于,通知系统开始进入中断处理,读取中断优先级,打开中断,使能中断嵌套,并在执行中断处理程序后,禁止中断,通知系统退出中断处理具体包括:
跳转至操作系统中断进入OS_IntEnter函数,通知系统开始进入中断处理;
读取原因CAUSE寄存器的请求中断优先级RIPL位,获取所述中断的优先级,并将所述中断的优先级设置到SR的中断优先级IPL位上;
将SR中的KSU位、ERL位、以及EXL位清零;
将SP递减,分配所述中断堆栈给所述中断处理程序的参数;
从所述SR的IPL位上获取所述中断的优先级,根据该优先级跳转到所述中断处理程序进行处理;
修改所述SR的IPL位,并将所述SR的ERL位和EXL位设置为零,同时打开中断,使能中断嵌套;
释放所述中断堆栈,并将所述SR的EXL位置为1,禁止中断;
跳转至系统中断退出OS_IntExit函数,通知系统退出中断处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市中兴微电子技术有限公司,未经深圳市中兴微电子技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210397619.1/1.html,转载请声明来源钻瓜专利网。