<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è) > 測試測量 > 設計應用 > μC/OS-II定時(shí)器算法分析與測試

μC/OS-II定時(shí)器算法分析與測試

作者: 時(shí)間:2011-11-22 來(lái)源:網(wǎng)絡(luò ) 收藏
在CPU運行頻率固定的情況下T1和T3的執行時(shí)間是相對固定的,而且一般為匯編語(yǔ)言實(shí)現,運行速度也較快。而T2和T4的時(shí)間會(huì )隨著(zhù)任務(wù)和軟件數量的增多有所增加。時(shí)定時(shí)值隨機選取。表1中的時(shí)間為不同處理器頻率下,個(gè)數為1和5時(shí)觀(guān)測到的最大值。其中,T=T1+T2+T3+T4。

本文引用地址:http://dyxdggzs.com/article/194685.htm

數據可知,若有定時(shí)器到時(shí),則經(jīng)過(guò)幾個(gè)μs的延時(shí),定時(shí)器回調函數就可以執行。與ms級的定時(shí)最小分辨時(shí)間相比,其抖動(dòng)對到時(shí)準確性的影響是非常小的。隨著(zhù)處理器頻率的提升和處理能力的加強,這個(gè)抖動(dòng)時(shí)間還可以進(jìn)一步縮小。第2種抖動(dòng)情況如圖4所示。

當下一個(gè)時(shí)鐘節拍快到來(lái)時(shí)(如圖4中A時(shí)刻),一個(gè)定時(shí)器被開(kāi)啟了。因為系統能分辨的最小時(shí)間即時(shí)鐘節拍的間隔時(shí)間,所以定時(shí)器開(kāi)啟時(shí)記錄的當前時(shí)鐘節拍數為1,假設定時(shí)器的定時(shí)值就是一個(gè)時(shí)鐘節拍間隔。定時(shí)器開(kāi)啟后,第2個(gè)時(shí)鐘節拍馬上就到了,由情況1的分析可知,這個(gè)定時(shí)器的回調函數很快就會(huì )被執行。B時(shí)刻表示這個(gè)定時(shí)器回調函數第一次執行。C、D時(shí)刻為回調函數的第2次與第3次執行時(shí)刻,這兩次到時(shí)是比較準確的。
因此,定時(shí)器從開(kāi)啟到回調函數開(kāi)始執行的時(shí)間與定時(shí)值相比是有較大抖動(dòng)的。若此時(shí)的時(shí)鐘節拍間隔為5 ms,則這個(gè)抖動(dòng)的誤差最大即5 ms。這種情況下的抖動(dòng)只能通過(guò)提高每秒的時(shí)鐘節拍數來(lái)減小。因此,在數據采集或其他定時(shí)器的應用中,要留意定時(shí)器開(kāi)啟后第一次到時(shí)的處理,以免進(jìn)行錯誤的判斷。


4 定時(shí)器管理任務(wù)對操作系統性能的影響
定時(shí)器管理任務(wù)的運行使應用程序可建立的任務(wù)數減1。該任務(wù)要求是系統中的最高優(yōu)先級,因此每次有時(shí)鐘中斷發(fā)生它都要運行,必然會(huì )消耗掉一定的CPU資源。軟件定時(shí)器功能所占用的CPU運行時(shí)間(設為M)的計數公式為:
M=定時(shí)器管理任務(wù)判斷定時(shí)器是否到時(shí)的時(shí)間+定時(shí)器回調函數執行時(shí)間+定時(shí)器控制塊移除
與再插入時(shí)間+切換到次低優(yōu)先級任務(wù)的時(shí)間
首先,采用μC/中自帶的統計任務(wù)定時(shí)器管理任務(wù)對CPU資源的占用情況。測試時(shí)系統中開(kāi)啟3個(gè)任務(wù):定時(shí)器管理任務(wù)、統計任務(wù)和Idle任務(wù)。定時(shí)器到時(shí)回調函數在定時(shí)器管理任務(wù)中執行,增加了管理任務(wù)運行時(shí)間。為僅測試系統定時(shí)器管理功能的開(kāi)銷(xiāo),測試時(shí)將定時(shí)回調函數置為空操作。因統計任務(wù)要求必須在初始化時(shí)建立第一個(gè)也是唯一的一個(gè)任務(wù)中調用統計任務(wù)初始化函數OSStatInit(),所以需在定時(shí)器管理任務(wù)中進(jìn)行必要改動(dòng),以保證在統計任務(wù)初始化后才開(kāi)啟定時(shí)器的管理功能。測試用定時(shí)器在main函數中靜態(tài)創(chuàng )建。
測試后發(fā)現,當定時(shí)器數由1增加到8時(shí),CPU的使用率一直是1%。這說(shuō)明系統開(kāi)啟定時(shí)器管理功能后,增加的負荷很小。另一方面因為統計任務(wù)計算CPU使用率時(shí)是整數相除、余數舍棄,這就使得0~(OSIidleCtrMax/100-1)的計數是不能被分辨的,因此統計任務(wù)不能準確地反應定時(shí)器管理任務(wù)對CPU的使用情況。
為了得到更準確的測量結果,采用“處理器占用率”這一指標對管理任務(wù)開(kāi)銷(xiāo)進(jìn)行測試。
處理器占用率=軟件定時(shí)器功能所占用的CPU運行時(shí)間(M)/CPU運行時(shí)間
當某一時(shí)鐘節拍到來(lái)時(shí),假設這一時(shí)鐘節拍下無(wú)定時(shí)器到時(shí),即“到時(shí)定時(shí)器回調函數執行時(shí)間”和“定時(shí)器控制塊移除與再插入時(shí)間”為0。若當前系統中所創(chuàng )建的定時(shí)器正好在同一個(gè)分組中,則管理任務(wù)須對每個(gè)定時(shí)器的到時(shí)值進(jìn)行比較,此時(shí)為無(wú)定時(shí)器到時(shí)時(shí)定時(shí)器管理任務(wù)對CPU的最高占用率。測試中,將定時(shí)器的到時(shí)值設定為8的倍數加1,在main()函數中靜態(tài)創(chuàng )建。使所有定時(shí)器控制塊在同一分組中,當OSTime也是8的倍數加1時(shí),就形成了無(wú)定時(shí)器到時(shí)時(shí)定時(shí)器管理任務(wù)的最壞運行情況。
測試環(huán)境為:ARM9(400 MHz),定時(shí)器最小分辨時(shí)間為5 ms(該值作為計算時(shí)的“CPU運行時(shí)間”),硬件計時(shí)器的最小分辨時(shí)間為0.02μs。讀硬件計時(shí)器計算時(shí)間,測試結果如表2所列。

由測試數據可知建立定時(shí)器數為8時(shí),處理器占用率遠小于1%。每增加一個(gè)定時(shí)器,定時(shí)器管理任務(wù)的運行時(shí)間約增加6.5μs,處理器的占用率約增加0.01%,任務(wù)的切換時(shí)間不變。這是在構建的極端情況下測試的,實(shí)際應用中的時(shí)間要小于這個(gè)值。
“定時(shí)器控制塊移除與再插入時(shí)間”在400 MHz下測試為0.22μs。某一時(shí)鐘節拍處理時(shí),若有定時(shí)器到時(shí),則最壞情況是這個(gè)到時(shí)的定時(shí)器控制塊在鏈表的最后,只有執行完整個(gè)鏈表的判斷后才開(kāi)始執行該到時(shí)定時(shí)器的回調函數。假設定時(shí)器數為8,且鏈表中最后一個(gè)定時(shí)器先到時(shí),則該定時(shí)器到時(shí)的這個(gè)鐘節拍下處理器利用率為:(0.34μs+0.22μs+0.82μs+定時(shí)器回調函數執行時(shí)間)/5 ms=(1.38μs+定時(shí)器回調函數執行時(shí)間)/5 ms。


結 論
本文對μC/軟件定時(shí)器的算法及抖動(dòng)問(wèn)題進(jìn)行了分析,并在特定平臺上進(jìn)行了測試,較好地反映出了該定時(shí)器的精度和對處理器資源的占用情況。測試結果可信度高,為在μC/下的軟件定時(shí)器應用開(kāi)發(fā)提供了可靠的依據。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(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>