當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]嵌入式實(shí)時(shí)操作系統(tǒng)PetOS設(shè)計(jì)與實(shí)現(xiàn)

摘要:PetOS是一個(gè)自行設(shè)計(jì)的嵌入式實(shí)時(shí)操作系統(tǒng)。本文介紹了PetOS的技術(shù)背景,并詳細(xì)闡述PetOS系統(tǒng)中的任務(wù)調(diào)度機(jī)制、任務(wù)管理機(jī)制以及中斷管理機(jī)制的實(shí)現(xiàn)原理,指出PetOS在應(yīng)用中的優(yōu)缺點(diǎn)。
關(guān)鍵詞: PetOS,嵌入式操作系統(tǒng),任務(wù)調(diào)度、中斷管理

1 引言

在嵌入式領(lǐng)域中,嵌入式實(shí)時(shí)操作系統(tǒng)正得到越來越廣泛的應(yīng)用。采用嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)可以更合理、更有效地利用CPU 的資源,簡化應(yīng)用軟件的設(shè)計(jì),縮短系統(tǒng)開發(fā)時(shí)間,更好地保證系統(tǒng)的實(shí)時(shí)性和可靠性。由于RTOS需占用一定的系統(tǒng)資源(尤其是RAM 資源),只有μC/OS II、PalOS等少數(shù)實(shí)時(shí)操作系統(tǒng)能在小RAM 系統(tǒng)上運(yùn)行。相對(duì)于μC/OS II[2]等商業(yè)操作系統(tǒng),PalOS[1]操作系統(tǒng)是完全免費(fèi)的操作系統(tǒng),具有源碼公開、內(nèi)核簡單等的特點(diǎn)。但該系統(tǒng)不支持任務(wù)優(yōu)先級(jí)、中斷等相對(duì)復(fù)雜的功能,不能很好的滿足嵌入式電子設(shè)備的需要。

2 PetOS簡介

PalOS是UCLA(加州大學(xué)洛山機(jī)分校)為傳感器網(wǎng)絡(luò)而設(shè)計(jì)微型操系統(tǒng)。系統(tǒng)輪詢每個(gè)任務(wù)的消息隊(duì)列,如果存在消息則調(diào)用任務(wù)相應(yīng)的消息處理函數(shù)。但是這種簡單的輪詢機(jī)制和系統(tǒng)結(jié)構(gòu)無法滿足更為復(fù)雜的應(yīng)用需求。在任務(wù)管理、系統(tǒng)時(shí)鐘管理和中斷管理等功能上,PalOS的功能都有待加強(qiáng)。

PetOS以PalOS為原型,改進(jìn)了任務(wù)調(diào)度算法,引入優(yōu)先級(jí)的概念。每個(gè)任務(wù)可根據(jù)重要程度的不同被賦予一定的優(yōu)先級(jí), CPU總是讓處于就緒態(tài)的、優(yōu)先級(jí)最高的任務(wù)先運(yùn)行,從而實(shí)現(xiàn)任務(wù)的優(yōu)先級(jí)管理。PetOS還提供了嚴(yán)格優(yōu)先級(jí)調(diào)度模式和非嚴(yán)格優(yōu)先級(jí)調(diào)度模式,用于緩解高優(yōu)先級(jí)任務(wù)持續(xù)被調(diào)度時(shí),低優(yōu)先級(jí)任務(wù)出現(xiàn)‘餓死’的現(xiàn)象。

圖1 PetOS內(nèi)核框架

簡單輪詢或者優(yōu)先級(jí)調(diào)度都無法保證系統(tǒng)的實(shí)時(shí)性。這兩種調(diào)度都基于事件驅(qū)動(dòng),任務(wù)必須完成事件響應(yīng)才會(huì)執(zhí)行下一輪調(diào)度,因此系統(tǒng)的實(shí)時(shí)性會(huì)受到事件響應(yīng)函數(shù)的粒度的影響,為了增加系統(tǒng)的實(shí)時(shí)性,PetOS加入了中斷管理及系統(tǒng)時(shí)鐘管理,用于提高系統(tǒng)的實(shí)時(shí)性。中斷可以由硬件產(chǎn)生,也可以由應(yīng)用程序產(chǎn)生。中斷產(chǎn)生后,系統(tǒng)會(huì)及時(shí)進(jìn)入中斷模式進(jìn)行處理,從而保證實(shí)時(shí)性要求很高的事務(wù)能得到及時(shí)的處理。

PetOS內(nèi)核框架如圖1。

3 PetOS的實(shí)現(xiàn)

3.1 PETOS任務(wù)維護(hù)/調(diào)度模塊

任務(wù)維護(hù)/調(diào)度模塊是PetOS的核心模塊 負(fù)責(zé)任務(wù)的管理和調(diào)度。

·TASK(任務(wù)):

TASK是PetOS應(yīng)用程序的邏輯實(shí)體,擁有獨(dú)立的輸入響應(yīng)、消息響應(yīng)和輸出控制,是PetOS的調(diào)度實(shí)體。

PetOS任務(wù)具有如下5個(gè)狀態(tài):

·UNREGISTER   :由于Task列表采用靜態(tài)數(shù)組,此狀態(tài)表示該數(shù)組項(xiàng)無效

·UNINIT:任務(wù)已經(jīng)注冊(cè),但是尚未初始化,不可執(zhí)行

·STOP:任務(wù)停止?fàn)顟B(tài)。不接受消息,不可執(zhí)行。無數(shù)據(jù)

圖2 PetOS 任務(wù)狀態(tài)轉(zhuǎn)換圖

·RUN:任務(wù)運(yùn)行狀態(tài)。能接受消息,可以執(zhí)行

·PAUSE:任務(wù)掛起狀態(tài):不能接受消息,不可執(zhí)行。但保持?jǐn)?shù)據(jù)。

任務(wù)在PetOS啟動(dòng)時(shí)被注冊(cè),并常駐在操作系統(tǒng)中。即操作系統(tǒng)初始化完畢并啟動(dòng)之后,操作系統(tǒng)調(diào)度的任務(wù)列表是固定的。操作系統(tǒng)啟動(dòng)后,任務(wù)只會(huì)在運(yùn)行、暫停、掛起狀態(tài)之前切換。

任務(wù)狀態(tài)圖如圖2:

為了方便任務(wù)的管理與控制,每個(gè)TASK都會(huì)綁定TCB(task control block)。TCB類似于現(xiàn)代操作系統(tǒng)中進(jìn)程的PCB,它記錄了task的各種狀態(tài)變量、控制變量以及標(biāo)準(zhǔn)接口的函數(shù)指針,便于PetOS和應(yīng)用程序維護(hù)。

Event(事件消息):

Event是PetOS進(jìn)程調(diào)度的粒度單位。

由于PetOS的每個(gè)任務(wù)不具備獨(dú)立的代碼/數(shù)據(jù)段/堆棧指針,我們無法在任意的位置暫停一個(gè)task而啟動(dòng)另一個(gè)。PetOS的解決策略是:將task拆分成為一個(gè)個(gè)獨(dú)立的由事件驅(qū)動(dòng)的邏輯模塊,每個(gè)task都有各自獨(dú)立的事件隊(duì)列。Task的每個(gè)邏輯功能都會(huì)被映射成一個(gè)事件,操作系統(tǒng)通過賦予某個(gè)task響應(yīng)事件的權(quán)利來完成一次調(diào)度。而操作系統(tǒng)的多任務(wù)調(diào)度可以Task輪流響應(yīng)事件來實(shí)現(xiàn)。

任務(wù)的調(diào)度:

圖3調(diào)度算法流程圖

在嵌入式系統(tǒng)中,很多應(yīng)用要求執(zhí)行的優(yōu)先級(jí)絕對(duì)優(yōu)先,比如USB文件傳輸?shù)奶幚?。為此,PetOS采用了多級(jí)任務(wù)機(jī)制,并賦予高優(yōu)先級(jí)的任務(wù)更高的執(zhí)行權(quán)限。調(diào)度時(shí),PetOs將優(yōu)先調(diào)度優(yōu)先級(jí)高的任務(wù)。這種調(diào)度方式保證了高優(yōu)先級(jí)任務(wù)的實(shí)時(shí)響應(yīng),但可能導(dǎo)致低優(yōu)先級(jí)的任務(wù)永遠(yuǎn)無法被執(zhí)行。為了緩解這種‘餓死’現(xiàn)象,PetOS提供了兩種可選的配置:

·嚴(yán)格優(yōu)先級(jí)調(diào)度模式:即,若高優(yōu)先級(jí)的任務(wù)隊(duì)列中存在還有事件未響應(yīng)的任務(wù),則無條件執(zhí)行高優(yōu)先級(jí)的任務(wù)。

·非嚴(yán)格優(yōu)先級(jí)調(diào)度模式:即,當(dāng)高優(yōu)先級(jí)隊(duì)列調(diào)度一輪過后,次優(yōu)先級(jí)的任務(wù)隊(duì)列中的第一個(gè)待執(zhí)行任務(wù)可以得到1次調(diào)度。調(diào)度完成后繼續(xù)輪詢高優(yōu)先級(jí)隊(duì)列。

可以看到兩者的區(qū)別在于:嚴(yán)格調(diào)度模式可以保證高優(yōu)先級(jí)任務(wù)的絕對(duì)優(yōu)先,但是低級(jí)任務(wù)可能出現(xiàn)‘餓死’的情況。而對(duì)于非嚴(yán)格調(diào)度模式,不論任務(wù)優(yōu)先級(jí)有多低,總能以較低的頻率執(zhí)行。

調(diào)度算法的分析及優(yōu)化:

在非嚴(yán)格模式下,設(shè)一級(jí)、二級(jí)、三級(jí)task隊(duì)列的長度分別為N1,N2,N3。則二級(jí)隊(duì)列中調(diào)度一個(gè)任務(wù)需要判斷一級(jí)任務(wù)N1次;三級(jí)隊(duì)列中調(diào)度一個(gè)任務(wù)需要在一級(jí)隊(duì)列中判斷N1×N2次,在二級(jí)隊(duì)列中判斷N2次。在一級(jí)二級(jí)任務(wù)都很少被執(zhí)行,而三級(jí)隊(duì)列中的任務(wù)消息粒度很小且執(zhí)行頻率很高時(shí),任務(wù)調(diào)度所占用的系統(tǒng)消耗便會(huì)急劇上升。

       一種解決方法是:PetOS給每個(gè)消息隊(duì)列加入了32Bit消息標(biāo)記位。其中的每一位對(duì)應(yīng)一個(gè)該優(yōu)先級(jí)中的任務(wù)。若消息標(biāo)記變量的某一位為1,則代表該位對(duì)應(yīng)的task存在尚未響應(yīng)的事件;若為0,則表示該級(jí)隊(duì)列所有任務(wù)的事件都已經(jīng)處理完畢,可以調(diào)度次優(yōu)先級(jí)的任務(wù)。

通過消息標(biāo)記位策略,若一級(jí)二級(jí)任務(wù)都不存在需要被調(diào)度的任務(wù),則三級(jí)任務(wù)被調(diào)度一次的代價(jià)只是查詢一級(jí)、二級(jí)任務(wù)的消息標(biāo)記位各一次,從而大大降低了系統(tǒng)的消耗。

3.2中斷管理/定時(shí)函數(shù)管理

中斷管理:

由于PetOS的實(shí)時(shí)性受到事件粒度大小的影響,系統(tǒng)需要提供一種更強(qiáng)有力的實(shí)時(shí)性保障:中斷。PetOS中斷處理模塊主要完成中斷源的判斷、中斷向量的維護(hù)以及中斷響應(yīng)函數(shù)的調(diào)度等工作。

PetOS支持64個(gè)中斷源[3],并對(duì)每個(gè)中斷源支持不限數(shù)目的中斷處理函數(shù),因此該列表是一個(gè)雙向鏈表,里面包涵了該中斷號(hào)下的中斷處理函數(shù),定位后依次執(zhí)行該鏈表中的函數(shù)。

采用鏈表方式維護(hù)中斷處理函數(shù)可以更加靈活的維護(hù)中斷函數(shù)列表,但是實(shí)際上,很多中斷函數(shù)都是一次性的,比如USB連接響應(yīng)函數(shù)在被調(diào)用后,需要將自己從該中斷的函數(shù)列表內(nèi)刪除。而此時(shí),中斷處理函數(shù)正在使用該列表,這樣就引起了中斷函數(shù)鏈表的不一致性。

解決的方式是:

1)給所有函數(shù)句柄加入狀態(tài)。

2)維護(hù)中斷函數(shù)列表時(shí),如果句柄處于閑置狀態(tài),則進(jìn)行默認(rèn)的操作;如果句柄處于IRQ狀態(tài)被刪除,則暫時(shí)不進(jìn)行直接的刪除操作,而是將句柄狀態(tài)改成PETOS_IRQ_HANDLER_CALL_STATUS_DELETE。

3)當(dāng)中斷處理主函數(shù)調(diào)用完該函數(shù)后,若發(fā)現(xiàn)該函數(shù)的句柄狀態(tài)已經(jīng)改變,則可得知該函數(shù)已經(jīng)在調(diào)用過程中將自己注銷。IrqHandler會(huì)在此時(shí)重寫中斷維護(hù)模塊API中注銷函數(shù),在這里將該函數(shù)句柄刪除。

4)重新鏈接中斷函數(shù)列表和定位tmpIrqHandler找到下一個(gè)中斷處理函數(shù)句柄。

中斷擴(kuò)展模塊-系統(tǒng)時(shí)鐘模塊和定時(shí)觸發(fā)函數(shù):

中斷機(jī)制保證了PetOS對(duì)硬件請(qǐng)求的實(shí)時(shí)性響應(yīng),而對(duì)于軟件請(qǐng)求的實(shí)時(shí)性則由PetOS系統(tǒng)時(shí)鐘/定時(shí)觸發(fā)函數(shù)模塊完成。該模塊主要完成了兩部分工作:

·系統(tǒng)時(shí)鐘模塊:系統(tǒng)每隔固定的時(shí)間產(chǎn)生一個(gè)時(shí)間中斷。利用前面的中斷機(jī)制,我們可以模擬一個(gè)準(zhǔn)實(shí)時(shí)的,不斷執(zhí)行的任務(wù)。具體方法為將這段代碼注冊(cè)為系統(tǒng)時(shí)鐘的中斷處理函數(shù)。

·定時(shí)觸發(fā)函數(shù)模塊:為了滿足嵌入式電子產(chǎn)品應(yīng)用程序的需要,基于系統(tǒng)時(shí)鐘模塊,PetOS供了定時(shí)觸發(fā)函數(shù)功能。用戶可以向系統(tǒng)注冊(cè)一個(gè)定時(shí)觸發(fā)函數(shù),并指定其被調(diào)用的時(shí)間。操作系統(tǒng)通過預(yù)先注冊(cè)好的一個(gè)系統(tǒng)時(shí)鐘中斷處理函數(shù)來檢查是否有需要的定時(shí)觸發(fā)函數(shù)到期,并執(zhí)行調(diào)度。

PetOS的任務(wù)調(diào)度是以事件為單位,不可能出現(xiàn)兩個(gè)任務(wù)同時(shí)訪問同一段代碼的情況。因此,大部分代碼不需要考慮重入的問題。

4 PetOS的不足及改進(jìn)方向

目前的調(diào)度算法還是存在任務(wù)優(yōu)先級(jí)跨度太大的問題,高優(yōu)先級(jí)的任務(wù)可能直接導(dǎo)至低優(yōu)先級(jí)任務(wù)的“餓死”。

PetOS不可搶占的任務(wù)調(diào)度機(jī)制,各任務(wù)無獨(dú)立棧導(dǎo)致調(diào)度不夠靈活,如果一個(gè)任務(wù)的消息處理時(shí)間很長,則其他任務(wù)的消息響應(yīng)時(shí)間也會(huì)很長,使得整個(gè)系統(tǒng)的實(shí)時(shí)性顯得較差并且無法移植阻塞式的應(yīng)到到該系統(tǒng)中。

PetOS并沒有啟用多態(tài)運(yùn)行模式,而是簡單的將OS core和其他應(yīng)用程序的地址空間復(fù)用。這樣雖然簡化了系統(tǒng)結(jié)構(gòu),但是帶來了OS core的地址空間可能被其他應(yīng)用程序直接訪問的隱患。

因此調(diào)度算法及內(nèi)存管理將是PetOS改進(jìn)的方向。

5 結(jié)束語

增加了優(yōu)先級(jí)調(diào)度、任務(wù)管理、中斷管理、系統(tǒng)時(shí)鐘管理后,PetOS由一個(gè)只適用于簡單應(yīng)用的微型操作系統(tǒng)蛻變?yōu)榭蓱?yīng)用于復(fù)雜環(huán)境的小型操作系統(tǒng)。由于PetOS的模塊化結(jié)構(gòu)和開放性的代碼,使得各方案的擴(kuò)展性和可維護(hù)性大大加強(qiáng),大大縮短了方案開發(fā)、產(chǎn)品維護(hù)的周期和成本。目前,基于ARM922硬件平臺(tái),PetOS已經(jīng)實(shí)現(xiàn)了MP4/學(xué)習(xí)機(jī)等嵌入式消費(fèi)類電子產(chǎn)品的方案,并已有成熟的產(chǎn)品上市,證明了PetOS的市場潛力。隨著新的應(yīng)用需求,PetOS會(huì)得到進(jìn)一步完善,在嵌入式領(lǐng)域發(fā)揮更大的作用。

參考文獻(xiàn):

[1] UCLA Networked and Embedded Systems Lab. PALOS. http://sourceforge.net/projects/palos/ 2002

[2] JeanJ .Labrosse. uC /OS-11-源碼公開的實(shí)時(shí)嵌人式操作系統(tǒng)[M],中國電力出版社,2001

[3] 杜春雷.ARM體系結(jié)構(gòu)與編程[M] 清華大學(xué)出版社, 2003

[4] 沈勝慶.嵌入式操作系統(tǒng)的內(nèi)核研究[J].微計(jì)算機(jī)信息,2006,2-2:72-74
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉