μC/OS-II實(shí)時(shí)性能測試與研究
實(shí)時(shí)操作系統是能夠滿(mǎn)足實(shí)時(shí)系統中實(shí)時(shí)任務(wù)的處理響應時(shí)間要求的操作系統。實(shí)時(shí)操作系統是事件驅動(dòng)(eventdriven)的,能對來(lái)自外界的作用和信號在限定的時(shí)間范圍內作出響應。它強調的是實(shí)時(shí)性、可靠性和靈活性,與實(shí)時(shí)應用軟件相結合成為有機的整體,起著(zhù)核心作用;由它來(lái)管理和協(xié)調各項工作,為應用軟件提供良好的運行軟件環(huán)境及開(kāi)發(fā)環(huán)境。在多任務(wù)實(shí)時(shí)系統中,必然由實(shí)時(shí)操作系統來(lái)對實(shí)時(shí)任務(wù)進(jìn)行管理。
μC/OS-II是一種結構小巧、具有可剝奪實(shí)時(shí)內核的實(shí)時(shí)操作系統。其內核提供任務(wù)調度與管理、時(shí)間管理、任務(wù)間同步與通信、內存管理和中斷服務(wù)等功能。
現在許多工業(yè)控制系統用到了μC/OS-II,為了對其實(shí)時(shí)性有更深入具體的了解,本文對μC/OS-II的實(shí)時(shí)性進(jìn)行了測試和分析,在實(shí)時(shí)系統設計中具有現實(shí)意義。
1 μC/OS-II實(shí)時(shí)性能測試指標
衡量嵌入式實(shí)時(shí)操作系統的好壞一般主要參考以下主要性能指標參數: 任務(wù)切換時(shí)間、中斷響應時(shí)間、任務(wù)響應時(shí)間、任務(wù)創(chuàng )建/刪除時(shí)間、交替信號量時(shí)間、取得/釋放信號量時(shí)間、交替消息隊列傳輸時(shí)間等。本文僅對前2個(gè)最重要的指標參數進(jìn)行測試分析。
1.1 任務(wù)切換時(shí)間
任務(wù)切換時(shí)間(Task CONtent Switch Time)可以反映出RTOS執行任務(wù)的速度。
μC/OS-II使用的是占先式內核,以保證系統的響應時(shí)間。每個(gè)任務(wù)都被賦予一定的優(yōu)先級,最高優(yōu)先級的任務(wù)一旦就緒,就能得到CPU的控制權。當一個(gè)運行著(zhù)的任務(wù)通過(guò)信號量等機制使一個(gè)更高優(yōu)先級的任務(wù)進(jìn)入了就緒態(tài),μC/OS-II會(huì )進(jìn)行任務(wù)調度。這時(shí)當前任務(wù)的CPU使用權就要被剝奪,那個(gè)高優(yōu)先級的任務(wù)會(huì )立刻得到CPU的控制權。
每個(gè)任務(wù)都有自己的一套CPU寄存器和??臻g。任務(wù)的切換實(shí)際上就是CPU寄存器內容的切換。CPU內部寄存器越多,額外負荷就越重。
在任務(wù)切換之前還需要在就緒表中查找出優(yōu)先級最高的任務(wù),它由任務(wù)調度函數OSSched()完成,是比較花費時(shí)間的。因為這個(gè)函數有固定長(cháng)度的語(yǔ)句,所以它的執行時(shí)間是常數,與應用程序建立了多少個(gè)任務(wù)沒(méi)有關(guān)系。
所以任務(wù)切換時(shí)間取決于CPU有多少寄存器要出入棧,以及相關(guān)調度函數的執行速度。
1.2 中斷響應時(shí)間
中斷響應時(shí)間(Interrupt Response Time)可以反映出RTOS對外界變化的反應速度,是指從中斷發(fā)生起到執行中斷處理程序的第一條指令所用的時(shí)間。它是衡量嵌入式實(shí)時(shí)操作系統實(shí)時(shí)性能的最主要、最具有代表性的性能指標。
中斷響應時(shí)間=中斷延遲時(shí)間+保存CPU狀態(tài)的時(shí)間+該內核的ISR進(jìn)入函數的執行時(shí)間
中斷延遲時(shí)間=關(guān)中斷的最長(cháng)時(shí)間+開(kāi)始執行中斷服務(wù)子程序(ISR)的第1條指令的時(shí)間
關(guān)中斷的最長(cháng)時(shí)間取決于運行時(shí)不同的情況,其他參數在其系統中都有固定長(cháng)度代碼。中斷響應是系統在最壞情況下響應中斷的時(shí)間。
2 μC/OS-II實(shí)時(shí)性能測試原理
2.1 任務(wù)切換時(shí)間測試原理
任務(wù)切換時(shí)間測試是利用系統內部的定時(shí)器計算任務(wù)切換時(shí)間。給定時(shí)器一個(gè)初始值a1,并建立兩個(gè)任務(wù);在任務(wù)1中開(kāi)啟定時(shí)器,利用消息郵箱切換到任務(wù)2,停止計時(shí),記錄定時(shí)器的值為a2。設系統時(shí)鐘的計數頻率為f,任務(wù)切換時(shí)間為T(mén)tcST,則:
2.2 中斷響應時(shí)間測試原理
中斷響應時(shí)間測試同樣也是利用定時(shí)器計算中斷響應時(shí)間。給定時(shí)器一個(gè)初始值a1,建立一個(gè)任務(wù)和定時(shí)器中斷服務(wù)函數,在任務(wù)中開(kāi)啟定時(shí)器;當定時(shí)器自減為0時(shí),進(jìn)入中斷服務(wù)子函數,在該子函數中關(guān)閉定時(shí)器,記錄定時(shí)器的值為a2。注意: 定時(shí)器歸0后自動(dòng)變?yōu)槌跏贾礱1。設系統時(shí)鐘的計數頻率為f,中斷響應時(shí)間為T(mén)IRt,則:
3 μC/OS-II實(shí)時(shí)性能測試步驟及結果
本文測試使用的硬件平臺為2410開(kāi)發(fā)板,其中處理器采用Samsung公司的S3C2410X。S3C2410X是一款基于A(yíng)RM920T內核的16/32位RISC嵌入式處理器,系統主頻是202.8 MHz。
3.1 任務(wù)切換時(shí)間測試步驟及結果
① 系統時(shí)鐘初始化。這里只用到定時(shí)器0。PCLK = FCLK /4 = 202.8 MHz /4 = 50.7 MHz,預分頻值設置為0,除法器設為1/4,所以最小分頻為0.08 μs,f = 12.5 MHz。計時(shí)器0初始值TCNTB0設為60 000,即a1=60 000。
圖1 任務(wù)切換時(shí)間測試
② 如圖1所示,建立兩個(gè)任務(wù): Task_TCST_Start()和Task_TCST_End()。Task_TCST_End優(yōu)先級高,運行后因等待郵箱的消息而掛起等待;然后Task_TCST_Start開(kāi)始運行,向郵箱發(fā)送一則消息,同時(shí)定時(shí)器開(kāi)始計時(shí);之后該任務(wù)延時(shí)一段時(shí)間,進(jìn)入掛起狀態(tài)。Task_TCST_End收到郵箱消息,由等待狀態(tài)進(jìn)入就緒態(tài),因為擁有就緒態(tài)隊列中的最高優(yōu)先級,所以獲得CPU使用權。它進(jìn)入運行態(tài)后立即停止計時(shí),記為a2。
③ 根據式(1)計算結果。
④ 重復10次實(shí)驗,取最大值為5.36 μs。
需要注意2點(diǎn): 其一,有意義的任務(wù)切換時(shí)間和中斷響應時(shí)間是系統在最壞情況下發(fā)生的,所以不能取平均值,應該取最大值。其二,因為定時(shí)器是循環(huán)計數的,即從初始值自減到0,然后恢復初始值,繼續自減。所以停止計時(shí)時(shí),定時(shí)器可能經(jīng)過(guò)了兩次或多次循環(huán)。設計程序時(shí)要注意這一點(diǎn)。在本次實(shí)驗中,循環(huán)最大間隔為60 000×0.08 μs = 4 800 μs,遠大于一次任務(wù)切換時(shí)間或中斷響應時(shí)間,所以定時(shí)器沒(méi)有經(jīng)過(guò)多次循環(huán)。
評論