[发明专利]中断处理方法及装置在审
申请号: | 201210397619.1 | 申请日: | 2012-10-18 |
公开(公告)号: | CN103778009A | 公开(公告)日: | 2014-05-07 |
发明(设计)人: | 韩美卿;于光海 | 申请(专利权)人: | 深圳市中兴微电子技术有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 田红娟;龙洪 |
地址: | 518083 广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 中断 处理 方法 装置 | ||
技术领域
本发明涉及移动通讯领域,特别是涉及一种中断处理方法及装置。
背景技术
在现有技术中,嵌入式系统对实时性和响应速度上有比较高的要求,支持不同优先级的中断控制器,对软件也提出了支持中断嵌套的要求。随着嵌入式系统的复杂性越来越高,实时操作系统的引入也越来越普遍,如何在实时操作系统中支持中断嵌套成为一个难题。
μCOS-Ⅱ是一个基于抢占式的实时多任务内核,可固化、可剪裁、具有高稳定性和可靠性。它总是运行最高优先级的就绪任务。μCOS-Ⅱ支持的中断嵌套层数可以高达255层。
在嵌入式方面,无互锁流水级微处理器(Microcomputer without interlockedpipeline stages,简称为MIPS)32系列微处理器是目前仅次于ARM用得最多的处理器之一,其应用领域覆盖游戏机、路由器、激光打印机、掌上电脑等各个方面。其中,MIPS32处理器支持的中断方式有以下三种:
普通中断:支持八个独立的中断位,中断之间不区分优先级,所有中断拥有同一个中断入口。
向量中断:支持八个独立的中断位,中断之间不区分优先级,每个中断拥有自己的中断入口。
外部向量(EIC)中断:支持最多64个中断,中断之间可以设置优先级,每个中断拥有自己的中断入口。
普通中断和向量中断支持的中断个数有限,且不区分优先级,限制了在实际中的使用,因此,下述的中断均为EIC中断。
现有的实现方案中,已经出现了将μCOS-Ⅱ移植到MIPS的相关技术,现有的这些技术中,对于中断处理都是不支持嵌套中断的,所用的做法都是在处理中断的过程中,关闭全局中断使能位,禁止中断,处理完成之后,在打开中断。这样存在一个问题,当高优先级的中断来临时,由于中断禁止,而CPU不能及时进行处理,从而影响了中断的实时性。
此外,μCOS-Ⅱ中有自己的中断处理机制,但它的中断处理都是在任务堆栈上进行的。而EIC支持64级中断,而且允许中断嵌套,如果按照μCOS-Ⅱ本身的中断处理流程,每个任务堆栈都必须预留允许64级中断嵌套的空间,这大大增加了任务堆栈占用的RAM空间,影响了RAM的使用效率。
发明内容
本发明提供一种中断处理方法及装置,以解决现有技术中将μCOS-Ⅱ移植到MIPS后不能够支持嵌套中断的问题。
本发明提供一种中断处理方法,适用于基于MIPS32作为处理器并且以μCOS-Ⅱ作为操作系统的平台,包括:步骤1,在系统进行初始化时,对中断及其驱动程序进行初始化,在执行当前任务时发生中断的情况下,将中断现场的上下文信息保存到预先设置的中断堆栈中,并判断是否为中断嵌套,如果判断为否,执行步骤2,否则,执行步骤3;步骤2,将当前任务现场的上下文信息保存到预先设置的任务堆栈中,并将堆栈指针SP移到中断堆栈,执行步骤3;步骤3,通知系统开始进入中断处理,读取中断优先级,打开中断,使能中断嵌套,并在执行中断处理程序后,禁止中断,通知系统退出中断处理,并判断是否处于中断嵌套,如果判断为是,执行步骤4,否则,执行步骤5;步骤4,从中断堆栈中恢复保存的当前中断现场的上下文信息,并返回上层中断继续执行;步骤5,从任务堆栈中恢复保存的当前任务现场的上下文信息,并返回被打断的当前任务继续执行。
优选地,在系统进行初始化时,对中断及其驱动程序进行初始化具体包括:配置所有中断的优先级和触发模式,并禁用所有中断,其中,触发模式包括:电平触发或者边缘触发;获取所有中断的中断号,将相应的中断处理程序与中断号相对应;在使能中断之前将中断处理程序拷贝到其对应的中断向量入口地址上,其中,中断向量之间的间隔为32字节。
优选地,将中断现场的上下文信息保存到预先设置的中断堆栈中具体包括:将中断现场的无内部互锁流水级的微处理器MIPS通用寄存器、状态寄存器SR、以及例外程序寄存器EPC中的信息保存到预先设置的中断堆栈中。
优选地,将当前任务现场的上下文信息保存到预先设置的任务堆栈中具体包括:依次将当前任务现场的程序计数器PC、SP、相关寄存器中的信息、以及中断返回地址保存到预先设置的任务堆栈中,其中相关寄存器包括SR和其他相关通用寄存器;将指向最后一个压栈内容的当前任务现场指针保存到预定函数中,其中,当前任务现场指针在恢复当前任务时出栈使用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市中兴微电子技术有限公司,未经深圳市中兴微电子技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210397619.1/2.html,转载请声明来源钻瓜专利网。