CN1755614A - 定时器的实现方法 - Google Patents
定时器的实现方法 Download PDFInfo
- Publication number
- CN1755614A CN1755614A CN 200410080363 CN200410080363A CN1755614A CN 1755614 A CN1755614 A CN 1755614A CN 200410080363 CN200410080363 CN 200410080363 CN 200410080363 A CN200410080363 A CN 200410080363A CN 1755614 A CN1755614 A CN 1755614A
- Authority
- CN
- China
- Prior art keywords
- time
- timer
- precision
- clock source
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
本发明涉及一种定时器的实现方法,该定时器包括时钟中断服务单元、定时器处理任务单元和定时器单元,所述实现方法包括:在每次硬件时钟源中断时,时钟中断服务单元将系统相对时间进行加1操作,并同步更新系统标准时间;定时器处理任务单元读取系统标准时间和/或相对时间;定时器处理任务单元判断定时器单元是否到达定时时间,如果判断为到达定时时间,则执行所述定时器单元的预定操作。本发明的优点在于提高了嵌入式软件在定时器使用方面的灵活性和可扩展性;提高定时器的执行效率;增加系统中定时器相关问题的可测试性和可维护性。
Description
技术领域
本发明涉及嵌入式操作系统中的定时器,尤其涉及利用软件实现嵌入式操作系统(以下简称操作系统)中定时器的方法。
背景技术
在使用嵌入式操作系统的环境,例如通信系统中,当存在大量的数据处理业务时,软件在处理时经常需要通过定时器的方式处理一些复杂情况,而且需要定时器的数量远远超过可由硬件提供的定时器数量。同时,通过系统调用方式的定时器在执行速度上比较慢。在可测试性方面,当定时器出现异常问题时,不能方便地获得相关信息,使问题定位困难。
现有技术中普遍使用操作系统提供的定时器接口来启动定时器。这种现有技术存在的缺点在于,不同操作系统对定时器启动的数量存在不同的限制,因此这种定时器的技术难以完全满足不同系统的需要。另一方面,由于需要进行系统调用,系统资源消耗相对较大,定时器的执行速度慢。再有,基于操作系统的定时器在可测试性、可维护性方面也存在不足,无法根据需要增加调试信息,使对问题的定位困难。
本发明的内容
为解决现有技术的上述问题,本发明的目的在于提供一种利用软件实现定时器的方法,提高定时器使用方面的灵活性和可靠性,以及定时器的执行效率,同时,增强对定时器相关问题的可测试性和可维护性。
为实现上述目的,本发明提供了一种定时器的实现方法,通过在使用嵌入式操作系统的应用系统(如通信系统)中设置时钟中断服务单元、定时器处理任务单元、以及定时器单元及其相互间的关联,从而利用软件实现定时器的定时功能。所述方法包括:1)在每次硬件时钟源中断时,所述时钟中断服务单元更新应用系统的时间;2)所述定时器处理任务单元根据所述应用系统的时间判断所述定时器单元是否到达定时时间;和3)如果判断为到达定时时间,则所述定时器单元执行预定的操作。
根据本发明的一优选方案,所述应用系统的时间是应用系统的标准时间和/或相对时间。在这种情况下,上述步骤1)包括,在每次硬件时钟源中断时,时钟中断服务单元将系统相对时间进行加1操作,并同步更新系统标准时间。
在本发明的上述方法中,所述系统标准时间的时间精度优选等于硬件时钟源的时间精度;所述系统相对时间的时间精度与硬件时钟源的时间精度相同。
根据本发明的一优选方案,所述定时器处理任务单元采用线程或任务(相对于“中断服务程序”而言)来实现。所述线程的优先级低于时钟中断服务单元处理的优先级。
由于本发明采用了软件定时器,通过软件设计,可以实现诸如“循环定时器”“非循环定时器”等不同性质的定时器,可以满足各种不同应用的需要,因而具有很大的灵活性。
另外,本发明的软件定时器具有很好的可靠性,这体现在对定时器实现的可见性上,通过代码的实现,可以清楚地知道定时器被触发和执行的轨迹;同时通过增加测试代码,可以进一步分析问题出现时定时器更为详细的情况,这也体现了软件定时器的可测试性。
再有,本发明的软件定时器具有很好的可维护性,通过软件的开发和维护,可以实现对定时器的管理和维护,实现对定时器的动态管理。
最后,本发明的软件定时器具有高的执行效率。软件定时器的执行效率体现在它对硬件和系统的依赖上。在实际应用中,系统调用执行的效率是比较差的,而本发明的软件定时器的实现只需要一个硬件定时器作为时钟源,以对系统最小的依赖来实现,对系统调用减少到最低程度。因此对于存在多个定时器的系统,从平均每个定时器执行效率上来说,软件定时器要优于硬件定时器。
综上所述,本发明的优点在于充分满足不同应用环境对定时器的需求,同时在定时器的执行效率上与系统提供的定时器相比明显提高;具有良好的可测试性和可维护性,便于软件问题的分析和定位。
附图说明
图1为根据本发明一实施方案的实现定时器的方法的原理示意图;
图2为本发明上述实施方案的时钟中断服务单元的处理流程图;
图3为本发明上述实施方案的定时器处理任务单元的处理流程图。
具体实施方式
下面结合附图,对本发明的优选实施方案进行详细说明。
本发明是在“嵌入式”操作系统之上的一项应用技术,可以应用在通信系统、医疗系统等诸多领域。
图1是根据本发明一实施方案的原理示意图。如图1所示,本发明的该实施方案在使用嵌入式操作系统的应用系统中采用了以下三个功能单元,即时钟中断服务单元101、定时器处理任务单元102和定时器单元103,并通过这三个功能单元各自完成的操作及相互之间的关联操作,从而实现了一种新的应用于操作系统中的定时器解决方案。
在本发明的该实施方案中,需要由硬件提供一个准确的时钟源,来完成软件定时器的时间驱动功能。这个时钟源的精度将决定操作系统的定时器的运行精度。例如:如果操作系统中的硬件提供的时钟精度为10ms,则系统中软件时钟的精度也是10ms。
本发明的方法是在操作系统所提供的硬件时钟源的基础上,定义系统标准时间ST和系统相对时间RT。其中,所谓系统标准时间ST,就是如“某年某月某日某时某分某秒....”,或者其部分表示形式的时间,甚至可以包括更小的时间单位如毫秒等。系统标准时间ST的时间精度可以根据应用的需要来确定。但是,其精度不能高于硬件时钟源的精度,否则这个系统标准时间在由硬件时钟的中断服务程序进行维护的过程中,将是不准确的。相对时间可表示为系统运行至目前的时间累计值,也可以表示为从过去某个时间点至当前时刻的时间累计值,其时间精度与硬件时钟源的时间精度相同或低于硬件时钟源的精度,只要满足系统对时间精度的要求即可。
硬件时钟源精度可以根据操作系统软件对时间精度的需要来确定,但是精度过低,定时器的准确性会受到影响,精度过高,则会加重系统执行时的负担。
设置系统时钟精度时要根据系统总线的频率计算出一个大概的基数,然后通过试验对这个基数进行微调。这是公知的方法,不再赘述。
根据系统时钟的特性,硬件提供的时钟源在每次时间到时的时候会产生一个中断处理。其原理是操作系统有一个计数器,其初始值例如设为100,每经过一个系统周期——大约为(1/总线频率)秒,计数器的值就减1。当计数器的值减为0时,就会自动产生一个硬件中断。
因此,在本发明中,就是根据硬件时钟源的上述中断来进行相应的处理。图2显示了与此中断处理对应的时钟中断服务单元101的处理流程。在该处理流程中,将前面提到的系统相对时间RT进行加1操作(步骤201),对应的时间单位为系统时钟的时间间隔;同时,同步更新系统标准时间ST(步骤202)。
标准时间的更新取决于操作系统的时间精度。例如操作系统定时器的时间精度是1秒,那么每次中断就表示时间经过了1秒,标准时间需要增加1秒,标准时间的表示形式就要相应调整,例如从2004-08-0212:00:01变为2004-08-02 12:00:02。如果操作系统定时器的时间精度是1/10秒,那么每次中断表示过了1/10秒的时间,累积10次才表示过了1秒钟。
需要说明,尽管本发明的上述实施方式中采用加1操作的处理。但是本领域的技术人员可以理解,只要能准确处理时间的信息,任何处理方法都是可以的。
在本发明的图1所示的实施方案中,在操作系统中建立了一个任务(线程)级的功能单元,需要说明,任务与线程是不同的应用系统对应用程序模块的称谓。二者的实质是相同的。即定时器处理任务单元102。它用于处理定时器单元103的操作。该定时器处理任务单元102与时钟中断服务单元101最大的不同是前者处理的优先级低,响应相对滞后。之所以采用任务来处理定时器的操作,是因为在时钟中断服务单元101中不宜进行过多的处理,以免影响系统时钟的准确性。
下面参考图3。定时器处理任务单元102读取系统标准时间ST和相对时间RT(步骤301),并访问定时器单元103中的定时器到时时间DT(步骤303),通过将DT与ST或RT的比较,判断当前访问的定时器单元103设定的到时时间DT是否“到时”(步骤303)。如果时间到,则执行该定时器的预定操作,例如进行数据处理、数据备份,进行系统的一些检测等等(步骤304);否则处理下一个定时器单元103(步骤302)。
定时器单元103是定时器任务单元102处理的对象,在定时器任务中判断定时器单元103是否满足“到时”条件,从而执行相应的操作。
对于定时器单元103来说,它的到时时间DT可以用相对时间来表示,也可以用标准时间来表示。在本发明中,定时器单元的相对时间是指时间从创建或使用定时器单元103的时刻算起,经过N个相对定时器周期而达到的某一时刻;而标准时间则是指一个具体的标准时间,比如:2004年5月4日12时0分0秒等。采用相对时间的定时器通过系统相对时间RT来判断当前的定时器是否到时,采用标准时间的定时器使用系统标准时间ST来判断定时器是否到时。举例来说,设定一个定时器1,要求它在2004年8月24日12时5分0秒执行某个任务,这个定时器就是所谓“标准时间”的定时器;设定一个定时器2,要求它5分钟之后执行某项任务,这个定时器就是“相对时间”的定时器。
例如:当前操作系统的相对时间RT是122000T(T代表硬件定时器的时钟周期),要启动一个200T时长的定时器单元103,那么该定时器单元103的到时时间DT就是122200T。定时器处理任务单元102在检测该定时器单元103时,判断操作系统当前的相对时间RT是否已经等于或者超过了122200T,如果大于等于122200T,则执行该定时器单元对应的操作。
另一方面,对于采用标准时间的定时器单元103,定时器处理任务单元102会检测当前的操作系统标准时间ST是否与该定时器单元103的到时时间DT相同,来决定该定时器单元103预定的操作是否被执行。
显然,对于采用相对时间的定时器单元103,还可以采用其他方法判断该定时器单元103的到时情况。
在本发明的一个实施例中,采用时间相减法进行判断。当利用与当前操作系统对应的相对时间RT,启动例如一个200T的定时器单元时,在一个系统时钟中断到达之后,这个定时器单元的时长就会相应减小,由200T变为199T。当这个定时器单元的时长为0T时,表示已到时,则定时器处理任务单元102执行该定时器单元对应的处理。
通过上述说明可知,由于本发明的定时器是软件形式的定时器,因此可以通过检测软件的方法来定位这类定时器产生的问题,而不需要依赖操作系统提供的硬件。另外,通过软件方法可以提供丰富的调试手段,实现对定时器的控制和管理。
另外,通过软件方法还可以实现定时器种类的自由扩充,例如实现循环定时器、秒级定时器、分钟定时器等等。具有良好的“灵活性和可扩展性”。
上述的附图及说明仅为本发明的实施例而已,其目的是用于说明本发明的基本原理和使本领域技术人员更容易理解本发明的实质,而并非用于限定本发明的范围,凡是本领域技术人员按照本发明的技术特征所作的其它等效变换,均应包括在本发明的申请专利范围内。
Claims (10)
1.一种定时器的实现方法,所述定时器包括时钟中断服务单元、定时器处理任务单元和定时器单元,其特征在于,所述实现方法包括:
1)在每次硬件时钟源中断时,所述时钟中断服务单元更新应用系统的时间;
2)所述定时器处理任务单元根据所述应用系统的时间判断所述定时器单元是否到达定时时间;和
3)如果判断为到达定时时间,则执行所述定时器单元的预定操作。
2.根据权利要求1所述的方法,其特征在于,所述应用系统的时间是系统标准时间和/或系统相对时间。
3.根据权利要求2所述的方法,其特征在于,所述步骤1)包括,在每次硬件时钟源中断时,时钟中断服务单元将系统相对时间进行加1操作,并同步更新所述系统标准时间。
4.根据权利要求3所述的方法,其特征在于,所述定时器单元的到时时间以所述应用系统的相对时间或标准时间为基准来表示。
5.根据权利要求4所述的方法,其特征在于,所述步骤2)中,通过将所述定时器单元的到时时间与所述系统标准时间或系统相对时间相比较,来判断所述定时器单元是否到达定时时间。
6.根据权利要求5所述的方法,其特征在于,所述系统标准时间的时间精度与所述硬件时钟源的时间精度相同,或低于所述硬件时钟源的时间精度。
7.根据权利要求5所述的方法,其特征在于,所述系统相对时间的时间精度与所述硬件时钟源的时间精度相同,或低于所述硬件时钟源的时间精度。
8.根据权利要求3所述的方法,其特征在于,当所述的定时器单元的到时时间采用所述系统相对时间为基准表示时,在所述步骤2)中,每次所述硬件时钟源产生中断,则将所述定时器单元的到时时间递减。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述定时器处理任务单元采用线程或任务实现。
10.根据权利要求9所述的方法,其特征在于,所述定时器处理任务单元的优先级低于所述时钟中断服务单元的优先级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410080363 CN1755614A (zh) | 2004-09-29 | 2004-09-29 | 定时器的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410080363 CN1755614A (zh) | 2004-09-29 | 2004-09-29 | 定时器的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1755614A true CN1755614A (zh) | 2006-04-05 |
Family
ID=36688891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200410080363 Pending CN1755614A (zh) | 2004-09-29 | 2004-09-29 | 定时器的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1755614A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100395702C (zh) * | 2006-09-30 | 2008-06-18 | 华为技术有限公司 | 一种定时器实现方法 |
CN100426240C (zh) * | 2006-11-22 | 2008-10-15 | 北京中星微电子有限公司 | 一种消息及时处理方法和嵌入式多任务操作系统 |
CN101859260A (zh) * | 2010-05-14 | 2010-10-13 | 中国科学院计算技术研究所 | 用于操作系统中的定时器管理装置和管理方法 |
CN101673222B (zh) * | 2009-11-03 | 2012-02-29 | 东方电子股份有限公司 | VxWorks系统多路选择模式下任务定时器的实现方法 |
CN103455310A (zh) * | 2012-05-29 | 2013-12-18 | 中兴通讯股份有限公司 | 信号量等待接口定时方法及装置 |
CN104597820A (zh) * | 2015-02-11 | 2015-05-06 | 四川天邑康和通信股份有限公司 | 一种扩展单片机硬件定时器的方法 |
CN104866325A (zh) * | 2015-06-20 | 2015-08-26 | 成都彬鸿科技有限公司 | 一种硬件定时器的管理方法 |
CN105528015A (zh) * | 2015-12-22 | 2016-04-27 | 恒宝股份有限公司 | 一种软时钟的实现方法及应用装置 |
WO2018058830A1 (zh) * | 2016-09-28 | 2018-04-05 | 深圳Tcl数字技术有限公司 | 定时器的计时方法和装置 |
CN108241308A (zh) * | 2017-12-08 | 2018-07-03 | 中国航空工业集团公司成都飞机设计研究所 | 一种基于分时分区嵌入式软件的运行时间控制方法 |
CN108845872A (zh) * | 2018-06-21 | 2018-11-20 | 武汉虹信通信技术有限责任公司 | 一种用于嵌入式系统的软件定时器实现方法 |
CN109445924A (zh) * | 2018-11-06 | 2019-03-08 | 网易(杭州)网络有限公司 | 时间虚拟方法、装置、介质及电子设备 |
WO2020253776A1 (zh) * | 2019-06-19 | 2020-12-24 | 深圳市道通科技股份有限公司 | 基于定时器的任务处理方法、装置及电子设备 |
CN113687916A (zh) * | 2021-08-17 | 2021-11-23 | 锐捷网络股份有限公司 | 数据处理方法及装置、时间更新方法及装置、电子设备 |
-
2004
- 2004-09-29 CN CN 200410080363 patent/CN1755614A/zh active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100395702C (zh) * | 2006-09-30 | 2008-06-18 | 华为技术有限公司 | 一种定时器实现方法 |
CN100426240C (zh) * | 2006-11-22 | 2008-10-15 | 北京中星微电子有限公司 | 一种消息及时处理方法和嵌入式多任务操作系统 |
CN101673222B (zh) * | 2009-11-03 | 2012-02-29 | 东方电子股份有限公司 | VxWorks系统多路选择模式下任务定时器的实现方法 |
CN101859260A (zh) * | 2010-05-14 | 2010-10-13 | 中国科学院计算技术研究所 | 用于操作系统中的定时器管理装置和管理方法 |
CN101859260B (zh) * | 2010-05-14 | 2012-12-12 | 中国科学院计算技术研究所 | 用于操作系统中的定时器管理装置和管理方法 |
CN103455310A (zh) * | 2012-05-29 | 2013-12-18 | 中兴通讯股份有限公司 | 信号量等待接口定时方法及装置 |
CN104597820A (zh) * | 2015-02-11 | 2015-05-06 | 四川天邑康和通信股份有限公司 | 一种扩展单片机硬件定时器的方法 |
CN104866325B (zh) * | 2015-06-20 | 2017-12-01 | 成都彬鸿科技有限公司 | 一种硬件定时器的管理方法 |
CN104866325A (zh) * | 2015-06-20 | 2015-08-26 | 成都彬鸿科技有限公司 | 一种硬件定时器的管理方法 |
CN105528015A (zh) * | 2015-12-22 | 2016-04-27 | 恒宝股份有限公司 | 一种软时钟的实现方法及应用装置 |
WO2018058830A1 (zh) * | 2016-09-28 | 2018-04-05 | 深圳Tcl数字技术有限公司 | 定时器的计时方法和装置 |
CN108241308A (zh) * | 2017-12-08 | 2018-07-03 | 中国航空工业集团公司成都飞机设计研究所 | 一种基于分时分区嵌入式软件的运行时间控制方法 |
CN108845872A (zh) * | 2018-06-21 | 2018-11-20 | 武汉虹信通信技术有限责任公司 | 一种用于嵌入式系统的软件定时器实现方法 |
CN108845872B (zh) * | 2018-06-21 | 2021-02-02 | 武汉虹信科技发展有限责任公司 | 一种用于嵌入式系统的软件定时器实现方法 |
CN109445924A (zh) * | 2018-11-06 | 2019-03-08 | 网易(杭州)网络有限公司 | 时间虚拟方法、装置、介质及电子设备 |
WO2020253776A1 (zh) * | 2019-06-19 | 2020-12-24 | 深圳市道通科技股份有限公司 | 基于定时器的任务处理方法、装置及电子设备 |
CN113687916A (zh) * | 2021-08-17 | 2021-11-23 | 锐捷网络股份有限公司 | 数据处理方法及装置、时间更新方法及装置、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1755614A (zh) | 定时器的实现方法 | |
EP3281125B1 (en) | Event processing system paging | |
CN103678392A (zh) | 一种数据增量合并的方法及其装置 | |
CN106970921B (zh) | 一种数据迁移方法及装置 | |
CN107832230B (zh) | 基于数据调优的测试方法、设备以及系统 | |
CN101751289B (zh) | 一种嵌入式实时操作系统的混合调度方法 | |
US20080104610A1 (en) | Hardware threads processor core utilization | |
CN101344865B (zh) | 一种cpu占用率测量方法及装置 | |
US7424589B1 (en) | Method and an apparatus for the high-precision tracking of approximate per-task memory usage | |
EP2270689A1 (en) | Method and system for time dependent search | |
CN106325984B (zh) | 一种大数据任务调度装置 | |
CN101876933A (zh) | Cpu使用率分析系统及方法 | |
CN103019805A (zh) | 一种多线程环境下定时器的设置方法 | |
US8799872B2 (en) | Sampling with sample pacing | |
Santy et al. | Two protocols to reduce the criticality level of multiprocessor mixed-criticality systems | |
CN103019977A (zh) | 嵌入式系统应用设备实现版本自动识别的方法及启动方法 | |
CN1877545A (zh) | 一种嵌入式系统模拟器中的动态软件能耗测试方法 | |
CN1477512A (zh) | 嵌入式软件任务死循环监控方法 | |
CN103458527A (zh) | 前导检测任务处理调度方法及装置 | |
CN102750149B (zh) | 调度表的实现方法及系统 | |
CN1324477C (zh) | 一种检测实时操作系统cpu占用率的方法 | |
CN1928817A (zh) | 一种定时器实现方法 | |
CN1295614C (zh) | 一种测试用软件计时方法 | |
CN103106111B (zh) | 多任务操作系统中任务优先级反转的检测系统及方法 | |
CN112527614A (zh) | 一种智能设备日志量预警系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |