[发明专利]一种用于嵌入式系统的软件定时器实现方法有效
| 申请号: | 201810642960.6 | 申请日: | 2018-06-21 |
| 公开(公告)号: | CN108845872B | 公开(公告)日: | 2021-02-02 |
| 发明(设计)人: | 陶琴;陈辉 | 申请(专利权)人: | 武汉虹信科技发展有限责任公司 |
| 主分类号: | G06F9/48 | 分类号: | G06F9/48 |
| 代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 胡琦旖 |
| 地址: | 430205 湖北省武*** | 国省代码: | 湖北;42 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 用于 嵌入式 系统 软件 定时器 实现 方法 | ||
1.一种用于嵌入式系统的软件定时器实现方法,其特征在于,包括:
步骤1,硬件定时器周期性地产生硬件中断,所述硬件中断驱动软件定时器;
步骤2,所述软件定时器查询是否需要唤醒软件定时器任务;
步骤3,若需要唤醒,则进入软件定时器任务处理流程,所述软件定时器任务查询嵌入式系统的激活链表,并给到期的定时器线程发送消息;
步骤4,所述定时器线程接收所述消息,并执行业务;
其中,所述步骤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;
步骤3.8,判断软件定时器的到期时间是否小于嵌入式系统的最小到期时间,若小于,则执行步骤3.9;否则,执行步骤3.10;
步骤3.9,更新嵌入式系统的最小到期时间;
步骤3.10,释放激活链表的互斥锁;
步骤3.11,给到期的定时器线程发送消息;
步骤3.12,结束。
2.根据权利要求1所述的用于嵌入式系统的软件定时器实现方法,其特征在于,所述步骤2中所述软件定时器查询是否需要唤醒软件定时器任务包括:
步骤2.1,获取嵌入式系统的当前总节拍数;
步骤2.2,获取嵌入式系统的最小到期时间;
步骤2.3,比较所述最小到期时间与所述当前总节拍数是否相同,若相同,则判定为需要唤醒软件定时器任务,否则,不唤醒软件定时器任务。
3.根据权利要求1所述的用于嵌入式系统的软件定时器实现方法,其特征在于,所述步骤1之前还包括:
步骤a,创建软件定时器;
步骤b,激活软件定时器。
4.根据权利要求3所述的用于嵌入式系统的软件定时器实现方法,其特征在于,所述步骤a的所述创建软件定时器包括:
步骤a1,申请内存;
步骤a2,创建定时器节点;
步骤a3,进行初始化操作。
5.根据权利要求3所述的用于嵌入式系统的软件定时器实现方法,其特征在于,所述步骤b的所述激活软件定时器包括:
步骤b1,获取激活链表的互斥锁;
步骤b2,检查软件定时器的状态,若为使能状态,则释放激活链表的互斥锁,然后执行步骤b8;否则,执行步骤b3;
步骤b3,将软件定时器的状态修改为使能状态;
步骤b4,计算软件定时器的到期时间;
步骤b5,根据到期时间将软件定时器插入至激活链表中;
步骤b6,释放激活链表的互斥锁;
步骤b7,比较软件定时器的到期时间和嵌入式系统的最小到期时间,若软件定时器的到期时间小于嵌入式系统的最小到期时间,则更新嵌入式系统的最小到期时间;
步骤b8,结束。
6.根据权利要求1-5中任一所述的用于嵌入式系统的软件定时器实现方法,其特征在于,还包括解除软件定时器:
所述解除软件定时器包括:将软件定时器从激活链表中删除,或将软件定时器的状态修改为非使能状态。
7.根据权利要求1-5中任一所述的用于嵌入式系统的软件定时器实现方法,其特征在于,还包括删除软件定时器:
所述删除软件定时器包括:删除软件定时器节点,释放内存。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉虹信科技发展有限责任公司,未经武汉虹信科技发展有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810642960.6/1.html,转载请声明来源钻瓜专利网。





