一种动态重载定时长度的软件定时方法

文档序号:6378612阅读:191来源:国知局
专利名称:一种动态重载定时长度的软件定时方法
技术领域
本发明涉及嵌入式系统领域,尤其涉及一种动态重载定时长度的软件定时方法。
背景技术
在高速数据采集及工业控制系统中,为满足可靠性和实时性的要求,作为时间基准的高精度定时一直都是非常关键的问题。Nucleus PLUS是为实时嵌入系统设计的可扩展的多任务的,是一种基于优先级的抢占式操作系统,实时性很强,方便移植。使其在诸多领域都有较好的应用。在嵌入式系统的设计中,时间特性在很多应用中都是一个很重要的参数,很多控制逻辑和协议的实现,需要用到计时、超时和统计功能,时间长短的计时及精度、周期定时和超时的设定成为某些控制逻辑和协议的关键条件。任务的延时功能及软件定时器功能,都需要底层有一个硬件的计数器支持。 当前,嵌入式系统的软件代码日趋复杂。然而,由于存储器、定时器等硬件资源仍然相对有限。如何在不影响系统整体性能的情况下,为嵌入式系统提供优异的定时性能,使系统能够高效运行,已是一个值得关注的问题。

发明内容
本发明的目的在于提供一种动态重载定时长度的软件定时方法,其具有资源多,定时时间长,使用灵活方便等优点。本发明的另一目的在于提供一种动态重载定时长度的软件定时方法,以解决硬件资源不足的问题,大大简化软件复杂性,加快设计进程。本发明的目的是通过以下技术方案实现的。一种动态重载定时长度的软件定时方法,包括步骤
a :创建一个硬件定时器,同时设定最小基准时基,并对硬件定时器初始化; b :获得一个硬件定时器的对象成功后,初始化服务层的软定时器模块; c :创建一个软定时器,设置定时时间,启动软定时器;
d:根据定时时间,进行相应的线程处理,在对应软件定时器的任务里,对接收到的消息进行判断,如果是定时器消息,就处理软定时器的消息。优选的,步骤b具体包括注册软定时器的事件监听,设置基准时基,为服务层软定时器创建信号量、互斥所和创建处理软定时器消息的任务。优选的,步骤C具体包括
Cl :判断是否是硬件定时到,如果定时没到,就继续计时等待;如果是,进入步骤c2;c2 :判断软件定时器的链表是否为空,如果为空,就回到硬件定时到的判断;如果不为空,则进入步骤c3;
c3 :从链表里取出一个指定ID的软件定时器,软件定时器的计数值减一;
c4:判断当前计数值是否为零,如果不为零,则回到硬件定时到的判断;如果为零,则进入步骤c5;
c5 发送一个软定时器的消息处理对应软件定时器的任务。优选的,步骤d中,对接收到的消息进行判断,如果不是定时器消息,则相应处理其他的消息。本发明与现有技术相比,有益效果在于本发明提供的动态重载定时长度的软件定时方法及软件定时器,由硬件定时器为基础,利用硬件定时器的定时中断来实现。软件定时器需要占用CPU资源,但它资源多,定时时间长,使用灵活方便,在复杂系统或定时器工作方式复杂的应用场合,解决硬件资源不足的问题,大大简化软件复杂性,加快设计进程。


图I为本发明软件定时器结构框图。图2为本发明动态重载定时长度的软件定时方法流程图。图3为软件定时器根据定时时间处理流图。
具体实施例方式本发明核心思想本发明在软件定时器中加入优先级,提供一种事件通知-监听的机制,为操作系统的中断管理模块使用。在中断产生后,中断管理模块会回调用户的函数,用户判断是否需要通过中断管理的任务去分发,如果不需要则由用户处理,否则它会触发中断管理模块分发任务,该任务会把该中断号相应的事件通知出去。中断管理模块会根据不同的需要去调度中断产生时是直接回调用户的处理函数还是放到任务中处理。而对定时器到时判断与处理,创建了一个优先级比较高的定时器管理任务,在这个任务中进行定时器的到时判断和处理。事件监听函数通过信号释放信号量给这个高优先级的任务,使其获得信号量。这种方法缩短了中断服务程序的执行时间,从而提高系统的实时性。为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。软件定时器是一组定时器实体的集合,是一种针对不同定时服务进行统一管理的多任务链表类型数据结构。软件定时器可使系统在某一确定时刻执行指定操作。它以可编程定时/计数器或单稳延时电路为基础,利用硬件定时器产生的定时中断来实现。请参阅图I所示,本发明软件定时器包括
I、软件定时器的创建创建一个软件定时器,同时获得一个软件定时器的ID号,ID号在0-128之内,不能超过,否则视为创建不成功。有单次使用或循环使用两种方式。2、设置软定时器的基准时基即最小定时单位。可以根据系统对定时的要求设定。同样时间长度的定时,不同的时基有不同的定时精度。3、启动软定时器创建了一个定时器后获得相应的ID号开始计时工作。不同的应用场合有不同的启动条件脉冲、电平、事件、中断等。4、停止软定时器停止软件定时器的计时,即复位。5、软件定时器的预置值给软定时器设定计时初始值。启动软定时器后,在此基础上开始计时。
6、获得软定时器当前值获得软定时器在计时过程中当前时刻的计数值。可以用来测试定时时间等。软件定时器的实现主要是由硬件定时器产生的定时中断,硬件定时器提供两种中断处理方式,一种是在直接模式下则直接回调函数,另外一种是非直接模式则需要调用中断管理类的成员函数添加事件函数 ,就进入事件-监听机制实现中断机制。而在这里软件定时器实现的方式主要是事件-监听机制。它通过在事件中断处理函数里释放信号量,在线程里获得信号量来处理各种事件。软件定时器在创建之前,先通过硬件定时器设置一个时基值即(最小Tick),然后生成一个软件定时器,设置指定软件定时器计时时间,启动定时器,如果定时时间到了,就进入相应的线程里去处理,首先通过判断是否是定时器的消息,如果是定时器的消息就去处理定时器的消息函数,如果不是,就做其他的处理。请参阅图2所示,本发明动态重载定时长度的软件定时方法,包括
步骤201 :创建一个硬件定时器,同时设定最小基准时基。启动硬件定时器,同时对给定的硬定时器基类对象进行定时器封装初始化。步骤202 :获得一个硬件定时器的对象成功后,初始化服务层的软定时器模块。包括注册软定时器的事件监听,设置基准时基,为服务层软定时器创建信号量、互斥所和创建处理软定时器消息的任务等等。步骤203 :创建一个软定时器,设置定时时间,启动软定时器。步骤204 :根据定时时间,进行相应的线程处理。如图3所示,具体线程处理包括
步骤301 :判断是否是硬件定时到,如果定时没到,就继续计时等待;如果是,进入步骤
302。步骤302 :判断软件定时器的链表是否为空,如果为空,就回到硬件定时到的判断;如果不为空,则进入步骤303。步骤303 :从链表里取出一个指定ID的软件定时器,软件定时器的计数值减一。步骤304 :判断当前计数值是否为零,如果不为零,则回到硬件定时到的判断;如果为零,则进入步骤305。步骤305 :发送一个软定时器的消息处理对应软件定时器的任务。步骤205 :在对应软件定时器的任务里,对接收到的消息进行判断,如果是定时器消息,就处理软定时器的消息;如果不是,就相应处理其他的消息。本发明中,硬件定时器(0MAP-L137)为具有ARM926EJ-S和C674x浮点DSP内核的处理器,各核主频可达到300MHz时钟,该硬件定时器的定时器/计数器模块含有两个功能完全相同的64位定时器/计数器通道。该定时器有四种定时模式64位的通用定时模式、双32位非链式通用定时模式、双32位链式定时模式、看门狗定时模式;本发明定时模式采用双32位非链式通用定时模式,把两个64位的定时器分为四个32位的定时器。本发明提供的动态重载定时长度的软件定时方法及软件定时器,由硬件定时器为基础,利用硬件定时器的定时中断来实现。软件定时器需要占用CPU资源,但它资源多,定时时间长,使用灵活方便,在复杂系统或定时器工作方式复杂的应用场合,解决硬件资源不足的问题,大大简化软件复杂性,加快设计进程。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含 在本发明的保护范围之内。
权利要求
1.一种动态重载定时长度的软件定时方法,其特征在于,包括步骤 a :创建一个硬件定时器,同时设定最小基准时基,并对硬件定时器初始化; b :获得一个硬件定时器的对象成功后,初始化服务层的软定时器模块; c :创建一个软定时器,设置定时时间,启动软定时器; d:根据定时时间,进行相应的线程处理,在对应软件定时器的任务里,对接收到的消息进行判断,如果是定时器消息,就处理软定时器的消息。
2.如权利要求I所述的动态重载定时长度的软件定时方法,其特征在于,步骤b具体包括注册软定时器的事件监听,设置基准时基,为服务层软定时器创建信号量、互斥所和创建处理软定时器消息的任务。
3.如权利要求2所述的动态重载定时长度的软件定时方法,其特征在于,步骤c具体包括 Cl :判断是否是硬件定时到,如果定时没到,就继续计时等待;如果是,进入步骤c2;c2 :判断软件定时器的链表是否为空,如果为空,就回到硬件定时到的判断;如果不为空,则进入步骤c3; c3 :从链表里取出一个指定ID的软件定时器,软件定时器的计数值减一;c4 :判断当前计数值是否为零,如果不为零,则回到硬件定时到的判断;如果为零,则进入步骤c5; c5 发送一个软定时器的消息处理对应软件定时器的任务。
4.如权利要求2所述的动态重载定时长度的软件定时方法,其特征在于,步骤d中,对接收到的消息进行判断,如果不是定时器消息,则相应处理其他的消息。
全文摘要
本发明提供了一种动态重载定时长度的软件定时方法,包括步骤a创建一个硬件定时器,同时设定最小基准时基,并对硬件定时器初始化;b获得一个硬件定时器的对象成功后,初始化服务层的软定时器模块;c创建一个软定时器,设置定时时间,启动软定时器;d根据定时时间,进行相应的线程处理,在对应软件定时器的任务里,对接收到的消息进行判断,如果是定时器消息,就处理软定时器的消息。本发明软件定时方法及软件定时器,由硬件定时器为基础,利用硬件定时器的定时中断来实现。其定时时间长,使用灵活方便,在复杂系统或定时器工作方式复杂的应用场合,解决硬件资源不足的问题,大大简化软件复杂性,加快设计进程。
文档编号G06F9/44GK102937893SQ20121038323
公开日2013年2月20日 申请日期2012年10月11日 优先权日2012年10月11日
发明者温权, 陈新 申请人:科立讯通信股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1