<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM內核目標系統中的代碼運行時(shí)間測試

ARM內核目標系統中的代碼運行時(shí)間測試

作者: 時(shí)間:2008-01-21 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要 很多測量的C函數在中都不能使用。某些能使用的,也是基于實(shí)時(shí)時(shí)鐘(RTC),故最短單位只能達到10-2s。作為一種通用的精密計時(shí)方法,為了取得更精細的度量,可以考慮啟用芯片內置的WatchDog實(shí)現擴展了的實(shí)時(shí)時(shí)鐘功能,并推廣到程序精確延時(shí)的用途,彌補現有C函數的不足。本文對此作出分析,并給出了具體的實(shí)驗描述。
關(guān)鍵詞 精確時(shí)間測量精密計時(shí) 實(shí)時(shí)時(shí)鐘擴展 看門(mén)狗


在A(yíng)RM中.有時(shí)需要精確的時(shí)間測量。通常,取時(shí)間的C函數(如gettime()等)不僅通用性差(必須包含頭文件DOS.H,且不支持Unix、Linux和標準C),明顯不適用于A(yíng)RM;更成問(wèn)題的是,其最短時(shí)間只能到10-2秒級,不能提供更短的時(shí)間分度。根本原因在于:這類(lèi)函數是基于系統實(shí)時(shí)時(shí)鐘(RTC)的,而RTC通常采用標準化鐘表晶振,頻率只有32.768 kHz而已。
然而很多應用涉及μs級的時(shí)間計量,這是標準化了的RTC以及基于它的時(shí)間函數所無(wú)能為力的。筆者在移植DES算法到ARM系統的實(shí)驗過(guò)程中,便遇到過(guò)要定量評估加密算法耗時(shí)多少的問(wèn)題,發(fā)現的確不能用上述常規的C函數解決。經(jīng)對ARM芯片結構的考察,發(fā)現其內置的WatchDog系統是以系統時(shí)鐘驅動(dòng)的,定量性能應該很好,區分時(shí)間間隔的精細程度也應該足夠。于是根據所用ARM芯片的原廠(chǎng)家數據手冊中的說(shuō)明,借用WatchDog編寫(xiě)了自己的計時(shí)函數,使用起來(lái)也比較方便??紤]到ARM芯片都帶有內置看門(mén)狗,筆者覺(jué)得這種方法可算是一個(gè)不錯的“過(guò)渡性”解決方案,故在此加以介紹,供同行們參考并指正。


1 測量原理
ARM芯片中的看門(mén)狗,其原始功能是監視CPU核心的某些超時(shí)。這些超時(shí)的發(fā)生,通常是因為干擾和系統錯誤等造成的程序混亂。一旦發(fā)生這類(lèi)情形,看門(mén)狗便請求中斷服務(wù)或發(fā)出復位脈沖重啟系統。為了達到這樣的目的,其計時(shí)原理必須獨立于系統中的任何進(jìn)程。實(shí)際上,WatchDog是獨立的硬件邏輯,其計時(shí)脈沖直接取自系統主時(shí)鐘,因此它與RTC一樣具備實(shí)時(shí)性和獨立性,借用看門(mén)狗的計時(shí)體系來(lái)實(shí)現高精度時(shí)間測量是合理的。
先以實(shí)驗中用到的S3C4480X為例(該實(shí)驗所用的ARM開(kāi)發(fā)板型號為NETARM300),具體談?wù)効撮T(mén)狗的工作原理。其原理框圖如圖1所示,圖中MCLK即系統主時(shí)鐘。

從圖中可以看出,系統主時(shí)鐘MCLK經(jīng)過(guò)可編程預分頻、可選固定分頻后,進(jìn)入WTCNT(硬件系統的計時(shí)計數器,16位)計數。根據器件手冊,計數時(shí)間間隔t_watchdog=l/(MCLK/(Prescaler value+1)/Division_factor)。式中,參數Prescakr value的取值為O~28-l;Division_factor有16、32、64、128四種取值。如果復位信號輸出允許(即WTCON的位0置1),那么一旦計數器WTCNT的計數超過(guò)WTDAT允許的范圍,看門(mén)狗就會(huì )將CPU復位。本實(shí)驗過(guò)程中屏蔽掉了這種復位和中斷請求功能,僅讓它對脈沖計數。
控制寄存器WTCON的有關(guān)各位定義圖中已給出(如需詳細解釋可查閱器件手冊,如參考文獻[3]),其他全為保留位,可全置為O。
至于MCLK具體值的計算,可以查驗系統中的晶振參數(頻率),讀取系統時(shí)鐘的PLL寄存器(如S3C44BOX的PLLCON)后算得。計算的方法都已在具體ARM芯片手冊中給出。

2 測量算法實(shí)現和實(shí)驗結果
按照所需參數設置的看門(mén)狗定時(shí)器控制寄存器WT-CON的值(如前所述),在待測段執行之前開(kāi)啟看門(mén)狗定時(shí)器;等其執行完畢則關(guān)閉看門(mén)狗定時(shí)器,讀取WTCNT的值即可算得時(shí)間。作為一個(gè)具體示例,筆者實(shí)驗中所實(shí)現的算法如下:
(1)計時(shí)算法


(2)應用

需要指出:在改變WTCON的值之前應將原有值保存,待測量完成后再復原WTCON。之所以強調這一點(diǎn),是因為系統別處很可能在使用看門(mén)狗功能。
實(shí)驗當中,對長(cháng)度為189字節的字符串采用3次DES加密。密鑰長(cháng)度為15位,測得的加密時(shí)間為28832μs,解密時(shí)間為28 896μs??s短字符串長(cháng)度,測得的加密時(shí)間基本呈線(xiàn)性變化:字符串長(cháng)度為107字節而其他地方不變時(shí),加密耗時(shí)16 928μs,解密耗時(shí)16 948μs;字符串長(cháng)度為41字節而其他地方不變時(shí),加密耗時(shí)7 424μs,解密耗時(shí)7 424μs。對于相同長(cháng)度的字符串,密鑰長(cháng)度的改變對加密/解密時(shí)間的影響不是很大。
值得一提的是,剛開(kāi)始實(shí)驗時(shí),被加密字符串分別取為190字節和75字節,測得耗時(shí)分別是34 032μs和16 928μs,顯然與倍增的關(guān)系相差很遠。分析程序后發(fā)現,原來(lái)問(wèn)題出在加密算法中間的打印語(yǔ)句“Uan_Printf(“\ncounting begin...!!!”)”上。原來(lái)以為它耗時(shí)很少,故沒(méi)有將它從加密算法中移走;移走后再試,耗時(shí)大減,分別為29 600 μs和12 496μs,與字符數倍增、時(shí)間倍增的預期基本相符。上面的實(shí)驗,還使筆者得知該打印語(yǔ)句占用了4432μs。稍微修改條件,繼續實(shí)驗:當上述打印語(yǔ)句的字節數擴充為原來(lái)的4倍時(shí),測得該語(yǔ)句耗時(shí)17728μs??梢?jiàn),耗時(shí)與打印內容的字節數基本上成正比;另外,這種打印語(yǔ)句與加密/解密算法本身相比,并不是想當然地只占用一點(diǎn)點(diǎn)時(shí)間。(上述數據與PC機串口通信波特率的設置無(wú)明顯關(guān)系。實(shí)際結果為:波特率由115 200bps下降到57 600 bps,沒(méi)有可以察覺(jué)到的差別。)

3 測量方法討論
ARM內置看門(mén)狗用作時(shí)間度量的適用范圍,大體以μs數量級為界。比如,從S3C44BOX的器件特性說(shuō)明中可知,MCLK在看門(mén)狗計時(shí)器里的分頻比至少是1/16。典型情況下,MCLK=60MHz,則看門(mén)狗能夠分辨的最短時(shí)間單元t=l/(60 MHz/16)=0.27μs。統計誤差約為t/2,即O.1μs數量級。就μs級的時(shí)間測量精度而言,相對誤差有可能達到1%~10%;不過(guò),這對很多速度估算的場(chǎng)合來(lái)說(shuō)還是可以接受的。如果被測時(shí)間在10μs以上,那就沒(méi)有任何問(wèn)題,可以認為是相當精確的了。
這種思路還可用來(lái)實(shí)現精確延時(shí),因為它的定時(shí)不依賴(lài)于指令執行時(shí)間(指令執行要受到系統調度等的影響,因而有很多不確定因素),而取決于對主時(shí)鐘的硬件分頻計數。
由此實(shí)驗推廣,ARM內置看門(mén)狗可以作為此類(lèi)系統中的第二時(shí)鐘存在。對于那些時(shí)間要求精確到μs、RTC的精度無(wú)法滿(mǎn)足的應用,這種處理都不失為一種準確、高效的方法。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>