一种CPU定时器准确性的测试方法转让专利

申请号 : CN200710301529.7

文献号 : CN101464822B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王景敏

申请人 : 中兴通讯股份有限公司

摘要 :

本发明公开了一种CPU定时器准确性的测试方法,包括:步骤一,用一精确的计时工具的计时为参考基准,取不同时长对CPU中第一被测定时器进行多次测试;步骤二,当所述步骤一中的被测定时器的计时准确时,以该第一被测定时器的计时为参考基准,测试CPU中其余定时器的准确性。应用该方法不需要借助特定的仪器,在系统上电之后的任何时间都可以进行测试,测试过程不影响系统的运行。

权利要求 :

1.一种CPU定时器准确性的测试方法,其特征在于,包括:

步骤一,用一精确的计时工具的计时为参考基准,取不同时长对CPU中第一被测定时器进行多次测试;

步骤二,当所述步骤一中的被测定时器的计时准确时,以该第一被测定时器的计时为参考基准,测试CPU中其余定时器的准确性;

所述步骤二包括:

步骤21,设置测试时长(δ)s,并分别保存所述第一被测定时器及另一被测定时器的计时精度;

步骤22,根据测试精度的需要,设置所述第一被测定时器及另一被测定时器新的计时精度(1/m)s;

步骤23,根据所述设置的新的计时精度,以所述第一被测定时器的计时为参考基准,对该另一被测定时器取不同时长进行多次测试;

所述步骤23包括:

步骤231,挂接所述另一被测定时器的中断处理程序,入参为所述设置的测试时长内所述另一被测定时器的中断次数:测试时长/计时精度(δ*m);

步骤232,获取并保存所述第一被测定时器的当前计时t1_a,精度为(1/m)s,同时打开所述另一被测定时器中断;

步骤233,当所述另一被测定时器中断次数累计到设置的测试时长内总的中断次数δ*m时,获取所述第一被测定时器的当前计时t1_b;

步骤234,获取t1_b与t1_a之间的差值A,并获取该差值A与δ*m的差值B,如果该差值B在误差允许范围内,则所述另一被测定时器计时准确。

2.根据权利要求1所述的CPU定时器准确性的测试方法,其特征在于,所述步骤一进一步包括:步骤11,选择一精确的计时工具作为参考基准,将所述第一被测定时器设为系统时钟,设置测试时长;

步骤12,记录参考计时工具的当前的时间,并获取所述系统的当前时间;

步骤13,参考计时工具计时到达步骤11设定的测试时长时,再次获取系统的当前时间;

步骤14,使用步骤13与步骤12两次获取的系统当前时间的差值与测试时长进行比较,测试所述第一被测定时器的准确性。

3.根据权利要求2所述的CPU定时器准确性的测试方法,其特征在于,所述步骤13中,如果所述系统的当前时间与所述计时工具的当前时间之差在误差允许范围之内,则该第一被测定时器准确;否则继续取不同时长多次对该第一被测定时器进行测试。

4.根据权利要求3所述的CPU定时器准确性的测试方法,其特征在于,所述步骤13中,所述取不同时长对第一被测定时器进行多次测试步骤中,如果多次测试的所述计时工具的计时与所述系统时钟的计时的差值不随测试时长线性增长,则该第一被测定时器计时准确,否则该第一被测定时器计时不准确。

5.根据权利要求3或4中所述的CPU定时器准确性的测试方法,其特征在于,当所述第一被测定时器计时不准确时,校正该第一被测定时器循环对其进行测试,直至测试该第一被测定时器的计时准确为止。

6.根据权利要求1所述的CPU定时器准确性的测试方法,其特征在于,所述步骤一中的计时工具为秒表,该计时工具至少精确到秒级。

7.根据权利要求1所述的CPU定时器准确性的测试方法,其特征在于,所述步骤234中,如果所述差值B在误差允许范围外,则要继续取不同时长对所述另一被测定时器进行多次测试,如果该差值B不随测试时间线性增长,则该另一被测定时器计时准确,否则校正该另一被测定时器并循环对其进行测试,直至测试该另一被测定时器的计时准确为止。

8.根据权利要求1所述的CPU定时器准确性的测试方法,其特征在于,在所述步骤23之后还包括:步骤24,恢复所述步骤21中保存的第一被测定时器及另一被测定时器的计时精度。

说明书 :

一种CPU定时器准确性的测试方法

技术领域

[0001] 本发明涉及CPU定时器的测试,特别涉及一种CPU定时器准确性的方法。 [0002] 背景技术
[0003] CPU定时器的应用很广泛,其所起的作用也很关键。有的系统中将一个定时器(TIMER)作为操作系统的时钟,其它的几个定时器作为辅助时钟,共同完成操作系统以及其它功能所需要的计时工具。如果软件或是硬件设计的失误都可能导致定时器的计时不准确,从而导致系统无法正常运行。由于定时器计时不准确而带来的各种问题都隐含,解决这些问题也有一定的难度,所以其准确性的测试就显得异常重要。
[0004] 目前,对于定时器准确性的测试方法很少,基本上是使用仪器对硬件的时钟信号进行测试,从而达到间接测试CPU定时器的目的。但是,有些情况下即使硬件时钟信号测试正常,也不能保证CPU定时器的准确性。
[0005] 发明内容
[0006] 本发明所要解决的技术问题在于,提供了一种CPU定时器准确性的测试方法,测试过程不影响系统的运行,且方法简单结果准确。
[0007] 为达到上述目的,本发明提供的CPU定时器准确性的测试方法,包括: [0008] 步骤一,用一精确的计时工具的计时为参考基准,取不同时长对CPU中第一被测定时器进行多次测试;
[0009] 步骤二,当所述步骤一中的被测定时器的计时准确时,以该第一被测定时器的计时为参考基准,测试CPU中其余定时器的准确性;
[0010] 所述步骤二进一步包括:
[0011] 步骤21,设置测试时长(δ)s,并分别保存所述第一被测定时器及另一被测定时器的计时精度;
[0012] 步骤22,根据测试精度的需要,设置所述第一被测定时器及另一被测定 时器新的计时精度(1/m)s;
[0013] 步骤23,根据所述设置的新的计时精度,以所述第一被测定时器的计时为参考基准,对该另一被测定时器取不同时长进行多次测试;
[0014] 所述步骤23进一步包括:
[0015] 步骤231,挂接所述另一被测定时器的中断处理程序,入参为所述设置的测试时长内所述另一被测定时器的中断次数:测试时长/计时精度(δ*m);
[0016] 步骤232,获取并保存所述第一被测定时器的当前计时t1_a,精度为(1/m)s,同时打开所述另一被测定时器中断;
[0017] 步骤233,当所述另一被测定时器中断次数累计到设置的测试时长内总的中断次数δ*m时,获取所述第一被测定时器的当前计时t1_b;
[0018] 步骤234,获取t1_b与t1_a之间的差值A,并获取该差值A与δ*m的差值B,如果该差值B在误差允许范围内,则所述另一被测定时器计时准确。
[0019] 上述CPU定时器准确性的测试方法,所述步骤一进一步包括:
[0020] 步骤11,选择一精确的计时工具作为参考基准,将所述第一被测定时器设为系统时钟,设置测试时长;
[0021] 步骤12,记录参考计时工具的当前的时间,并获取所述系统的当前时间; [0022] 步骤13,参考计时工具计时到达步骤11设定的测试时长时,再次获取系统的当前时间;
[0023] 步骤14,使用步骤13与步骤12两次获取的系统当前时间的差值与测试时长进行比较,测试所述第一被测定时器的准确性。
[0024] 上述CPU定时器准确性的测试方法,所述步骤13中,如果所述系统的当前时间与所述计时工具的当前时间之差在误差允许范围之内,则该第一被测定时器准确;否则继续取不同时长多次对该第一被测定时器进行测试。
[0025] 上述CPU定时器准确性的测试方法,所述步骤13中,所述取不同时长对第一被测定时器进行多次测试步骤中,如果多次测试的所述计时工具的计时与所述系统时钟的计时的差值不随测试时长线性增长,则该第一被测定时器计时准确,否则该第一被测定时器计时不准确。
[0026] 上述CPU定时器准确性的测试方法,当所述第一被测定时器计时不准确时,校正该第一被测定时器循环对其进行测试,直至测试该第一被测定时器的计时准确为止。 [0027] 上述CPU定时器准确性的测试方法,所述步骤一中的计时工具为秒表,该计时工具至少精确到秒级。
[0028] 上述CPU定时器准确性的测试方法,所述步骤234中,如果所述差值B在误差允许范围外,则要继续取不同时长对所述另一被测定时器进行多次测试,如果该差值B不随测试时间线性增长,则该另一被测定时器计时准确,否则校正该另一被测定时器并循环对其进行测试,直至测试该另一被测定时器的计时准确为止。
[0029] 上述CPU定时器准确性的测试方法,在所述步骤23之后还包括: [0030] 步骤24,恢复所述步骤21中保存的第一被测定时器及另一被测定时器的计时精度。
[0031] 与现有技术相比,本发明提供的CPU定时器准确性的测试方法,不需要借助特定的仪器,在系统上电之后的任何时间都可以进行测试,测试过程不影响系统的运行,方法简单,测试结果准确,时钟准确与否一目了然。
[0032] 附图说明
[0033] 图1为本发明CPU定时器准确性的测试方法的流程图;
[0034] 图2为本发明CPU定时器准确性的测试方法的具体实施例流程。 [0035] 具体实施方式
[0036] 下面结合附图和具体实施例对本发明技术方案进行详细的描述,以更进一步了解本发明之目的、方案及功效,但并非作为对本发明所附权利要求保护范围的限制。 [0037] 图1是本发明CPU定时器准确性的测试方法的流程图,参考图1,该测试方法包括以下步骤:
[0038] 步骤S10,用一精确的计时工具的计时为参考基准,取不同时长对CPU中第一被测定时器进行多次测试;
[0039] 步骤S20,当所述步骤一中的被测定时器的计时准确时,以该第一被测定时器的计时为参考基准,测试CPU中其余定时器的准确性。
[0040] 上述步骤S10进一步包括:
[0041] 步骤S101,选择一精确的计时工具作为参考基准,将所述第一被测定时器设为系统时钟,设置测试时长;
[0042] 步骤S102,记录参考计时工具的当前的时间,并获取所述系统的当前时间; [0043] 步骤S103,参考计时工具计时到达骤S101设定的测试时长时,再次获取系统的当前时间;
[0044] 步骤S104,使用步骤S103与步骤S102两次获取的系统当前时间的差值与测试时长进行比较,测试所述第一被测定时器的准确性。
[0045] 上述步骤S20又进一步包括:
[0046] 步骤S201,设置测试时长,并分别保存所述第一被测定时器及另一被测定时器的计时精度;
[0047] 步骤S202,根据测试精度的需要,设置所述第一被测定时器及另一被测定时器新的计时精度;
[0048] 步骤S203,根据所述设置的新的计时精度,以所述第一被测定时器的计时为参考基准,对该另一被测定时器取不同时长进行多次测试。
[0049] 下面以具体实施例对本发明的技术方案进行详细的说明。
[0050] 如果CPU有TIMER1 TIMER2 TIMER3 TIMER4四个定时时钟,首先按照上述步骤S10对CPU中的TIMER1计时准确性的测试,以vxworks操作系统为例:具体测试方式如下: [0051] (1)将TIMER1设为系统时钟;(2)记下秒表或PC机显示的当前时间,同时调用函数time(),获取vxworks系统返回的以秒计的当前时间;(3)10分钟、20分钟之后,分别再次调用函数time(),获取vxworks系统返回的以秒计的当前时间;(4)比较系统返回的时间间隔与秒表或PC机的时间是否有差别,存在差别可再进行稍长时间的测试,如果两者的时间差别为1-2s,并且不随测试时间线性增长,认为TIMER1计时准确。
[0052] TIMER1的计时准确性得到保证之后,其它的定时时钟TIMER2 TIMER3TIMER4的测试就以该时钟为基准进行测试,比如对TIMER2进行测试,具体流程如图2所示。 [0053] 步骤S221,设置测试时长为200s,TIMER1 TIMER2的计时精度设为(1/100)s; [0054] 步骤S222,挂接TIMER2的中断处理程序,入参为200s内TIMER2的中 断次数(200*100);
[0055] 步骤S223,获取TIMER1的当前计时t1_a,精度为(1/100)s,同时打开TIMER2中断;
[0056] 步骤S224,TIMER2中断处理。TIMER2的中断处理程序中累计中断次数,并且判断中断次数是否达到200*100,如果中断次数已经为200*100,说明TIMER2的计时已经为200s,此时记录TIMER1的当前计时t1_b,精度为(1/100)s,关闭TIMER2中断。 [0057] 步骤S225,比较TIMER1的两次计时间隔(t1_b-t1_a)与200*100的差值,误差允许范围内则认为TIMER2计时准确,否则计时不准确,计时不准确的话校正该TIMER2,循环测试直至测试准确。
[0058] 在步骤S225中,如果(t1_b-t1_a)与200*100存在一定的差值,并在误差允许范围外,该差值比较小,但是不能确定是否是程序执行的误差的情况下,则可以进一步取不同的时长进行多次测试,如果该差值不随测试时长线性增长,认为差值为程序执行的误差,TIMER2计时准确。
[0059] TIMER3、TIMER4的测试与TIMER2相同,不再赘述。
[0060] 虽然本发明已以一较佳实施例揭露如上,然其并非用以限定本发明,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。