一种中断处理系统及方法技术领域
本发明涉及一种中断处理技术,尤其涉及一种基于eCos系统的中断处理系统及方
法。
背景技术
目前eCos系统中,数据的处理方式如图1所示。数据的处理方式是线性的,各个中
断处理程序都定义在同一个定时器中,一旦关闭其中一个中断处理程序的功能,这个定时
器也同时被关闭。定时器被关闭以后,系统将不再接受其他中断处理请求,使得有些需要中
断处理的功能不生效。
而eCos系统的中断处理方式与无线网络绑定在一起 ,所有的中断处理程序都定
义在同一个定时器中执行。当无线网络关闭时,与无线网络绑定的中断处理程序的功能也
被关闭,从而导致定时器也同时被关闭。使得系统不再接受外部中断请求,给需要使用外部
中断处理程序实现的功能带来困难 。
因此,现有eCos系统就是一个单线程处理函数,所有的中断处理程序都集成在一
个定时器中,如果关闭一个功能,则相对应的定时器就会被移除,其他中断处理程序都不能
正常工作,无法实现多线程处理功能。
申请公布号CN 102150135A,申请公布日2011年08月10日的发明专利申请公布了
一种基于多线程处理器中分配中断的方法及系统。所述多线程处理器包括中断模块及用于
执行任务的线程。所述中断模块可基于正由所述线程执行的任务的任务优先级而识别每一
线程的优先级,且至少基于其优先级而将中断指派给线程。以减少来自其他线程可用以处
理中断时在高优先级线程上执行中断的开销。
授权公告号CN 101918920 B,授权公告日2014年08月27日的发明专利公开了一种
用于多线程处理的共享的中断控制器,其包含定序器,所述定序器适于提供与多线程处理
器的一个或一个以上线程相关联的指令。所述定序器包含中断控制器,所述中断控制器适
于接收一个或一个以上中断,且选择性的允许所述一个或一个以上线程中的第一线程服务
至少一个中断。所述中断控制器包含用以阻止所述一个或一个以上线程中的第二线程响应
所述至少一个中断的逻辑。通过在全局中断寄存器中设定可对应于线程特定寄存器中的停
用位的中断位旗标,可以简单且有效方式管理多线程处理环境中的中断的服务。
但是,上述现有技术并没有提出针对eCos系统的,当所有的中断处理程序使用同
一个定时器的情况下时,各中断处理程序的功能之间互相影响,对有些独立的中断处理程
序的功能的实现带来困难的问题。
发明内容
针对现有技术存在的上述问题,本发明提供了一种中断的处理系统及方法,其把
每个功能从一个定时器中独立出来,使每个功能之间不互相干扰。
本发明采取如下技术方案:
一种中断处理系统,包括定时模块以及中断处理模块,所述定时模块用于接收中断信
号,所述中断处理模块包括用于执行与所述中断信号对应的中断操作的中断处理单元;其
还包括告警模块,所述告警模块包括与所述中断处理单元对应的告警单元。
作为优选,所述中断处理模块根据所述中断信号,在所述中断信号对应的告警单
元开启时,开启所述中断信号对应的中断处理单元以执行中断处理操作。
作为优选,所述告警模块关闭告警单元,以关闭与所述告警单元对应的中断处理
单元。
作为优选,所述定时模块在所述告警模块中的告警单元均关闭时,关闭定时模块。
作为优选,所述定时模块在所述告警模块中的告警单元均复位时,复位定位模块。
基于上述中断处理系统的一种中断处理方法,其特征在于:
中断的关闭包括步骤:
步骤1-1,告警模块关闭与所述中断对应的告警单元;
步骤1-2,定时模块查询告警模块,当告警模块中的所有告警单元均关闭时执行步骤1-
3;
步骤1-3,定时模块关闭。
作为优选,中断的处理包括:
步骤2-1,定时模块开启;
步骤2-2,定时模块接收中断信号;
步骤2-3,中断处理模块执行中断操作;
步骤2-4,定时模块复位。
作为优选,步骤2-3包括:
步骤2-3-1,查询告警模块与所述中断信号对应的告警单元,在该告警单元开启时进入
步骤2-3-2;
步骤2-3-2,中断处理模块开启与所述告警单元对应的中断处理单元;
步骤2-3-3,中断处理单元执行中断操作;
步骤2-3-4,告警单元复位。
作为优选,步骤2-3之后,还包括:
步骤2-5,中断操作结束,告警模块关闭与所述中断处理单元对应的告警单元。
作为优选,步骤2-4包括:
步骤2-4-1,定时模块查询告警模块,当告警模块中的所有告警单元均复位时执行步骤
2-4-2;
步骤2-4-2,定时模块复位。
本发明在eCos系统中引入了告警模块,能使每个中断处理单元都能正常独立运
行,每个中断处理单元的开启和关闭都能够独立存在,不受其他中断处理单元的干扰。让中
断操作处理起来更加灵活自如。
附图说明
图1是eCos系统中断处理机制。
图2是本发明的中断处理机制。
图3是本发明的中断流程图。
具体实施方式
以下是本发明的具体实施例并结合附图,对本发明的技术方案作进一步的描述,
但本发明并不限于这些实施例。
实施例一
本实施例一种中断处理系统,包括定时模块、告警模块、中断处理模块,各模块具体描
述如下:
定时模块,用于接收中断信号。
中断处理模块,包括用于执行与所述中断信号对应的中断操作的中断处理单元。
告警模块,包括告警单元。告警单元与中断处理模块中的各中断处理单元一一对
应,用于标记中断处理模块中各中断处理单元的状态。
其中,定时模块包括用于计时的计时模块和用于存储数据的寄存器单元,寄存器
单元内存储各中断信号的标识、各中断信号对应的中断操作的中断处理程序的入口地址、
以及各中断信号对应的告警单元的映射关系。定时模块接到中断信号以后,查询寄存器单
元,获取该中断信号对应的中断处理程序的入口地址和告警单元。开启与接收到的中断信
号对应的告警单元,开启接收到的中断信号对应的中断处理单元并将与接收到的中断信号
对应的中断处理程序的入口地址传给中断处理单元。
告警模块包括与各中断信号对应的告警单元,告警单元进一步包括用于存储中断
信号的标识、中断信号对应的中断功能的开启或者关闭状态、以及中断信号对应的中断处
理单元的执行状态的寄存器单元。定时模块在接收到中断信号以后,通过告警模块查询该
中断信号对应的中断功能是否开启,如果开启则通过中断处理模块执行相应的中断操作。
如果为关闭,则忽略该中断信号。告警模块在中断处理模块开始执行中断操作以后,将该中
断信号对应的中断处理单元的执行状态记录在其寄存器中,当中断处理单元执行中断处理
程序完毕,告警单元进行复位:将寄存器中该执行状态位置的标记清除。
中断处理模块,在中断信号对应的中断功能为开启状态时,将该中断信号对应的
中断操作的中断处理程序的入口地址传给相应的中断处理单元,查找到用于执行中断操作
的中断处理程序,执行中断操作。中断处理模块中可以有多个中断处理单元与不同的中断
信号对应。
如图2所示,本发明的中断处理机制在系统中引入了告警模块,能使每个中断处理
单元都能正常独立运行,每个中断处理单元的开启和关闭都能够独立存在,不受其他中断
处理单元的干扰。让中断操作处理起来更加灵活自如。关闭某一中断功能时,系统首先将该
中断功能(或中断信号)对应的告警单元中用于标志中断功能开启或关闭状态的标志位设
置为关闭状态。然后,定时模块查询整个告警模块的告警单元,通过查询各告警单元的标志
中断功能开启或者关闭的标志位,了解是否所有的中断功能都已关闭,如果都已经关闭则
将定时模块关闭,定时器不再计时。否则,定时模块仍保持开启状态,定时器继续计时。
同样,各中断处理单元需要在中断操作执行完毕以后对定时器进行复位。为了实
现每个中断功能都能执行不受其他中断功能的干扰。中断处理单元结束在执行中断操作结
束以后,首先对与其对应的告警单元复位。定时模块查询告警模块是否所有告警单元都已
复位,如果还有程序在执行,则不对定时器进行复位。从而避免了当中断功能之前的相互影
响。
本发明基于上述中断处理系统的中断处理方法,主要包括中断的开启和执行,以
及中断的关闭。
中断的处理包括步骤:
步骤2-1,定时模块开启。启动定时模块的定时器开始计时,并且定时模块允许接收中
断信号。
步骤2-2,定时模块接收中断信号。定时模块接收到来自外部硬件的中断信号。查
询该中断信号对应的中断操作程序的入口程序,以及该中断信号对应的告警单元。
步骤2-3,中断处理模块执行中断操作,具体包括:
步骤2-3-1,查询告警模块中与所述中断信号对应的告警单元。通过该告警单元的寄存
器中标记中断功能是否开启的标志位判断该中断功能是否被允许。在该告警单元开启时,
将该中断信号对应的中断操作程序的入口地址传给中断处理模块,进入步骤2-3-2;
步骤2-3-2,中断处理模块开启与所述告警单元对应的中断处理单元。中断处理单元根
据中断操作程序的入口地址,找到中断操作程序。
步骤2-3-3,中断处理单元执行中断操作。中断处理单元按照中断操作程序的描述
执行中断操作。
步骤2-3-4,告警单元复位。将将寄存器中记录对应的中断处理单元执行状态位置
的标记清除。
步骤2-4,定时模块复位。具体包括:
步骤2-4-1,定时模块查询告警模块,当告警模块中的所有告警单元均复位时执行步骤
2-4-2。
步骤2-4-2,定时模块复位。将定时模块的定时器清零,重新开始计数。
步骤2-5,中断操作结束,告警模块关闭与所述中断处理单元对应的告警单元。
需要关闭某一项中断功能时,具体的步骤包括:
步骤1-1,告警模块关闭与所述中断对应的告警单元。即将告警单元的寄存器中表示该
终端功能是否开启的标志位设置为关闭状态。
步骤1-2,定时模块查询告警模块,当告警模块中的所有告警单元均关闭时,表示
系统所有的中断功能均关闭,定时器不需要在运行,执行步骤1-3。
步骤1-3,定时模块关闭。定时模块将定时器关闭,停止计时。
实施例二
eCos系统的中断处理方式与无线网络绑定在一起,所有的中断处理操作都在一个定时
器(中断定时器)中执行。如果关闭无线网络,中断定时器也同时被关闭,eCos系统无法再接
受外部中断,给需要使用外部中断处理方法实现的功能带来困难。
本实施例中的中断处理系统是一种基于eCos系统的中断处理系统,包括定时模
块、告警模块、中断处理模块。
定时模块,用于接收中断信号;
中断处理模块,包括用于执行与所述中断信号对应的中断操作的中断处理单元;
告警模块,包括告警器。告警单元与中断处理模块中的各中断处理单元一一对应,用于
标记中断处理模块中各中断处理单元的状态。
其中,定时模块包括用于计时的中断定时器和用于存储数据的寄存器单元,寄存
器单元内存储各中断信号的标识、各中断信号对应的中断操作的中断处理程序的入口地
址、以及各中断信号对应的告警单元的映射关系。定时模块接到中断信号以后,查询寄存器
单元,获取该中断信号对应的中断处理程序的入口地址和告警单元。开启与接收到的中断
信号对应的告警单元,开启接收到的中断信号对应的中断处理单元并将与接收到的中断信
号对应的中断处理程序的入口地址传给中断处理单元。
告警模块包括定义在定时模块的中断定时器中的、并且与各中断信号对应的告警
器(即告警单元),告警单元进一步包括用于存储中断信号的标识、中断信号对应的中断功
能的开启或者关闭状态、以及中断信号对应的中断处理单元的执行状态的寄存器单元。定
时模块在接收到中断信号以后,通过告警模块查询该中断信号对应的中断功能是否开启,
如果开启则通过中断处理模块执行相应的中断操作。如果为关闭,则忽略该中断信号。告警
模块在中断处理模块开始执行中断操作以后,将该中断信号对应的中断处理单元的执行状
态记录在其寄存器中,当中断处理单元执行中断处理程序完毕,告警单元进行复位:将寄存
器中该执行状态位置的标记清除。
中断处理模块,包括定义在与其对应的告警单元中的中断处理单元。在中断信号
对应的中断功能为开启状态时,将该中断信号对应的中断操作的中断处理程序的入口地址
传给相应的中断处理单元,查找到用于执行中断操作的中断处理程序,执行中断操作。中断
处理模块中可以有多个中断处理单元与不同的中断信号对应。
eCos系统的告警器是在eCos的计数器的基础上增加的一个产生提示功能的机制。
本发明在系统中引入了告警模块,能使每个中断处理单元都能正常独立运行,每个中断处
理单元的开启和关闭都能够独立存在,不受其他中断处理单元的干扰。让中断操作处理起
来更加灵活自如。关闭某一中断功能时,系统首先将该中断功能(或中断信号)对应的告警
单元中用于标志中断功能开启或关闭状态的标志位设置为关闭状态。然后, 定时模块查询
整个告警模块的告警单元,通过查询各告警单元的标志中断功能开启或者关闭的标志位,
了解是否所有的中断功能都已关闭,如果都已经关闭则将定时模块关闭,定时器不再计时。
否则,定时模块仍保持开启状态,定时器继续计时。
同样,各中断处理单元需要在中断操作执行完毕以后对定时器进行复位。为了实
现每个中断功能都能执行不受其他中断功能的干扰。中断处理单元结束在执行中断操作结
束以后 ,首先对与其对应的告警单元复位。定时模块查询告警模块是否所有告警单元都已
复位,如果还有程序在执行,则不对定时器进行复位。从而避免了当中断功能之前的相互影
响。
如图3所示为eCos系统的中断流程。
在eCos系统启动时进行系统初始化操作,具体包括:
创建中断定时器;
在中断定时器中注册各中断信号对应的中断操作的中断处理函数;
设定中断定时器的超时时间间隔;
定时器模块开始工作,工作内容包括:
中断定时器开始计数,更新计数值;
根据中断定时器的计数值判断是否到达预设的中断定时器的超时时间,未超时则返回
上一步骤继续计数,超时则进行下一步;
中断定时器检测是否有中断信号产生,如果有则进入中断处理。
具体地,本实施例中的中断处理包括步骤:
步骤2-1,定时模块开启。启动定时模块的定时器开始计时,并且定时模块允许接收中
断信号。
步骤2-2,定时模块接收中断信号。定时模块接收到来自外部硬件的中断信号。查
询该中断信号对应的中断操作程序的入口程序,以及该中断信号对应的告警单元。
步骤2-3,中断处理模块执行中断操作,具体包括:
步骤2-3-1,查询告警模块中与所述中断信号对应的告警单元。通过该告警单元的寄存
器中标记中断功能是否开启的标志位判断该中断功能是否被允许。在该告警单元开启时,
将该中断信号对应的中断操作程序的入口地址传给中断处理模块,进入步骤2-3-2;
步骤2-3-2,中断处理模块开启与所述告警单元对应的中断处理单元。中断处理单元根
据中断操作程序的入口地址,找到中断操作程序。
步骤2-3-3,中断处理单元执行中断操作。中断处理单元按照中断操作程序的描述
执行中断操作。
步骤2-3-4,告警单元复位。将将寄存器中记录对应的中断处理单元执行状态位置
的标记清除。
步骤2-4,定时模块复位。具体包括:
步骤2-4-1,定时模块查询告警模块,当告警模块中的所有告警单元均复位时执行步骤
2-4-2。
步骤2-4-2,定时模块复位。将定时模块的定时器清零,重新开始计数。
步骤2-5,中断操作结束,告警模块关闭与所述中断处理单元对应的告警单元。
需要关闭某一项中断功能时,具体的步骤包括:
步骤1-1,告警模块关闭与所述中断对应的告警单元。即将告警单元的寄存器中表示该
终端功能是否开启的标志位设置为关闭状态。
步骤1-2,定时模块查询告警模块,当告警模块中的所有告警单元均关闭时,表示
系统所有的中断功能均关闭,定时器不需要在运行,执行步骤1-3。
步骤1-3,定时模块关闭。定时模块将定时器关闭,停止计时。
本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式
做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领
域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替
代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。