[发明专利]一种用于嵌入式系统的软件定时器实现方法有效
| 申请号: | 201810642960.6 | 申请日: | 2018-06-21 |
| 公开(公告)号: | CN108845872B | 公开(公告)日: | 2021-02-02 |
| 发明(设计)人: | 陶琴;陈辉 | 申请(专利权)人: | 武汉虹信科技发展有限责任公司 |
| 主分类号: | G06F9/48 | 分类号: | G06F9/48 |
| 代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 胡琦旖 |
| 地址: | 430205 湖北省武*** | 国省代码: | 湖北;42 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 用于 嵌入式 系统 软件 定时器 实现 方法 | ||
本发明属于嵌入式系统技术领域,公开了一种用于嵌入式系统的软件定时器实现方法,嵌入式系统维护一个全局的链表和最小到期时间,全局链表按软件到定时器的到期时间进行升序排列,软件定时器以周期性的硬件中断来驱动,在中断处理程序中更新系统节拍数,并查询系统最小到期时间,如果与当前节拍数一致,则唤醒软件定时器任务;软件定时器任务被唤醒后,查询激活链表,给到期定时器对应的任务发消息;任务收到定时器到期消息后,处理其对应业务。本发明技术方案实施简单、精度较高、系统开销较小。
技术领域
本发明涉及嵌入式系统技术领域,尤其涉及一种用于嵌入式系统的软件定时器实现方法。
背景技术
软件定时器是嵌入式操作系统中不可或缺的一个基础组件。对于上层应用程序而言,尤其是移动通信领域,很多业务需要借助软件定时这个基础组件来实现,比如移动通信协议中利用定时器管理数据包超时,通信设备中利用定时器来进行定时状态上报,网管服务器中利用定时器来管理用户的超时。
使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某个任务。但使用场景不同,对定时器的实现考虑也不尽相同。
一般而言,操作系统都会提供定时器接口,但是操作系统提供的定时器管理算法在大规模定时器的管理方面可能还不尽人意。在嵌入式开发的过程中,由于开发业务的需求,常常需要提供多个精度在毫秒级并且抖动范围很小的定时器。尤其在实时操作系统中,一个好的软件定时器实现要求有较高的精度,较小的处理器开销,且占用较少的存储器资源。所以,设计高效的定时器功能对提高系统的处理效率十分重要。
发明内容
本申请实施例通过提供一种用于嵌入式系统的软件定时器实现方法,解决了现有技术中软件定时器占用处理器资源较多、嵌入式系统处理效率较低的问题。
本申请实施例提供一种用于嵌入式系统的软件定时器实现方法,包括:
步骤1,硬件定时器周期性地产生硬件中断,所述硬件中断驱动软件定时器;
步骤2,所述软件定时器查询是否需要唤醒软件定时器任务;
步骤3,若需要唤醒,则进入软件定时器任务处理流程,所述软件定时器任务查询嵌入式系统的激活链表,并给到期的定时器线程发送消息;
步骤4,所述定时器线程接收所述消息,并执行业务。
优选的,所述步骤2中所述软件定时器查询是否需要唤醒软件定时器任务包括:
步骤2.1,获取嵌入式系统的当前总节拍数;
步骤2.2,获取嵌入式系统的最小到期时间;
步骤2.3,比较所述最小到期时间与所述当前总节拍数是否相同,若相同,则判定为需要唤醒软件定时器任务,否则,不唤醒软件定时器任务。
优选的,所述步骤3中的所述软件定时器任务处理流程包括:
步骤3.1,获取激活链表的互斥锁;
步骤3.2,判断激活链表中的节点数是否为零,如果为零,则执行步骤3.10;否则,执行步骤3.3;
步骤3.3,依次遍历激活链表;
步骤3.4,判断软件定时器的到期时间是否小于嵌入式系统的当前总节拍数,若小于,则执行步骤3.5;否则,执行步骤3.8;
步骤3.5,记录到期的定时器线程的任务号;
步骤3.6,查询软件定时器的类型,若为一次性定时器,则执行步骤3.7;否则,执行步骤3.4;
步骤3.7,将软件定时器从激活链表中移除,将软件定时器的状态修改为非使能状态,执行步骤3.4;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉虹信科技发展有限责任公司,未经武汉虹信科技发展有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810642960.6/2.html,转载请声明来源钻瓜专利网。





