本发明专利技术涉及一种有利于低功耗的无累计误差的动态时长定时器实现方法。其特征在于相对时间单元是系统从开机到现在所经过的时间;时间中断服务单元负责更新软件定时器的运行时间,根据最近软件定时器超时时间,设置下一次的硬件时钟源中断产生时间,同时激活定时器处理任务单元;定时器处理任务单元根据当时相对时间单元时间判断软件定时器节点是否到达定时时间,定时器超期则执行预定处理单元的定时器超期处理方法,根据定时器类型判断是循环定时器还是非循环定时器执行相关操作;定时器管理单元负责相关初始化及定时器节点的插入、删除操作。本发明专利技术避免了由于CPU执行中断服务程序而产生的时间偏差和累计误差,实现了动态可变长定时以降低功耗。
【技术实现步骤摘要】
有利于低功耗的无累计误差的动态时长定时器实现方法
本专利技术涉及一种有利于低功耗的无累计误差的动态时长定时器实现方法。
技术介绍
在嵌入式开发中有很多应用需要使用到定时功能,但硬件设备提供的定时器的数量远远不能满足业务需求,如对外围设备进行周期性访问的需求,一般采用轮询方式。对于周期性获取,传统的实现方案就是利用系统提供的定时器,采取循环定时查询方式。在传统方案下将不利于系统低功耗的实现,并且也会对硬件定时器资源造成巨大的压力。使用这种方式不仅浪费系统资源,而且很难使嵌入式设备整体进入良好的休眠,从而导致功耗的浪费,增加了对电源需求的成本。硬件定时器在可测试性方面,当定时器出现异常问题时,不能方便地获得相关信息,使问题定位困难。软件定时器的实现方式有很多,大都是当中断达到时候,定时器的值减少一个单位。当一个定时器的值减小到0的时候,它将触发与其相关联的服务程序。或者当中断达到时候,定时器的值增加一个单位,激活定时器处理程序,查询是否有定时器到期。导致了周期性的中断CPU,对有效软件定时器的命中率很低。影响系统性能,不能使CPU进入低功耗。所以需要本领域技术人员迫切解决的一个技术问题就是:如何能够创新地提出一种有利于低功耗的无累计误差的动态时长定时器实现方法。
技术实现思路
针对现有技术中存在的问题,本专利技术的目的在于提供一种有利于低功耗的无累计误差的动态时长定时器实现方法的技术方案。所述的有利于低功耗的无累计误差的动态时长定时器实现方法,其特征在于由相对时间单元、时钟中断服务单元、定时器处理任务单元、定时器管理单元和预定处理单元配合实现,所述的相对时间单元是系统从开机到现在所经过的时间,由硬件定时器B构成,配置后持续运行,不会随系统时间的变化而变化,能够用来准确的计算时间;所述的时间中断服务单元负责更新软件定时器的运行时间,根据最近软件定时器超时时间,设置下一次的硬件时钟源中断产生时间,同时激活定时器处理任务单元,时钟中断由硬件定时器A到期后触发中断;所述定时器处理任务单元根据当时相对时间单元时间判断软件定时器节点是否到达定时时间,如果判断为定时器超期,则执行预定处理单元的定时器超期处理方法,根据定时器类型判断是循环定时器还是非循环定时器执行相关操作;所述的定时器管理单元负责相关的初始化及定时器节点的插入、删除操作;创建定时器时,需要记录定时器定时时长、定时器类型、超期后发送的信息,根据定时器定时时长,将定时器增加到定时器等待处理链表,根据插入链表的位置,决定是否需要修改硬件时钟源的超时时间;删除定时器时,根据定时器编号,直接定位到定时器在链表中的位置,删除定时器,根据删除链表的位置,决定是否需要修改硬件时钟源的超时时间。所述的有利于低功耗的无累计误差的动态时长定时器实现方法,其特征在于所述的硬件定时器A用于根据定时时长触发时钟中断服务单元,硬件定时器A是中断处理单元的构成部分。所述的有利于低功耗的无累计误差的动态时长定时器实现方法,其特征在于所述的硬件定时器B作为参考时间源构成相对时间单元;定时器管理单元根据最近软件定时器时长设置硬件定时器A的中断触发时间,触发时钟中断服务单元运行;时钟中断服务单元读取硬件定时器B的时间,通过和上一次记录的硬件定时器B的时间进行比较,从而获得时间差,根据时间差更新软件运行时间,激活定时器处理任务单元,定时器处理任务获取相对时间单元时间与定时器节点超期时刻比较,如果当前相对时间单元时间大于定时器节点超期时刻,执行定时器节点中注册的预定处理单元中的函数。本专利技术有益效果:传统软件定时器使用单个硬件定时器作为触发源和时间更新源,由硬件定时器产生中断,CPU响应中断,但是CPU响应中断需要消耗时间,以及当硬件定时器中断到来时CPU正在执行某中断服务程序,则需要更长的时间,长期的累积将会造成时间的偏差。而本专利技术方法采用的是相对时间单元即硬件定时器B作为参考时间源,硬件定时器B不需要触发中断,不需要由CPU响应中断后重新设置时间,因此从本质上避免了由于CPU执行中断服务程序而产生的时间偏差。附图说明图1是本专利技术的总体结构框图;图2是本专利技术的软件定时器节点初始化示意图;图3是本专利技术的用户信息节点初始化示意图;图4是本专利技术的创建定时器流程图;图5是本专利技术的定时器等待处理链表结构示意图;图6是本专利技术的时钟中断服务流程图;图7是本专利技术的定时器处理流程图;图8是本专利技术的运行时间更新示意图。具体实施方式下面结合说明书附图对本专利技术作进一步说明:本专利技术实施例的核心构思之一在于,通过采用了2个硬件定时器(硬件定时器A和硬件定时器B),其中硬件定时器A用于根据定时时长触发时钟中断服务单元,硬件定时器A是中断处理单元的构成部分。硬件定时器B作为参考时间源构成相对时间单元。定时器管理单元根据最近软件定时器时长设置硬件定时器A的中断触发时间,触发时钟中断服务单元运行。时钟中断服务单元读取相对时间单元时间(硬件定时器B的时间),通过和上一次记录的相对时间单元时间(硬件定时器B的时间)进行比较,从而获得时间差,根据时间差更新软件运行时间,激活定时器处理任务单元,定时器处理任务获取相对时间单元时间与定时器节点超期时刻比较,如果当前相对时间单元时间大于定时器节点超期时刻,执行定时器节点中注册的预定处理单元中的函数。在软件定时器的累计误差分析方面,首先,把时钟中断服务单元与定时器处理任务单元分开处理,通过信号量异步激活,使得消除时钟中断服务单元,更新软件定时器运行时间的误差,及定时器处理任务单元回调函数执行所带来的函数执行时的时间开销,清除回调误差;其次,使用相对时间单元来进行定时器的时间管理,消除了定时器本身指令执行造成的时间开销。相对时间单元由硬件定时器B构成,配置后持续运行,不会随系统时间的变化而变化,因此可以用来准确的计算时间。相对时间单元:由硬件定时器B构成,配置后持续运行,不会随系统时间的变化而变化,因此可以用来准确的计算时间。本专利技术计时单元采用CPU内部的64位定时器实现,该定时器可以分为32位级联模式,及第一个32位定时器(TIM34)用作用做预分频器,另一个用作32位的定时器(TIM12)。该定时器的精度可以高达微秒级别,本专利技术对其计算只精确到毫秒。定时器管理单元:包含对硬件定时器的初始化,软件定时器管理资源的初始化,定时器处理任务单元初始化,创建定时器及删除定时器的具体实现方法:1.初始化:A.初始化硬件定时器主要初始化相对时间单元中的硬件定时器B,启动相对时间单元开始计时;由于硬件定时器的精度与硬件选型和该器件的硬件配置相关,具体请参考选型器件的芯片资料;本专利技术按照毫秒精度进行配置和计算;B.初始化软件定时器节点本专利技术可以根据需要设置软件定时器个数,软件定时器资源采用连续的存储空间,按数组分配固定的序号,即为定时器节点的标识,按双向链表方式组织,通过空闲定时器链表管理;C.初始化用户信息节点本专利技术可以根据需要设置用户信息节点个数,用户信息资源采用连续的存储空间,按双向链表方式组织,通过空闲用户信息链表管理;D.初始化定时器等待处理链表;E.初始化系统时间(根据需要可选配置)系统时间为记录系统的年月日时分秒,设置该功能,需要每秒更新一次系统时间,需要设置一个秒级的定时器超期节点,每秒钟对系统本文档来自技高网...
【技术保护点】
有利于低功耗的无累计误差的动态时长定时器实现方法,其特征在于由相对时间单元、时钟中断服务单元、定时器处理任务单元、定时器管理单元和预定处理单元配合实现,所述的相对时间单元是系统从开机到现在所经过的时间,由硬件定时器B构成,配置后持续运行,不会随系统时间的变化而变化,能够用来准确的计算时间;所述的时间中断服务单元负责更新软件定时器的运行时间,根据最近软件定时器超时时间,设置下一次的硬件时钟源中断产生时间,同时激活定时器处理任务单元,时钟中断由硬件定时器A到期后触发中断;所述定时器处理任务单元根据当时相对时间单元时间判断软件定时器节点是否到达定时时间,如果判断为定时器超期,则执行预定处理单元的定时器超期处理方法,根据定时器类型判断是循环定时器还是非循环定时器执行相关操作;所述的定时器管理单元负责相关的初始化及定时器节点的插入、删除操作;创建定时器时,需要记录定时器定时时长、定时器类型、超期后发送的信息,根据定时器定时时长,将定时器增加到定时器等待处理链表,根据插入链表的位置,决定是否需要修改硬件时钟源的超时时间;删除定时器时,根据定时器编号,直接定位到定时器在链表中的位置,删除定时器,根据删除链表的位置,决定是否需要修改硬件时钟源的超时时间。...
【技术特征摘要】
1.有利于低功耗的无累计误差的动态时长定时器实现方法,其特征在于由相对时间单元、时钟中断服务单元、定时器处理任务单元、定时器管理单元和预定处理单元配合实现,所述的相对时间单元由硬件定时器B构成,配置后持续运行,不会随系统时间的变化而变化,能够用来准确的计算时间;相对时间单元时间是系统从开机到现在所经过的时间;所述的时钟中断服务单元负责更新软件定时器的运行时间,根据最近软件定时器超时时间,设置下一次的硬件时钟源中断产生时间,同时激活定时器处理任务单元,时钟中断由硬件定时器A到期后触发中断;所述定时器处理任务单元根据当时相对时间单元时间判断软件定时器节点是否到达定时时间,如果判断为定时器超期,则执行预定处理单元的定时器超期处理方法,根据定时器类型判断是循环定时器还是非循环定时器执行相关操作;所述的定时器管理单元负责相关的初始化及定时器节点的插入、删除操作;创建定时器时,需要记录定时器定时时长、定时器类型、超期后发送的信息,根据定时器定时时长,将定时器增加到定时器等待处理链表,根据插入...
【专利技术属性】
技术研发人员:宫尚,周冬生,苏碎洲,高东,张宗军,
申请(专利权)人:杭州东信捷峻科技有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。