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