一种定时器的实现方法和装置制造方法及图纸

技术编号:6689970 阅读:264 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种定时器的实现方法,包括:定时器处理任务将各个定时器排序以生成一个定时器链表;定时器中断判断定时计数是否达到预设的中断值,若是,则进入中断处理,发送一个激活信号给所述定时器处理任务;所述定时器处理任务在收到所述激活信号后,按照所述定时器链表中各个定时器的排序进行定时器任务处理。本发明专利技术实施例还提供相应的装置。采用本发明专利技术技术方案可以及时的按排序依次处理到期的定时器任务,不会产生大量的中断,从而不影响其他任务的执行;按排序对定时器任务是否到期进行检查,不必检查全部的定时器任务,可以减少进行检查所需的时间,从而可以提高操作系统的稳定性和可靠性。

【技术实现步骤摘要】

本专利技术涉及定时器
,具体涉及一种定时器的实现方法和装置
技术介绍
目前嵌入式系统应用已经深入到我们生活中的各个领域,手机、机顶盒、MP4播放 器、交换机、路由器等都可以归结为嵌入式设备。在这些嵌入式设备中,有一部分设备需 要功能强大、实时性强的操作系统。美国Wind RiverSystem公司(即WRS公司)推出的 Vxfforks正是这类操作系统中的佼佼者。Vxfforks是一个实时操作系统,其应用实例包括著 名的火星探测车、爱国者导弹等。自从VxWorks 5. 4进入中国十多年以来,呈现了面向构架 多、应用范围广、民用化的特性,越来越多的嵌入式设备转而采用VxWorks实现。在VxWorks应用软件开发过程中经常会用到定时器。VxWorks提供的“看门狗”定 时器(Watchdog Timer)能够将一个特定的时间间隔与一个C调用过程联系起来。看门狗 定时器基于系统时钟中断,连接到看门狗定时器的函数同样运行在系统时钟中断服务程序 中。如果操作系统由于种种原因(如在系统时钟中断前的中断或者内核状态),将不能立即 执行的函数存放在tExcTask任务的队列中,则队列中的函数将以tExc-Task任务的优先级 运行(通常为0)。操作系统对中断服务程序的各种限制同样适用于连接到看门狗定时器的 用户函数,如不能使用printf、semTake等。虽然看门狗定时器提供的定时机制简单易用,但是在一些场合下直接使用看门狗 定时器可能会出问题。例如交换机中需要维护的介质访问控制(MediaAccess Control, mac)地址表最多时候可能达到几千个,路由器中需要维护的会话表最多时候可能达到几万 个,这些表项根据不同的状态有不同的存活时间,如果某个表项在一段时间内不再被使用 就需要将该表项进行回收或者释放。如果为每个表项创建一个看门狗定时器,当某个时刻到期的定时器很多时,假设 有300个,那么系统就要进行300次中断处理,在此期间其它任务和中断都不能执行,影响 了系统稳定性。如果使用看门狗定时器周期唤醒某个任务去检查这些表项,当表项数量比 较大假设有1000个,定时器每次到期时该任务都要把这1000个表项全部检查一遍,可能到 期的表项只有几个,效率是非常低的。
技术实现思路
本专利技术实施例提供一种定时器的实现方法和装置,可以及时的按顺序依次处理到 期的定时器任务,可以减少对定时器任务是否到期进行检查所需的时间,从而可以提高操 作系统的稳定性和可靠性。—种定时器的实现方法,包括定时器处理任务将各个定时器排序以生成一个定时器链表;定时器中断判断定时计数是否达到预设的中断值,若是,则进入中断处理,发送一 个激活信号给所述定时器处理任务; 所述定时器处理任务在收到所述激活信号后,按照所述定时器链表中各个定时器 的排序进行定时器任务处理。 一种定时器的实现装置,包括定时器处理任务单元和定时器中断单元,所述定时 器处理任务单元包括排序单元和处理单元;所述定时器中断单元,用于判断定时计数是否达到预设的中断值,若是,则进入中 断处理,发送一个激活信号给所述定时器处理任务单元。所述排序单元,用于将各个定时器排序以生成一个定时器链表;所述处理单元,用于接收所述定时器中断单元发送的激活信号,按照所述定时器 链表中各个定时器的排序进行定时器任务处理。本专利技术实施例提供的定时器的实现方法,采用由定时器处理任务将各个定时器排 序以生成一个定时器链表,在收到定时器中断发送的激活信号后,按照定时器链表中各个 定时器的排序进行定时器任务处理的技术方案,可以及时的按排序依次处理到期的定时器 任务,不会产生大量的中断,从而不影响其他任务的执行;按排序对定时器任务是否到期进 行检查,不必检查全部的定时器任务,可以减少进行检查所需的时间,从而可以提高操作系 统的稳定性和可靠性。附图说明图1是本专利技术实施例提供的定时器的实现方法的流程图;图2是本专利技术实施例提供的定时器的实现装置的示意图;图3是本专利技术实施例方法的定时器链表状态一的示意图;图4是本专利技术实施例方法的定时器链表状态二的示意图;图5是本专利技术实施例方法的定时器链表状态三的示意图;图6是本专利技术实施例方法的定时器链表状态四的示意图;图7是本专利技术实施例方法的定时器链表状态五的示意图;图8是本专利技术实施例方法的定时器链表状态六的示意图;图9是本专利技术实施例方法的定时器链表状态七的示意图;图10是本专利技术实施例方法的定时器链表状态八的示意图;图11是本专利技术实施例方法的定时器链表状态九的示意图。具体实施例方式本专利技术实施例提供一种提供的定时器的实现方法和装置,以下分别进行详细说 明。实施例一、请参考图1,本实施例提供一种定时器的实现方法,包括步骤101、定时器处理任务将各个定时器排序以生成一个定时器链表。本步骤中,首先创建一个定时器处理任务,准备进行定时器处理,该任务对应一个 信号量X,该任务平时被信号量X堵塞,所谓信号量就相当于一个标识;堵塞就是指定时器 没到时间时就没有信号量,任务不会被执行,定时器到时间时信号量被激活后,任务才能执 行,以此提高系统效率。该创建的定时器处理任务将各个定时器按照预定的规则排序,并彼此连接生成一 个定时器链表,以准备在信号量X被激活后,按照该定时器链表中定时器的排序依次处理 到期的定时器任务。本文中所述的定时器可以是软件定时器。102、定时器中断判断定时计数是否达到预设的中断值,若是,则进入中断处理,发 送一个激活信号给所述定时器处理任务。设置一个定时器中断(即看门狗定时器),当定时计数到预设的中断值时,引起定 时器中断,系统进入中断处理,否则定时器继续计数。该中断值根据实际来定,通常设定为 1秒即可,如果某些特殊场合需要毫秒级定时器的话,通过sysClkRatekt将系统时钟tick 数设为1000即可。在中断处理中,定时器中断激活信号量X,S卩,定时器中断发送一个激活信号给定 时器处理任务,以由定时器处理任务进行定时器任务处理;随后定时器中断重新启动,退出 中断处理。103、定时器处理任务在收到激活信号后,按照定时器链表中各个定时器的排序进 行定时器任务处理。定时器处理任务实时检测对应各种任务的所有信号量,当发现信号量X被激活, 即,定时器处理任务在收到激活信号后,定时器处理任务调用信号量X对应的任务,对到期 的定时器任务进行处理,处理完成后该任务被信号量X堵塞,换句话说,就是停止进行定时 器任务处理。在一种实施方式中,步骤101可以具体包括101a、生成一个定时器链表头。该定时器链表头可以包括指向所述定时器链表中 第一个定时器的第一指针、指向所述定时器链表中最后一个定时器的第二指针和一个链表 到期时间,所述链表到期时间等于所述最后一个定时器的到期时间。101b、以定时器的到期时间作为排序依据,将各个各个定时器连接到所述定时器 链表头之后生成定时器链表,其中,将到期时间相同的定时器以调用的先后次序作为排序 依据,连接到定时器链表中。定时器链表中的每个定时器可以包括指向上一个定时器的上指针、指向下一个 定时器的下指针、指向定时器任务对应的函数的函数指针以及该定时器的到期时间和删除 时间,所述删除时间等于该定时器的到期时间减去上一个定时器的到期时间。在一种实施方式中本文档来自技高网
...

【技术保护点】
1.一种定时器的实现方法,其特征在于,包括:定时器处理任务将各个定时器排序以生成一个定时器链表;定时器中断判断定时计数是否达到预设的中断值,若是,则进入中断处理,发送一个激活信号给所述定时器处理任务;所述定时器处理任务在收到所述激活信号后,按照所述定时器链表中各个定时器的排序进行定时器任务处理。

【技术特征摘要】

【专利技术属性】
技术研发人员:梁志宝
申请(专利权)人:深圳市金宏威实业发展有限公司
类型:发明
国别省市:94

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1