久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > μC/OS-III中的高效時鐘節拍管理機制

μC/OS-III中的高效時鐘節拍管理機制

作者: 時間:2013-01-11 來源:網絡 收藏

;;II中,由于每次時鐘節拍服務都要遍歷所有任務,因此,在任務數目較多時,其執行時間可能很長。另外,由于時鐘節拍服務函數OSTimeTick()由時鐘節拍中斷服務程序OSTicidSR()調用執行,因此當OSTimeTick()執行時間很長時,時鐘節拍中斷服務程序的執行時間也很長。在中斷服務程序執行時,所有任務都無法執行,在這種情況下,系統的實時性會很差。

2 ;C/OS-中的機制
針對;;II時鐘節拍服務的問題,μ;主要做了兩點改進:①用時鐘節拍任務來做時鐘節拍處理;②用時鐘節拍輪盤來分類管理延時任務以及指定超時時限的等待任務。
2.1 時鐘節拍任務
在μC/OS—中,增加了一個系統任務,即時鐘節拍任務OS_TickTask()。該任務是μC/OS-III中兩個總是會創建的系統任務之一。時鐘節拍任務負責處理延時任務和指定超時時限的等待任務,這樣,μC/OS—III就把時鐘節拍的處理工作放到任務級代碼中完成了。時鐘節拍中斷服務程序和時鐘節拍任務之間的關系如圖1所示。

本文引用地址:http://www.cqxgywz.com/article/148142.htm

b.JPG


不論在μC/OS—II還是在μC/OS—III中,都需要一個硬件定時器(或其他能產生周期性中斷的外設)來產生幾十到上千赫茲的時鐘節拍中斷。時鐘節拍中斷的具體頻率取決于所用的處理器的性能以及應用需求。時鐘節拍中斷頻率越高,系統的延時精度越高,對處理器的處理能力要求也越高。
每次產生時鐘節拍中斷,CPU都會跳轉到時鐘節拍中斷服務程序(ISR)中執行。時鐘節拍ISR會調用OSTimeTick()函數。前面提到過,μC /OS—II的時鐘節拍ISR也會調用OSTimeTick()函數,在這一點上μC/OS—II和μC/OS—III看起來沒有區別,但實際上μC/OS—III中的OS TimeTick()函數與μC/OS—II中的OSTimeTick()函數有很大區別。μC/OS—III中的OSTimeTick()函數主要完成如下操作:向時鐘節拍任務發信號、調用OS_SchedRoundRobin()函數,以及向定時器任務發信號等。其中,后兩點與時鐘節拍的管理無關,這里不詳細介紹。精簡的OSTimeTick()函數如下面這段代碼所示,其中只保留與相關的代碼。
e.jpg
在μC/OS—III中,OSTimeTick()函數不需要遍歷任務鏈表,只是通過OSTaskSemPost()函數向時鐘節拍任務發信號。而時鐘節拍任務絕大部分時間內都處于等待該信號的狀態,每次收到該信號時,時鐘節拍任務會恢復運行,調用OS_TiekListUpdate()函數處理延時的任務,然后再次進入等待該信號的狀態,其代碼如下:
f.jpg
c.JPG
相比μC/OS—II的方式,μC/OS—III使用了專門的時鐘節拍任務來處理時鐘節拍,可大大減少時鐘節拍中斷服務程序的執行時間。



評論


相關推薦

技術專區

關閉