一种实时嵌入式系统定时器管理方法

文档序号:6425237阅读:259来源:国知局
专利名称:一种实时嵌入式系统定时器管理方法
技术领域
本发明涉及嵌入式系统定时器管理技术领域,特别涉及一种实时嵌入式系统定时
器管理方法。
背景技术
定时器的主要功能是控制一段时间间隔,并指示时间间隔结束,实现准确控制时间的目的。在实时嵌入式系统软件中,对通用定时器的管理通常采用轮询方式的检测机制, 在计时周期到达时,对每个定时器的计时数执行减一操作,如果该定时器的计时数为0,则确定该定时器超时,并做相应的超时处理。轮询方式的定时器管理方法,比较简单、容易实现。然而,当系统软件庞大,定时器数目非常多的时候,轮询方式将需要进行大量的计算和处理,会严重消耗CPU资源,影响系统的实时性。

发明内容
有鉴于此,本发明的目的在于提供一种实时嵌入式系统定时器管理方法,该方法能够减少CPU资源消耗,提高系统的实时性。为了达到上述目的,本发明提供了一种实时嵌入式系统定时器管理方法,该方法预先创建一个管理定时器的双向链表;该方法包括当需要注册一个定时器时,申请并配置一个定时器节点,并将该定时器节点按照超时时间从先到后,且超时时间相同时按照优先级从高到低的顺序插入到双向链表中;当需要注销一个定时器时,在双向链表中查找该定时器对应的定时器节点,如果查找到,则将该查找到的定时器节点从双向链表中删除;当需要修改一个定时器时,在双向链表中查找该定时器对应的定时器节点,如果查找到,则先将该查找到的定时器节点从双向链表中删除,再重新申请并配置一个定时器节点,将该重新申请并配置的定时器节点按照超时时间从先到后,且超时时间相同时按照优先级从高到低的顺序插入到双向链表中;当计时周期到达时,从双向链表的头部开始查找超时的定时器节点,直到第一个未超时的定时器节点,将查找到的所有超时的定时器节点从双向链表中删除,并加入到超时队列进行超时处理。由上面的技术方案可知,本发明通过使用一个双向链表对所有定时器进行统一的管理,每个定时器对应于双向链表中的一个定时器节点;在该双向链表中,所有的定时器节点按照超时的先后顺序排序,并在定时器超时时间相同时,按照定时器的优先级从高到低排序;当计时周期达到时,从最先超时的定时器开始检查定时器的超时情况,直到找到第一个未超时的定时器;将所有超时的定时器放入超时队列进行相应的超时处理。通过该方法, 在每个计时周期到达时,不再需要对每个定时器进行轮询,只需从双向链表的头部开始查找超时的定时器节点,直到第一个未超时的定时器节点,并将超时的定时器进行相应的超时处理即可,因此,可以减少运算次数,降低CPU资源消耗,提高系统的实时性。另外,在定时器节点的超时时间相同时,还根据优先级排序,使得高优先级的超时定时器得到优先处理,因此,更进一步提高了系统的实时性。


图1是本发明实施例实时嵌入式系统定时器管理方法的流程示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例, 对本发明的技术方案进行详细说明。本发明的主要思想是将所有定时器按照超时的先后顺序排序,并在定时器超时时间相同时,按照定时器的优先级从高到低排序;当计时周期达到时,从最先超时的定时器开始检查定时器的超时情况,直到找到第一个未超时的定时器;将所有超时的定时器放入超时队列进行相应的超时处理。参见图1,图1是本发明实施例实时嵌入式系统定时器管理方法的流程示意图,该方法包括以下步骤步骤101、预先创建一个管理定时器的双向链表。本步骤中,使用一个双向链表对所有的定时器进行统一的管理,每个定时器对应于双向链表中的一个定时器节点,该定时器节点中包含与该定时器相关的各种属性,例如定时器ID、定时器类型、定时器的时间长度、定时器的优先级等属性。一个使用C语言实现的典型的定时器节点结构定义如下
权利要求
1.一种实时嵌入式系统定时器管理方法,其特征在于,预先创建一个管理定时器的双向链表;该方法包括当需要注册一个定时器时,申请并配置一个定时器节点,并将该定时器节点按照超时时间从先到后,且超时时间相同时按照优先级从高到低的顺序插入到双向链表中;当需要注销一个定时器时,在双向链表中查找该定时器对应的定时器节点,如果查找到,则将该查找到的定时器节点从双向链表中删除;当需要修改一个定时器时,在双向链表中查找该定时器对应的定时器节点,如果查找到,则先将该查找到的定时器节点从双向链表中删除,再重新申请并配置一个定时器节点, 将该重新申请并配置的定时器节点按照超时时间从先到后,且超时时间相同时按照优先级从高到低的顺序插入到双向链表中;当计时周期到达时,从双向链表的头部开始查找超时的定时器节点,直到第一个未超时的定时器节点,将查找到的所有超时的定时器节点从双向链表中删除,并加入到超时队列进行超时处理。
2.如权利要求1所述的实时嵌入式系统定时器管理方法,其特征在于,所述的定时器节点包括定时器类型属性;将超时的定时器节点加入超时队列进行超时处理后,进一步包括判断该定时器节点的定时器类型值是否指示周期性定时器,如果是,则将该定时器节点按照超时时间从先到后,且超时时间相同时按照优先级从高到低的顺序重新插入到双向链表中。
3.如权利要求2所述的实时嵌入式系统定时器管理方法,其特征在于,所述的定时器节点还包括优先级属性;将该定时器节点按照超时时间从先到后,且超时时间相同时按照优先级从高到低的顺序插入到双向链表中时,执行以下步骤Al、判断双向链表是否为空,如果是,则将该定时器节点插入双向链表头部,否则,执行步骤A2 ;A2、在双向链表中查找第一个与该定时器节点的超时时间相同,且优先级更低的定时器节点,如果查找到,则将该定时器节点插入到该查找到的优先级更低的定时器节点的前面,如果未查找到,则执行步骤A3 ;A3、在双向链表中查找第一个超时时间比该定时器节点的超时时间更晚的定时器节点,若查找到,则将该定时器节点插入到该查找到的超时时间更晚的定时器节点的前面,若未查找到,则将该定时器节点插入到双向链表尾部。
4.如权利要求3所述的实时嵌入式系统定时器管理方法,其特征在于,所述的定时器节点还包括超时时间间隔属性和时间长度属性;步骤Al所述将该定时器节点插入双向链表头部时,进一步将该定时器节点的超时时间间隔值设置为该定时器节点的时间长度值;步骤A2所述将该定时器节点插入到该查找到的优先级更低的定时器节点的前面时, 进一步将该定时器节点的后向定时器节点的超时时间间隔值设置为0,如果不存在前向定时器节点,则将该定时器节点的超时时间间隔值设置为该定时器节点的时间长度值,如果存在前向定时器节点,则计算前向定时器节点的超时时间,并将该定时器节点的超时时间间隔值设置为该定时器节点的时间长度与前向定时器节点的超时时间的差值;步骤A3将该定时器节点插入到该查找到的超时时间更晚的定时器节点之前时,进一步计算后向定时器节点的超时时间,将该后向定时器节点的超时时间间隔值设置为后向定时器节点的超时时间与该定时器节点的时间长度的差值,如果不存在前向定时器节点,则将该定时器节点的超时时间间隔值设置为该定时器节点的时间长度值,如果存在前向定时器节点,则计算前向定时器节点的超时时间,并将该定时器节点的超时时间间隔值设置为该定时器节点的时间长度与前向定时器节点的超时时间的差值;步骤A3所述将该定时器节点插入到双向链表尾部时,进一步计算前向定时器节点的超时时间,并将该定时器节点的超时时间间隔值设置为该定时器节点的时间长度与前向定时器节点的超时时间的差值。
5.如权利要求4所述的实时嵌入式系统定时器管理方法,其特征在于,所述计算前向定时器节点的超时时间的方法为将从双向链表头部开始到该前向定时器节点结束的双向链表上的所有定时器节点的超时时间间隔值相加得到的和作为该前向定时器的超时时间;所述计算后向定时器节点的超时时间的方法为将前向定时器节点的超时时间与该后向定时器节点的超时时间间隔相加得到的和作为该后向定时器的超时时间。
6.如权利要求5所述的实时嵌入式系统定时器管理方法,其特征在于,所述当计时周期到达时,从双向链表的头部开始查找超时的定时器节点,直到第一个未超时的定时器节点的方法为将双向链表的第一个定时器节点的超时时间间隔减去1,如果该第一个定时器节点的超时时间间隔值为0,则继续查找下一个超时时间间隔值为0的定时器节点,直到查找到第一个超时时间间隔值不为0的定时器节点。
7.如权利要求1-6任一权项所述的实时嵌入式系统定时器管理方法,其特征在于,所述定时器的最小粒度为一个时钟TICK时长。
8.如权利要求1-6任一权项所述的实时嵌入式系统定时器管理方法,其特征在于,所述进行超时处理为发送超时消息,或进行函数回调。
全文摘要
本发明提供了一种实时嵌入式系统定时器管理方法,该方法包括使用一个双向链表对所有定时器进行统一的管理,每个定时器对应于双向链表中的一个定时器节点;在该双向链表中,所有的定时器节点按照超时的先后顺序排序,并在定时器超时时间相同时,按照定时器的优先级从高到低排序;当计时周期达到时,从最先超时的定时器开始检查定时器的超时情况,直到找到第一个未超时的定时器;将所有超时的定时器放入超时队列进行相应的超时处理。应用本发明,可以减少CPU资源消耗,提高系统的实时性。
文档编号G06F9/48GK102270156SQ20111014297
公开日2011年12月7日 申请日期2011年5月30日 优先权日2011年5月30日
发明者邢文飚 申请人:北京华源格林科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1