μC/OS―II實時操作系統(tǒng)中任務延時的研究與改進

對于任務刪除函數OSTCBDlyDel(),首先判斷任務控制塊中的任務延時值是否為0,如果不等于0,調用函數OSTCBDlyDel(ptcb,OS_Dly_ OPT_DEL),把任務從任務延時鏈表中刪除;如果等于0,把任務從任務鏈表中刪除。最后,把任務控制塊回收到空閑任務鏈表中。
3 實驗測試
3.1 測試環(huán)境
本次實驗使用軟件開發(fā)環(huán)境Keil4,把μC/OS—II操作系統(tǒng)移植到基于Cortex—M3內核的LPC1768處理器上。對實時操作系統(tǒng)μC/OS—II 2.86進行改進,并對改進后的操作系統(tǒng)進行軟件仿真測試。
ARM Cortex—M3內核采用3級流水線和哈佛結構,帶獨立的本地指令和數據總線以及用于外設的稍微低性能的第三條總線,還包含一個支持隨機跳轉的內部預取指單元。LPC1700系列微控制器主要用于處理要求高度集成和低功耗的嵌入式應用,最高工作頻率可達100 MHz。內部有高達512 KB的Flash存儲器、64KB的數據存儲器,片內外設包括以太網MAC、USB主機/從機/OTG接口、8通道的通用DMA控制器、4個UART、2條CAN通道、2個SSP控制器、SPI接口、3個I2C接口、2輸入和2輸出的I2S接口、8通道的12位ADC、10位DAC、電機控制PWM、正交編碼器接口、4個通用定時器、6輸出的通用PWM、帶獨立電池供電的超低功耗RTC等眾多功能,方便系統(tǒng)的開發(fā),節(jié)約成本。
本次測試為:在μC/OS—II中創(chuàng)建25個用戶任務,其中的10個任務延時一段時間(for循環(huán)延時),并發(fā)送信號量,已激活等待此信號量的任務,而后調用函數OSTimeDly(),任務延時。而另外15個任務無限期等待另外幾個任務的信號量。Keil4的軟件仿真中,LPC1768的外部時鐘設定為22.1184 MHz。
3.2 實驗結果
下面通過Keil4軟件仿真中的Performance Analyzer功能,觀察μC/OS—II原操作系統(tǒng)與改進后的操作中函數OSTime Tick()的運行時間。性能測評圖如圖2、圖3所示。本文引用地址:http://www.ex-cimer.com/article/161941.htm
可以看出,改進后OSTimeTick()函數的系統(tǒng)占用率只有原先的50%,當然在實際使用環(huán)境中,改進后OSTimeTick()函數的系統(tǒng)占用率與系統(tǒng)中延時任務的多少、系統(tǒng)的運行速度等因素有關,不可能降低這么多,至少從理論上與仿真測試中可以驗證此方法可以降低系統(tǒng)的額外開銷,提高系統(tǒng)的實時性。
結語
隨著技術的進步,處理器芯片的內存不斷增大,運行速度不斷提高,而且應用系統(tǒng)設計越來越復雜,系統(tǒng)需要運行越來越多的任務,時鐘節(jié)拍處理函數將占用大量的處理器時間,影響系統(tǒng)的實時性。通過本文對原操作系統(tǒng)中任務延時機制的改進與優(yōu)化,使時鐘節(jié)拍處理函數的運行時間僅與同時延時的任務數有關。通過Keil4開發(fā)環(huán)境下的軟件仿真可以看出,改進后系統(tǒng)開銷大大降低。
評論