專(zhuān)利名稱(chēng):一種測(cè)試用軟件計(jì)時(shí)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及測(cè)試用軟件計(jì)時(shí)方法,尤其涉及一種用于無(wú)線通信系統(tǒng)中的測(cè)試用軟件計(jì)時(shí)方法,其精確度達(dá)到納秒級(jí)。
背景技術(shù):
在無(wú)線通信系統(tǒng)中,現(xiàn)有技術(shù)有多種測(cè)試用計(jì)時(shí)方法,但現(xiàn)有的軟件計(jì)時(shí)方法誤差較大,方法繁瑣,不能滿足要求。精度較高的,需要增加額外的硬件如數(shù)字信號(hào)處理器(DSP)等。在無(wú)線通信系統(tǒng)1X CDMA2000中,現(xiàn)有的測(cè)試方法是利用實(shí)時(shí)嵌入式操作系統(tǒng)的消息傳遞機(jī)制,通過(guò)測(cè)試進(jìn)程將計(jì)時(shí)消息傳遞給底層特定的硬件如DSP而獲取較精確的計(jì)時(shí)。一般操作系統(tǒng)的系統(tǒng)時(shí)間精度只能達(dá)到十個(gè)毫秒,而底層硬件的精度可以達(dá)到納妙計(jì),比如1X CDMA2000用于測(cè)試的DSP的計(jì)時(shí)精度可以達(dá)到40納秒。增加硬件雖然可以提高計(jì)時(shí)的精度,但這種方法比較繁瑣,受到系統(tǒng)任務(wù)、進(jìn)程調(diào)度機(jī)制和諸如進(jìn)程優(yōu)先級(jí)、消息隊(duì)列消息數(shù)等系統(tǒng)資源的限制,計(jì)時(shí)消息在消息調(diào)度過(guò)程中可能被延遲,導(dǎo)致計(jì)時(shí)偏差較大;同時(shí)由于增加了額外的硬件,是成本也隨之升高。
下面介紹一種現(xiàn)有的基于DSP和計(jì)時(shí)消息的測(cè)試方法,其原理是在開(kāi)始測(cè)試即運(yùn)行要測(cè)試的程序模塊前向DSP發(fā)消息,通知DSP開(kāi)始計(jì)時(shí),在測(cè)試結(jié)束即要測(cè)試的程序模塊運(yùn)行完之后再向DSP發(fā)消息,通知DSP停止計(jì)時(shí);DSP通過(guò)定時(shí)器上報(bào)的方式傳送該程序模塊占用CPU的處理時(shí)間值。使用DSP計(jì)時(shí)是因?yàn)镈SP能夠精確到40納秒,而調(diào)用pSOS或VxWorks實(shí)時(shí)嵌入式操作系統(tǒng)計(jì)時(shí)只能精確到10個(gè)毫秒。其中用到了以下兩個(gè)數(shù)據(jù)結(jié)構(gòu),并用它們作為消息內(nèi)容傳遞給底層DSP以控制測(cè)試的進(jìn)行<pre listing-type="program-listing"> 1.啟動(dòng)或停止定時(shí)器 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.定時(shí)器值上報(bào) 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;</pre>在該方法中,需要在運(yùn)行需要測(cè)試的程序模塊之前向DSP發(fā)計(jì)時(shí)消息,通知DSP開(kāi)始計(jì)時(shí),但該消息什么時(shí)候能被調(diào)度起來(lái),什么時(shí)候能到達(dá)DSP,受進(jìn)程優(yōu)先級(jí)、消息調(diào)度機(jī)制的影響,都是不確定的,因此計(jì)時(shí)什么時(shí)候開(kāi)始也是未知數(shù)。同樣,在需要測(cè)試的程序模塊運(yùn)行結(jié)束后也要向DSP發(fā)消息通知DSP停止計(jì)時(shí),DSP通過(guò)定時(shí)器上報(bào)的方式傳送處理時(shí)間值,這也受進(jìn)程優(yōu)先級(jí)、消息調(diào)度機(jī)制的影響,因此什么時(shí)候收到停止計(jì)時(shí)的消息也是個(gè)未知數(shù)。因此,現(xiàn)有的計(jì)時(shí)方法復(fù)雜,并由于存在消息傳遞的過(guò)程,不能做到精確的計(jì)時(shí),且需要增加額外的硬件,成本比較高。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種測(cè)試用軟件計(jì)時(shí)方法,其精度達(dá)到納秒級(jí),該方法利用中央處理器的定時(shí)器,采用軟件控制,提供精度為一個(gè)時(shí)鐘周期的計(jì)時(shí)功能,由于中央處理器的頻率通常較高,所以該方法的精度能達(dá)到納秒級(jí)的水平。本發(fā)明所利用的中央處理器的定時(shí)器是閑置的資源,所以本發(fā)明無(wú)需添加新硬件,且中央處理器的定時(shí)器可以由中央處理器直接調(diào)用,避免了繁瑣的進(jìn)程調(diào)度和消息調(diào)度機(jī)制的影響,可以精確的進(jìn)行計(jì)時(shí)。
本發(fā)明采用的技術(shù)方案如下a.初始化中央處理器的定時(shí)器;b.關(guān)閉中央處理器的定時(shí)器,并記錄中央處理器的定時(shí)器的當(dāng)前計(jì)數(shù)值;c.打開(kāi)中央處理器的定時(shí)器并開(kāi)始計(jì)時(shí),打開(kāi)中央處理器的定時(shí)器必須在開(kāi)始測(cè)試之前;d.開(kāi)始測(cè)試過(guò)程,運(yùn)行要測(cè)試的程序模塊,中央處理器的定時(shí)器同時(shí)記錄占用中央處理器的時(shí)鐘周期數(shù);e.測(cè)試結(jié)束后,讀取中央處理器的定時(shí)器的當(dāng)前計(jì)數(shù)值,并用當(dāng)前計(jì)數(shù)值減去步驟b中獲得的計(jì)數(shù)值,得到兩次計(jì)數(shù)值的差值;f.將步驟e中獲得的兩次計(jì)數(shù)值的差值乘以中央處理器的時(shí)鐘周期,得到測(cè)試的時(shí)間;g.停止計(jì)時(shí),關(guān)閉中央處理器的定時(shí)器。
本發(fā)明所述的技術(shù)方案,利用中央處理器的定時(shí)器,提供精確到納秒級(jí)的計(jì)時(shí)方法,又沒(méi)有增加額外的硬件,同時(shí)由于避免了進(jìn)程調(diào)度和消息傳遞機(jī)制,可以使計(jì)時(shí)更精確。
圖1是采用本發(fā)明的技術(shù)方案的MPC8260定時(shí)器的結(jié)構(gòu)框圖;圖2是采用本發(fā)明的技術(shù)方案的MPC8260定時(shí)器級(jí)聯(lián)模式的結(jié)構(gòu)框圖;圖3是本發(fā)明的測(cè)試用軟件計(jì)時(shí)方法的流程圖。
圖4是采用本發(fā)明的測(cè)試用軟件計(jì)時(shí)方法與采用DSP和計(jì)時(shí)消息方法進(jìn)行選擇分發(fā)模塊(SDM)測(cè)試時(shí)得到的結(jié)果比較圖。
具體實(shí)施例方式
下面結(jié)合附圖進(jìn)一步詳細(xì)描述本發(fā)明的技術(shù)方案。
圖1是采用本發(fā)明的技術(shù)方案的無(wú)線移動(dòng)通信系統(tǒng)1X CDMA2000中的中央處理器為MPC8260(摩托羅拉PowerPC8260中央處理器)的定時(shí)器的框圖。MPC8260定時(shí)器由4個(gè)獨(dú)立的16位定時(shí)器組成,每個(gè)定時(shí)器都有一組相同的寄存器,包括定時(shí)器全局配置寄存器11、定時(shí)器事件寄存器12、定時(shí)器模式寄存器13、定時(shí)器計(jì)數(shù)器14、定時(shí)器參考寄存器15以及定時(shí)器捕獲寄存器16,通過(guò)它們可以控制每個(gè)定時(shí)器的工作,通用系統(tǒng)時(shí)鐘即總線時(shí)鐘輸入到定時(shí)器時(shí)鐘發(fā)生器17,每個(gè)定時(shí)器的捕獲檢測(cè)模塊18完成在其輸入時(shí)鐘沿的事件的檢測(cè)和捕獲;時(shí)鐘門(mén)1控制第一定時(shí)器、第二定時(shí)器是否工作,時(shí)鐘門(mén)2控制第三定時(shí)器、第四定時(shí)器是否工作;每個(gè)定時(shí)器的時(shí)鐘輸入x是其外部輸入時(shí)鐘源信號(hào),其中(x=1,2,3,4),即圖中的時(shí)鐘輸入1、2、3、4;每個(gè)定時(shí)器的時(shí)鐘輸出y是定時(shí)器到達(dá)計(jì)時(shí)值產(chǎn)生的輸出信號(hào),其中(y=1,2,3,4),即圖中的時(shí)鐘輸出1、2、3、4。對(duì)于MPC8260來(lái)說(shuō),總線時(shí)鐘為66MHz,因此計(jì)時(shí)的最大精度為1/(66*106)秒,即大約16納秒,滿足精度達(dá)到納秒級(jí)的要求。
圖2是采用本發(fā)明的技術(shù)方案的MPC8260定時(shí)器級(jí)聯(lián)模式的結(jié)構(gòu)框圖。因?yàn)镸PC8260定時(shí)器有4個(gè)獨(dú)立的16位定時(shí)器,因此可以將它們級(jí)聯(lián)成兩個(gè)32位的定時(shí)器。每個(gè)32位的定時(shí)器都有一組與16位定時(shí)器相同的寄存器組,且它們的用法也與16位定時(shí)器完全相同,唯一的不同是它們都是32位的。如圖2所示,第一定時(shí)器21和第三定時(shí)器23的寄存器組連接到數(shù)據(jù)位的0-15位,第二定時(shí)器22和第四定時(shí)器24的寄存器組連接到數(shù)據(jù)位的16-31位。在精度滿足16納秒的條件下,每個(gè)32位定時(shí)器的最大計(jì)時(shí)區(qū)間為大約68秒,若測(cè)試的程序模塊的執(zhí)行時(shí)間超過(guò)68秒,則定時(shí)器會(huì)溢出,所計(jì)算的值也會(huì)不正確。但對(duì)于無(wú)線通信系統(tǒng)來(lái)說(shuō),68秒能滿足任何程序模塊的測(cè)試要求,這也就是說(shuō)32位定時(shí)器與16位定時(shí)器的不同之處,如果使用16位定時(shí)器,則最大計(jì)時(shí)區(qū)間要小的多,以MPC8260為例,16位定時(shí)器的最大計(jì)時(shí)區(qū)間為1.048576毫秒。
圖3是本發(fā)明的一個(gè)具體實(shí)施例,在1X CDMA2000無(wú)線通信系統(tǒng)中用軟件計(jì)時(shí)方法進(jìn)行測(cè)試的流程圖,具體包括以下步驟a.初始化中央處理器的定時(shí)器,即對(duì)系統(tǒng)所使用的中央處理器MPC8260所帶的定時(shí)器進(jìn)行初始化,它必須在使用定時(shí)器進(jìn)行計(jì)時(shí)之前完成,整個(gè)系統(tǒng)只要初始化一次即可,可以在系統(tǒng)級(jí)初始化模塊中調(diào)用此步驟。
b.關(guān)閉中央處理器的定時(shí)器,并紀(jì)錄當(dāng)前定時(shí)器中的計(jì)數(shù)值。這里將中央處理器中的計(jì)數(shù)值設(shè)置為0,這樣可以使數(shù)據(jù)的計(jì)算更加方便,在測(cè)試結(jié)束后讀取的定時(shí)器中的計(jì)數(shù)值直接乘以中央處理器的時(shí)鐘周期就可以得到測(cè)試所用的時(shí)間值。
c.打開(kāi)中央處理器的定時(shí)器并開(kāi)始計(jì)時(shí),打開(kāi)定時(shí)器必須在進(jìn)入需要測(cè)試的程序模塊之前,為了能保證測(cè)試結(jié)果的準(zhǔn)確性,這個(gè)步驟的位置最好能緊靠在要測(cè)試的程序模塊之前。
d.開(kāi)始測(cè)試程序,運(yùn)行要測(cè)試的程序模塊,中央處理器的定時(shí)器同時(shí)記錄占用中央處理器的時(shí)鐘周期數(shù)。
e.測(cè)試結(jié)束后,讀取中央處理器的定時(shí)器的當(dāng)前計(jì)數(shù)值,并用當(dāng)前計(jì)數(shù)值減去步驟b中獲得的計(jì)數(shù)值,得到兩次計(jì)數(shù)值的差值。該步驟最好能在測(cè)試的程序模塊運(yùn)行結(jié)束后馬上進(jìn)行,以保證測(cè)試時(shí)間的精確性。如果步驟b中將定時(shí)器的計(jì)數(shù)值設(shè)置為0,則這里直接可以使用讀得的計(jì)數(shù)值,而不需要再做減法操作。
f.將步驟e中獲得的兩次計(jì)數(shù)器的差值乘以中央處理器的時(shí)鐘周期,得到測(cè)試的時(shí)間,如果步驟b中將定時(shí)器的計(jì)數(shù)值設(shè)置為0,則直接用步驟e中讀取的計(jì)數(shù)值乘以中央處理器的時(shí)鐘周期即得到測(cè)試時(shí)間。
g.停止計(jì)時(shí),關(guān)閉中央處理器的定時(shí)器。
圖4是采用本發(fā)明的測(cè)試用軟件計(jì)時(shí)方法與采用DSP和計(jì)時(shí)消息方法進(jìn)行選擇分發(fā)模塊(SDM)測(cè)試時(shí)得到的結(jié)果比較圖。這組對(duì)照的測(cè)試數(shù)據(jù)均取自1X CDMA2000無(wú)線通信系統(tǒng)的分組業(yè)務(wù)控制功能子系統(tǒng)(PCFS)中的單板分組業(yè)務(wù)控制功能(PCF)上的SDM測(cè)試所得的數(shù)據(jù)。圖中的縱坐標(biāo)是占用中央處理器的時(shí)間,單位是16納秒,橫坐標(biāo)是測(cè)試的次數(shù),每個(gè)數(shù)據(jù)表示運(yùn)行一次單板PCF上的SDM所占用的中央處理器的時(shí)間,每種方法進(jìn)行了50次測(cè)試,每條折線包含了50個(gè)測(cè)試的數(shù)據(jù),其中粗線條表示現(xiàn)有的采用DSP和計(jì)時(shí)消息方法進(jìn)行測(cè)試所得的結(jié)果,細(xì)線條表示采用本發(fā)明的軟件計(jì)時(shí)方法測(cè)試所得的結(jié)果。如圖4所示,使用本發(fā)明的軟件計(jì)時(shí)方法的折線即細(xì)線條代表的數(shù)據(jù)分布比較均勻,彼此偏差較小,其測(cè)得數(shù)據(jù)的標(biāo)準(zhǔn)方差更小。因此使用本發(fā)明測(cè)得的數(shù)據(jù)更穩(wěn)定,更均勻。
通過(guò)以上實(shí)施例可以看出,采用了本發(fā)明所述的技術(shù)方案,利用中央處理器的定時(shí)器,提供精確到納秒級(jí)的計(jì)時(shí)方法,又沒(méi)有增加額外的硬件,同時(shí)由于避免了進(jìn)程調(diào)度和消息傳遞機(jī)制,可以使計(jì)時(shí)更精確。
權(quán)利要求
1.一種測(cè)試用軟件計(jì)時(shí)方法,其特征在于,包括以下步驟a.初始化中央處理器的定時(shí)器;b.關(guān)閉中央處理器的定時(shí)器,并記錄中央處理器的定時(shí)器的當(dāng)前計(jì)數(shù)值;c.打開(kāi)中央處理器的定時(shí)器并開(kāi)始計(jì)時(shí),打開(kāi)中央處理器的定時(shí)器必須在開(kāi)始測(cè)試之前;d.開(kāi)始測(cè)試過(guò)程,運(yùn)行要測(cè)試的程序模塊,中央處理器的定時(shí)器同時(shí)記錄占用中央處理器的時(shí)鐘周期數(shù);e.測(cè)試結(jié)束后,讀取中央處理器的定時(shí)器的當(dāng)前計(jì)數(shù)值,并用當(dāng)前計(jì)數(shù)值減去步驟b中獲得的計(jì)數(shù)值,得到兩次計(jì)數(shù)值的差值;f.將步驟e中獲得的兩次計(jì)數(shù)值的差值乘以中央處理器的時(shí)鐘周期,得到測(cè)試的時(shí)間;g.停止計(jì)時(shí),關(guān)閉中央處理器的定時(shí)器。
2.如權(quán)利要求1所述的測(cè)試用軟件計(jì)時(shí)方法,其特征在于,所述步驟b關(guān)閉中央處理器的定時(shí)器,并將中央處理器的定時(shí)器的當(dāng)前計(jì)數(shù)值設(shè)置為0。
3.如權(quán)利要求1所述的測(cè)試用軟件計(jì)時(shí)方法,其特征在于,所述步驟c打開(kāi)中央處理器的定時(shí)器并開(kāi)始計(jì)時(shí),緊接在該步驟之后的一個(gè)步驟是運(yùn)行要測(cè)試的程序模塊。
4.如權(quán)利要求1所述的測(cè)試用軟件計(jì)時(shí)方法,其特征在于,所述步驟e讀取中央處理器的定時(shí)器的當(dāng)前的計(jì)數(shù)值是緊跟在要測(cè)試的程序模塊運(yùn)行結(jié)束后的一個(gè)步驟。
5.如權(quán)利要求1所述的測(cè)試用軟件計(jì)時(shí)方法,其特征在于,該方法可以用在包含4個(gè)獨(dú)立的16為定時(shí)器的中央處理器上。
6.如權(quán)利要求1至5中任意一項(xiàng)所述的測(cè)試用軟件計(jì)時(shí)方法,其特征在于,該方法可以用在將4個(gè)獨(dú)立的16為定時(shí)器級(jí)聯(lián)成2個(gè)32位的定時(shí)器的中央處理器上。
7.如權(quán)利要求1至6中任意一項(xiàng)所述的測(cè)試用軟件計(jì)時(shí)方法,其特征在于,該方法可以用在摩托羅拉PowerPC8260中央處理器上。
全文摘要
一種測(cè)試用軟件計(jì)時(shí)方法,包括以下步驟初始化中央處理器的定時(shí)器;關(guān)閉中央處理器的定時(shí)器,并記錄中央處理器的定時(shí)器的當(dāng)前計(jì)數(shù)值;打開(kāi)中央處理器的定時(shí)器并開(kāi)始計(jì)時(shí),打開(kāi)中央處理器的定時(shí)器必須在開(kāi)始測(cè)試之前;開(kāi)始測(cè)試過(guò)程,運(yùn)行要測(cè)試的程序模塊,中央處理器的定時(shí)器同時(shí)記錄占用中央處理器的時(shí)鐘周期數(shù);測(cè)試結(jié)束后,讀取中央處理器的定時(shí)器的當(dāng)前計(jì)數(shù)值,并用當(dāng)前計(jì)數(shù)值減去前面獲得的計(jì)數(shù)值,得到兩次計(jì)數(shù)值的差值;將獲得的兩次計(jì)數(shù)值的差值乘以中央處理器的時(shí)鐘周期,得到測(cè)試的時(shí)間;停止計(jì)時(shí),關(guān)閉中央處理器的定時(shí)器。
文檔編號(hào)G06F11/36GK1553336SQ0313813
公開(kāi)日2004年12月8日 申請(qǐng)日期2003年5月30日 優(yōu)先權(quán)日2003年5月30日
發(fā)明者陳宏進(jìn) 申請(qǐng)人:中興通訊股份有限公司