- 相關推薦
利用實時內核開發嵌入式多任務程序
摘要:嵌入式系統應用日益復雜化,傳統的前臺/后臺程序開發機制已經不能滿足需求,目前更多地采用搶占式實時內核開發嵌入式多任務系統。實時內核為多任務應用程序提供最基本和最重要的服務。本文介紹實時內核和多任務,并提出利用實時內核進行系統開發時,根據系統功能合理構成任務的方法。關鍵詞:實時內核 多任務 任務構造 嵌入式系統
隨著嵌入式系統的廣泛使用,傳統的前臺/后臺程序開發機制已經不能滿足日益復雜和多樣化的嵌入式應用需求,因而常常采用嵌入式實時操作系統內核(簡稱實時內核)開發實時多任務程序。嵌入式實時內核提供多任務、任務管理、時間管理、任務間通信和同步、內存管理等重要服務,使嵌入式應用程序容易設計和擴展。內核是管理微處理器或者微控制器時間的軟件,確保所有時間關鍵的事件盡可能高效地得到處理;允許將系統分成多個獨立的任務,每個任務處理程序的一部分,從而簡化系統的設計過程。
一、非搶占式內核和搶占式內核
實時內核分為兩種:非搶占式內核和搶占式內核。這兩種內核都由中斷服務例程(ISR)處理異步事件。在非搶占式內核中,一個ISR使優先級更高的任務就緒,并不立即將CPU控制權交給優先級高的任務,而是返回到被中斷的當前任務。只有當前任務執行某種操作明確放棄CPU時,優先級高的新任務才得到CPU控制權。非搶占式內核對實時事件的響應時間不確定,因而極少在實時應用中使用。圖1所示為非搶占式內核程序流程:①低優先級任務(LPT)執行;②低優先級任務被中斷;③執行中斷服務例程,使高優先級任務(HPT)就緒;④中斷服務例程返回到被中斷的低優先級任務;⑤低優先級任務繼續執行;⑥低優先級任務放棄CPU;⑦高優先級任務運行。
目前在大多數嵌入式實時多任務系統應用中,對系統實時響應要求很高,因此采用搶占式內核確保時間關鍵的任務最先執行,使優先級最高的就緒任務總是最先得到CPU控制權。優先級低的當前任務能夠被優先級更高的任務搶占,暫時掛起執行,將CPU控制權交給優先級高的任務。圖2所示為搶占式內核程序流程:①低優先級任務執行;②異步事件使任務中斷;③響應異步事件,運行中斷服務例程,使高優先級任務就緒;④中斷服務例程返回到高優先級任務;⑤高優先級任務執行,直到它被中斷轉向執行優先級更高的任務;⑥高優先級任務結束,內核切換到低優先級任務;⑦低優先級任務繼續執行。
二、多任務
利用實時內核開發嵌入式多任務系統程序,要根據明確的設計目的確認系統功能,將系統功能合理分解,構造不同的任務,使每個任務負責完成應用要求的一部分功能;并根據任務相對于其他任務的重要性決定其優先級。多個任務彼此獨立運行,具有獨立的私有堆棧空間,在被其他進程搶占時能夠保持任務執行線程的上下文。
1.任務
任務是單線程序列指令形成的一個無限循環,在系統程序中用函數表示(如下)。任務執行時要調用內核提供的服務,以等待某個事件發生。事件可以是定時間,或者是另一個任務、一個中斷服務例程發出事件通知。
Void Task (void)
[1] [2] [3] [4]
【利用實時內核開發嵌入式多任務程序】相關文章:
基于LabWindows的實時多任務加載總控臺軟件設計04-28
蜻蜓的綜合開發利用05-03
日本對溫泉的開發利用05-03
土地資源的開發與利用04-29
寡糖及其開發利用04-30
草原蝗蟲資源的開發與利用05-02
核桃資源的開發利用05-02
越西花椒產業的開發與利用05-02