CN1553336A - 一种测试用软件计时方法 - Google Patents
一种测试用软件计时方法 Download PDFInfo
- Publication number
- CN1553336A CN1553336A CNA031381375A CN03138137A CN1553336A CN 1553336 A CN1553336 A CN 1553336A CN A031381375 A CNA031381375 A CN A031381375A CN 03138137 A CN03138137 A CN 03138137A CN 1553336 A CN1553336 A CN 1553336A
- Authority
- CN
- China
- Prior art keywords
- timer
- processing unit
- central processing
- test
- count value
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种测试用软件计时方法,包括以下步骤:初始化中央处理器的定时器;关闭中央处理器的定时器,并记录中央处理器的定时器的当前计数值;打开中央处理器的定时器并开始计时,打开中央处理器的定时器必须在开始测试之前;开始测试过程,运行要测试的程序模块,中央处理器的定时器同时记录占用中央处理器的时钟周期数;测试结束后,读取中央处理器的定时器的当前计数值,并用当前计数值减去前面获得的计数值,得到两次计数值的差值;将获得的两次计数值的差值乘以中央处理器的时钟周期,得到测试的时间;停止计时,关闭中央处理器的定时器。
Description
技术领域
本发明涉及测试用软件计时方法,尤其涉及一种用于无线通信***中的测试用软件计时方法,其精确度达到纳秒级。
背景技术
在无线通信***中,现有技术有多种测试用计时方法,但现有的软件计时方法误差较大,方法繁琐,不能满足要求。精度较高的,需要增加额外的硬件如数字信号处理器(DSP)等。在无线通信***1X CDMA2000中,现有的测试方法是利用实时嵌入式操作***的消息传递机制,通过测试进程将计时消息传递给底层特定的硬件如DSP而获取较精确的计时。一般操作***的***时间精度只能达到十个毫秒,而底层硬件的精度可以达到纳妙计,比如1X CDMA2000用于测试的DSP的计时精度可以达到40纳秒。增加硬件虽然可以提高计时的精度,但这种方法比较繁琐,受到***任务、进程调度机制和诸如进程优先级、消息队列消息数等***资源的限制,计时消息在消息调度过程中可能被延迟,导致计时偏差较大;同时由于增加了额外的硬件,是成本也随之升高。
下面介绍一种现有的基于DSP和计时消息的测试方法,其原理是:在开始测试即运行要测试的程序模块前向DSP发消息,通知DSP开始计时,在测试结束即要测试的程序模块运行完之后再向DSP发消息,通知DSP停止计时;DSP通过定时器上报的方式传送该程序模块占用CPU的处理时间值。使用DSP计时是因为DSP能够精确到40纳秒,而调用pSOS或VxWorks实时嵌入式操作***计时只能精确到10个毫秒。其中用到了以下两个数据结构,并用它们作为消息内容传递给底层DSP以控制测试的进行:
1.启动或停止定时器 E_S_GetVocoderRateSet(T_GetVocoderRateSet) typedef struct tagT_GetVocoderRateSet{ <!-- SIPO <DP n="1"> --> <dp n="d1"/> Octet Reserved; Octet byLaterLength; Octet byOrderType; Octet byDSPChannelNum; UnsignedShortInt iCause; }T_GetVocoderRateSet; 2.定时器值上报 E_S_VocoderFailure(T_VocoderFailure) typedef struct tagT_VocoderFailure{ Octet Reserved; Octet byLaterLength; Octet byOrderType; Octet byDSPChannelNum; Octet byUnused; Octet byCause; UnsignedLongInt iCounter; }T_VocoderFailure;
在该方法中,需要在运行需要测试的程序模块之前向DSP发计时消息,通知DSP开始计时,但该消息什么时候能被调度起来,什么时候能到达DSP,受进程优先级、消息调度机制的影响,都是不确定的,因此计时什么时候开始也是未知数。同样,在需要测试的程序模块运行结束后也要向DSP发消息通知DSP停止计时,DSP通过定时器上报的方式传送处理时间值,这也受进程优先级、消息调度机制的影响,因此什么时候收到停止计时的消息也是个未知数。因此,现有的计时方法复杂,并由于存在消息传递的过程,不能做到精确的计时,且需要增加额外的硬件,成本比较高。
发明内容
本发明的目的是提供一种测试用软件计时方法,其精度达到纳秒级,该方法利用中央处理器的定时器,采用软件控制,提供精度为一个时钟周期的计时功能,由于中央处理器的频率通常较高,所以该方法的精度能达到纳秒级的水平。本发明所利用的中央处理器的定时器是闲置的资源,所以本发明无需添加新硬件,且中央处理器的定时器可以由中央处理器直接调用,避免了繁琐的进程调度和消息调度机制的影响,可以精确的进行计时。
本发明采用的技术方案如下:
a.初始化中央处理器的定时器;
b.关闭中央处理器的定时器,并记录中央处理器的定时器的当前计数值;
c.打开中央处理器的定时器并开始计时,打开中央处理器的定时器必须在开始测试之前;
d.开始测试过程,运行要测试的程序模块,中央处理器的定时器同时记录占用中央处理器的时钟周期数;
e.测试结束后,读取中央处理器的定时器的当前计数值,并用当前计数值减去步骤b中获得的计数值,得到两次计数值的差值;
f.将步骤e中获得的两次计数值的差值乘以中央处理器的时钟周期,得到测试的时间;
g.停止计时,关闭中央处理器的定时器。
本发明所述的技术方案,利用中央处理器的定时器,提供精确到纳秒级的计时方法,又没有增加额外的硬件,同时由于避免了进程调度和消息传递机制,可以使计时更精确。
附图说明
图1是采用本发明的技术方案的MPC8260定时器的结构框图;
图2是采用本发明的技术方案的MPC8260定时器级联模式的结构框图;
图3是本发明的测试用软件计时方法的流程图。
图4是采用本发明的测试用软件计时方法与采用DSP和计时消息方法进行选择分发模块(SDM)测试时得到的结果比较图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案。
图1是采用本发明的技术方案的无线移动通信***1X CDMA2000中的中央处理器为MPC8260(摩托罗拉PowerPC8260中央处理器)的定时器的框图。MPC8260定时器由4个独立的16位定时器组成,每个定时器都有一组相同的寄存器,包括:定时器全局配置寄存器11、定时器事件寄存器12、定时器模式寄存器13、定时器计数器14、定时器参考寄存器15以及定时器捕获寄存器16,通过它们可以控制每个定时器的工作,通用***时钟即总线时钟输入到定时器时钟发生器17,每个定时器的捕获检测模块18完成在其输入时钟沿的事件的检测和捕获;时钟门1控制第一定时器、第二定时器是否工作,时钟门2控制第三定时器、第四定时器是否工作;每个定时器的时钟输入x是其外部输入时钟源信号,其中(x=1,2,3,4),即图中的时钟输入1、2、3、4;每个定时器的时钟输出y是定时器到达计时值产生的输出信号,其中(y=1,2,3,4),即图中的时钟输出1、2、3、4。对于MPC8260来说,总线时钟为66MHz,因此计时的最大精度为1/(66*106)秒,即大约16纳秒,满足精度达到纳秒级的要求。
图2是采用本发明的技术方案的MPC8260定时器级联模式的结构框图。因为MPC8260定时器有4个独立的16位定时器,因此可以将它们级联成两个32位的定时器。每个32位的定时器都有一组与16位定时器相同的寄存器组,且它们的用法也与16位定时器完全相同,唯一的不同是它们都是32位的。如图2所示,第一定时器21和第三定时器23的寄存器组连接到数据位的0-15位,第二定时器22和第四定时器24的寄存器组连接到数据位的16-31位。在精度满足16纳秒的条件下,每个32位定时器的最大计时区间为大约68秒,若测试的程序模块的执行时间超过68秒,则定时器会溢出,所计算的值也会不正确。但对于无线通信***来说,68秒能满足任何程序模块的测试要求,这也就是说32位定时器与16位定时器的不同之处,如果使用16位定时器,则最大计时区间要小的多,以MPC8260为例,16位定时器的最大计时区间为1.048576毫秒。
图3是本发明的一个具体实施例,在1X CDMA2000无线通信***中用软件计时方法进行测试的流程图,具体包括以下步骤:
a.初始化中央处理器的定时器,即对***所使用的中央处理器MPC8260所带的定时器进行初始化,它必须在使用定时器进行计时之前完成,整个***只要初始化一次即可,可以在***级初始化模块中调用此步骤。
b.关闭中央处理器的定时器,并纪录当前定时器中的计数值。这里将中央处理器中的计数值设置为0,这样可以使数据的计算更加方便,在测试结束后读取的定时器中的计数值直接乘以中央处理器的时钟周期就可以得到测试所用的时间值。
c.打开中央处理器的定时器并开始计时,打开定时器必须在进入需要测试的程序模块之前,为了能保证测试结果的准确性,这个步骤的位置最好能紧靠在要测试的程序模块之前。
d.开始测试程序,运行要测试的程序模块,中央处理器的定时器同时记录占用中央处理器的时钟周期数。
e.测试结束后,读取中央处理器的定时器的当前计数值,并用当前计数值减去步骤b中获得的计数值,得到两次计数值的差值。该步骤最好能在测试的程序模块运行结束后马上进行,以保证测试时间的精确性。如果步骤b中将定时器的计数值设置为0,则这里直接可以使用读得的计数值,而不需要再做减法操作。
f.将步骤e中获得的两次计数器的差值乘以中央处理器的时钟周期,得到测试的时间,如果步骤b中将定时器的计数值设置为0,则直接用步骤e中读取的计数值乘以中央处理器的时钟周期即得到测试时间。
g.停止计时,关闭中央处理器的定时器。
图4是采用本发明的测试用软件计时方法与采用DSP和计时消息方法进行选择分发模块(SDM)测试时得到的结果比较图。这组对照的测试数据均取自1X CDMA2000无线通信***的分组业务控制功能子***(PCFS)中的单板分组业务控制功能(PCF)上的SDM测试所得的数据。图中的纵坐标是占用中央处理器的时间,单位是16纳秒,横坐标是测试的次数,每个数据表示运行一次单板PCF上的SDM所占用的中央处理器的时间,每种方法进行了50次测试,每条折线包含了50个测试的数据,其中粗线条表示现有的采用DSP和计时消息方法进行测试所得的结果,细线条表示采用本发明的软件计时方法测试所得的结果。如图4所示,使用本发明的软件计时方法的折线即细线条代表的数据分布比较均匀,彼此偏差较小,其测得数据的标准方差更小。因此使用本发明测得的数据更稳定,更均匀。
通过以上实施例可以看出,采用了本发明所述的技术方案,利用中央处理器的定时器,提供精确到纳秒级的计时方法,又没有增加额外的硬件,同时由于避免了进程调度和消息传递机制,可以使计时更精确。
Claims (7)
1.一种测试用软件计时方法,其特征在于,包括以下步骤:
a.初始化中央处理器的定时器;
b.关闭中央处理器的定时器,并记录中央处理器的定时器的当前计数值;
c.打开中央处理器的定时器并开始计时,打开中央处理器的定时器必须在开始测试之前;
d.开始测试过程,运行要测试的程序模块,中央处理器的定时器同时记录占用中央处理器的时钟周期数;
e.测试结束后,读取中央处理器的定时器的当前计数值,并用当前计数值减去步骤b中获得的计数值,得到两次计数值的差值;
f.将步骤e中获得的两次计数值的差值乘以中央处理器的时钟周期,得到测试的时间;
g.停止计时,关闭中央处理器的定时器。
2.如权利要求1所述的测试用软件计时方法,其特征在于,所述步骤b关闭中央处理器的定时器,并将中央处理器的定时器的当前计数值设置为0。
3.如权利要求1所述的测试用软件计时方法,其特征在于,所述步骤c打开中央处理器的定时器并开始计时,紧接在该步骤之后的一个步骤是运行要测试的程序模块。
4.如权利要求1所述的测试用软件计时方法,其特征在于,所述步骤e读取中央处理器的定时器的当前的计数值是紧跟在要测试的程序模块运行结束后的一个步骤。
5.如权利要求1所述的测试用软件计时方法,其特征在于,该方法可以用在包含4个独立的16为定时器的中央处理器上。
6.如权利要求1至5中任意一项所述的测试用软件计时方法,其特征在于,该方法可以用在将4个独立的16为定时器级联成2个32位的定时器的中央处理器上。
7.如权利要求1至6中任意一项所述的测试用软件计时方法,其特征在于,该方法可以用在摩托罗拉PowerPC8260中央处理器上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031381375A CN1295614C (zh) | 2003-05-30 | 2003-05-30 | 一种测试用软件计时方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031381375A CN1295614C (zh) | 2003-05-30 | 2003-05-30 | 一种测试用软件计时方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1553336A true CN1553336A (zh) | 2004-12-08 |
CN1295614C CN1295614C (zh) | 2007-01-17 |
Family
ID=34323661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031381375A Expired - Lifetime CN1295614C (zh) | 2003-05-30 | 2003-05-30 | 一种测试用软件计时方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1295614C (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102087513A (zh) * | 2010-12-14 | 2011-06-08 | 广东雅达电子股份有限公司 | Plc定时器的定时扩展方法 |
CN102404497A (zh) * | 2010-09-16 | 2012-04-04 | 北京中星微电子有限公司 | 一种摄像设备的数字变焦方法和装置 |
CN102457268A (zh) * | 2010-10-15 | 2012-05-16 | 北京德威特电力***自动化有限公司 | 32位捕获寄存器的实现方法 |
CN103823756A (zh) * | 2014-03-06 | 2014-05-28 | 北京京东尚科信息技术有限公司 | 一种运行被测程序的方法和调度器 |
CN104850458A (zh) * | 2014-02-15 | 2015-08-19 | 瞿浩正 | 基于时间戳测量嵌入式软件模块所需mips的方法 |
CN105653242A (zh) * | 2015-12-28 | 2016-06-08 | 北京经纬恒润科技有限公司 | 一种计时方法及装置 |
CN106066829A (zh) * | 2016-06-13 | 2016-11-02 | 江西洪都航空工业集团有限责任公司 | 一种弹载嵌入式控制软件周期耗时实时计算方法 |
CN107038109A (zh) * | 2016-02-03 | 2017-08-11 | 龙芯中科技术有限公司 | 基于mips架构的中断延迟测试方法及装置 |
CN109491877A (zh) * | 2017-09-12 | 2019-03-19 | 江西洪都航空工业集团有限责任公司 | 一种飞控计算机软件耗时计算方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6530031B1 (en) * | 1999-11-08 | 2003-03-04 | International Business Machines Corporation | Method and apparatus for timing duration of initialization tasks during system initialization |
-
2003
- 2003-05-30 CN CNB031381375A patent/CN1295614C/zh not_active Expired - Lifetime
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102404497B (zh) * | 2010-09-16 | 2015-11-25 | 北京中星微电子有限公司 | 一种摄像设备的数字变焦方法和装置 |
CN102404497A (zh) * | 2010-09-16 | 2012-04-04 | 北京中星微电子有限公司 | 一种摄像设备的数字变焦方法和装置 |
CN102457268A (zh) * | 2010-10-15 | 2012-05-16 | 北京德威特电力***自动化有限公司 | 32位捕获寄存器的实现方法 |
CN102457268B (zh) * | 2010-10-15 | 2014-10-22 | 北京德威特继保自动化科技股份有限公司 | 32位捕获寄存器的实现方法 |
CN102087513A (zh) * | 2010-12-14 | 2011-06-08 | 广东雅达电子股份有限公司 | Plc定时器的定时扩展方法 |
CN104850458A (zh) * | 2014-02-15 | 2015-08-19 | 瞿浩正 | 基于时间戳测量嵌入式软件模块所需mips的方法 |
CN103823756A (zh) * | 2014-03-06 | 2014-05-28 | 北京京东尚科信息技术有限公司 | 一种运行被测程序的方法和调度器 |
CN105653242A (zh) * | 2015-12-28 | 2016-06-08 | 北京经纬恒润科技有限公司 | 一种计时方法及装置 |
CN105653242B (zh) * | 2015-12-28 | 2018-01-26 | 北京经纬恒润科技有限公司 | 一种计时方法及装置 |
CN107038109A (zh) * | 2016-02-03 | 2017-08-11 | 龙芯中科技术有限公司 | 基于mips架构的中断延迟测试方法及装置 |
CN107038109B (zh) * | 2016-02-03 | 2019-12-13 | 龙芯中科技术有限公司 | 基于mips架构的中断延迟测试方法及装置 |
CN106066829A (zh) * | 2016-06-13 | 2016-11-02 | 江西洪都航空工业集团有限责任公司 | 一种弹载嵌入式控制软件周期耗时实时计算方法 |
CN109491877A (zh) * | 2017-09-12 | 2019-03-19 | 江西洪都航空工业集团有限责任公司 | 一种飞控计算机软件耗时计算方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1295614C (zh) | 2007-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8402463B2 (en) | Hardware threads processor core utilization | |
CN100504808C (zh) | 一种测量多任务操作***任务cpu占用率的方法 | |
WO1993002416A1 (en) | System bus monitor for compiling data regarding use of a system bus | |
Perathoner et al. | Influence of different system abstractions on the performance analysis of distributed real-time systems | |
CN1553336A (zh) | 一种测试用软件计时方法 | |
Perathoner et al. | Influence of different abstractions on the performance analysis of distributed hard real-time systems | |
NZ549457A (en) | Watchdog system and method for monitoring functionality of a processor | |
US7490269B2 (en) | Noise accommodation in hardware and software testing | |
US20040039935A1 (en) | Method and device for measuring the execution time of a real task in a real time system | |
CN114489801A (zh) | 高精度测量嵌入式***中断时长的方法、***及介质 | |
US6810503B1 (en) | Method and apparatus for controlling the timing of the invocation of events within a computer runtime environment | |
Regnier et al. | Evaluation of interrupt handling timeliness in real-time linux operating systems | |
US20090089555A1 (en) | Methods and apparatus for executing or converting real-time instructions | |
CN102222036B (zh) | 一种自动化测试方法和设备 | |
CN100533394C (zh) | 一种软件计时的方法 | |
Wandeler et al. | Performance analysis of greedy shapers in real-time systems | |
CN112965845A (zh) | 延迟分析方法、电子设备及存储介质 | |
Emde | Long-term monitoring of apparent latency in PREEMPT RT Linux realtime systems | |
US20030174655A1 (en) | Apparatus & method for caching counter values in network packet traffic sampling | |
US8160845B2 (en) | Method for emulating operating system jitter | |
US6880072B1 (en) | Pipelined processor and method using a profile register storing the return from exception address of an executed instruction supplied by an exception program counter chain for code profiling | |
US8881156B2 (en) | Apportioning summarized metrics based on unsummarized metrics in a computing system | |
Peeck et al. | Online latency monitoring of time-sensitive event chains in ROS2 | |
CN1581079A (zh) | 网络服务器宕机自动重启方法及*** | |
US6571137B1 (en) | System and method for reducing jitter in a signal |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term |
Granted publication date: 20070117 |
|
CX01 | Expiry of patent term |