當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]μC/OS-Ⅱ在應(yīng)用系統(tǒng)中任務(wù)劃分方法的研究

μC/OS-Ⅱ是由Jean J.Labrosse于1992年開(kāi)始提出的一個(gè)源碼公開(kāi)的嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng),至今仍在繼續(xù)發(fā)展,其已經(jīng)在工業(yè)控制、儀器儀表、汽車電子、航空航天和消費(fèi)電子等領(lǐng)域得到了廣泛應(yīng)用。它采用占先式實(shí)時(shí)調(diào)度方式,結(jié)構(gòu)簡(jiǎn)潔精練、可讀性強(qiáng)、性能穩(wěn)定、便于移植,只需少量的工作就能將其移植到8位、16位和32位微處理器上。目前,μC/OS-Ⅱ已成為嵌入式開(kāi)發(fā)人員入門嵌入式操作系統(tǒng)的合適選擇。

開(kāi)發(fā)基于μC/OS-Ⅱ的嵌入式應(yīng)用系統(tǒng),首先需針對(duì)目標(biāo)硬件平臺(tái)對(duì)μC/OS-Ⅱ進(jìn)行移植。在詳細(xì)分析總體需求的基礎(chǔ)上,將系統(tǒng)功能合理地劃分為多個(gè)不同任務(wù)實(shí)現(xiàn)。由此可見(jiàn),在實(shí)現(xiàn)嵌入式應(yīng)用系統(tǒng)的過(guò)程中,任務(wù)劃分是十分重要的環(huán)節(jié)。劃分任務(wù)是否合理有效不僅直接決定了μC/OS-Ⅱ的性能和執(zhí)行效率,還間接影響著應(yīng)用系統(tǒng)甚至整個(gè)項(xiàng)目的成敗。

對(duì)于國(guó)內(nèi)眾多嵌入式方向的研究人員和愛(ài)好者,基于實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ進(jìn)行教學(xué)或者研發(fā),大多側(cè)重于μC/OS-Ⅱ在各種特定目標(biāo)硬件平臺(tái)上的移植和簡(jiǎn)單使用。而μC/OS-Ⅱ上的復(fù)雜系統(tǒng)開(kāi)發(fā)特別是劃分任務(wù)策略雖已引起諸多關(guān)注,但到目前為止卻鮮有詳細(xì)而系統(tǒng)的研究成果。本文在總結(jié)前人工作和實(shí)際開(kāi)發(fā)經(jīng)驗(yàn)的基礎(chǔ)上,研究了μC/OS-Ⅱ任務(wù)劃分的方法和原則,并結(jié)合實(shí)踐給出基于MC9S12NE64硬件平臺(tái)的應(yīng)用實(shí)例。

1 μC/OS-Ⅱ的任務(wù)管理機(jī)制

在μC/OS-Ⅱ中,每個(gè)任務(wù)可以是一個(gè)典型的無(wú)限循環(huán),都處在μC/OS-Ⅱ規(guī)定的一種任務(wù)狀態(tài)。程序員把一個(gè)大地應(yīng)用程序分成相對(duì)獨(dú)立的多個(gè)任務(wù)來(lái)完成,大大提高了CPU的利用率,極大地方便了應(yīng)用程序的設(shè)計(jì)和維護(hù)。而多任務(wù)系統(tǒng)則通過(guò)任務(wù)切換實(shí)現(xiàn)各個(gè)任務(wù)之間的調(diào)度運(yùn)行。

從存儲(chǔ)結(jié)構(gòu)來(lái)看,任務(wù)由3個(gè)部分組成:任務(wù)的程序代碼、任務(wù)堆棧和任務(wù)控制塊(PCB)。其中,任務(wù)堆棧用來(lái)保存該任務(wù)運(yùn)行時(shí)的工作環(huán)境;任務(wù)控制塊用來(lái)保存該任務(wù)的一些屬性;任務(wù)程序代碼則描述了該任務(wù)的執(zhí)行過(guò)程。μC/OS-Ⅱ可以管理多達(dá)64個(gè)任務(wù),其中的空任務(wù)(IDLE)和統(tǒng)計(jì)任務(wù)(STATISTICS)為系統(tǒng)任務(wù),其余都屬于用戶任務(wù)。μC/OS-Ⅱ規(guī)定其每個(gè)任務(wù)必須設(shè)置為不同且惟一的優(yōu)先級(jí)(優(yōu)先級(jí)的數(shù)值越小,則代表任務(wù)的優(yōu)先級(jí)別越高),而μC/OS-Ⅱ內(nèi)核會(huì)調(diào)度處于就緒狀態(tài)優(yōu)先級(jí)最高的任務(wù)進(jìn)行處理,并分配CPU。就緒狀態(tài)屬于任務(wù)的5種狀態(tài)之一,其余4種狀態(tài)分別為:睡眠狀態(tài)、運(yùn)行狀態(tài)、等待狀態(tài)、中斷服務(wù)狀態(tài)。μC/OS-Ⅱ的任務(wù)總會(huì)處于這5種狀態(tài)之一,并根據(jù)不同的條件在5種狀態(tài)中進(jìn)行切換,如圖1所示。

 

 

2 任務(wù)劃分的方法

2.1 以硬件模塊為對(duì)象劃分任務(wù)

在使用μC/OS-Ⅱ劃分任務(wù)時(shí),應(yīng)將各硬件模塊相關(guān)的驅(qū)動(dòng)程序劃分為不同的任務(wù),根據(jù)硬件模塊在系統(tǒng)功能中的關(guān)鍵性順序設(shè)定相應(yīng)的優(yōu)先級(jí)。以MCU為中心,將各硬件驅(qū)動(dòng)程序劃分為獨(dú)立的任務(wù),不僅有效防止了爭(zhēng)用硬件模塊出現(xiàn)的問(wèn)題,還能夠提高整個(gè)μC/OS-Ⅱ的執(zhí)行效率,滿足應(yīng)用系統(tǒng)的實(shí)時(shí)性要求,為系統(tǒng)維護(hù)和擴(kuò)展功能打下良好的基礎(chǔ)。

將不同硬件模塊的操作劃分為不同的任務(wù),使得應(yīng)用系統(tǒng)必須通過(guò)μC/OS-Ⅱ內(nèi)核調(diào)度相應(yīng)的任務(wù),才能實(shí)現(xiàn)對(duì)于某個(gè)硬件模塊的訪問(wèn)。這樣,每個(gè)模塊都有且只有惟一的任務(wù)與之對(duì)應(yīng),其他任務(wù)則無(wú)權(quán)時(shí)訪問(wèn)它。這種操作模式有效地避免了由于多個(gè)任務(wù)同時(shí)爭(zhēng)用同一硬件模塊造成的沖突甚至死鎖現(xiàn)象。

按照硬件模塊劃分任務(wù),可以有效提高μC/OS-Ⅱ的工作效率,增強(qiáng)應(yīng)用系統(tǒng)對(duì)于實(shí)時(shí)要求的處理能力。例如:如果當(dāng)前系統(tǒng)正在對(duì)并口設(shè)備進(jìn)行處理,由于并口屬于慢速設(shè)備,其執(zhí)行速度遠(yuǎn)遠(yuǎn)落后于MCU總線頻率,因此在其工作過(guò)程中MCU大部分時(shí)間處于空閑狀態(tài),即無(wú)事可做直到并口處理完畢為止。將并口驅(qū)動(dòng)獨(dú)立為單個(gè)任務(wù)之后,μC/OS-Ⅱ內(nèi)核就可以通過(guò)任務(wù)調(diào)度使并口處理任務(wù)和其他任務(wù)并發(fā)執(zhí)行,減少M(fèi)CU處于空閑狀態(tài)的時(shí)間,從而提高了整個(gè)應(yīng)用系統(tǒng)運(yùn)行效率。

硬件模塊與硬件驅(qū)動(dòng)任務(wù)一一對(duì)應(yīng),使整個(gè)軟件系統(tǒng)框架清晰、結(jié)構(gòu)合理,增強(qiáng)了系統(tǒng)的可維護(hù)性和可擴(kuò)展性。以增加串行通信功能為例,開(kāi)發(fā)人員只要編寫(xiě)相應(yīng)串口驅(qū)動(dòng)程序,在μC/OS-Ⅱ中增加串行通信任務(wù)即可,無(wú)需修改任何其他模塊的任務(wù)代碼。

2.2 劃分強(qiáng)實(shí)時(shí)性任務(wù)

實(shí)時(shí)即立即、及時(shí)的意思,根據(jù)應(yīng)用中的實(shí)時(shí)要求,可以將其分為強(qiáng)實(shí)時(shí)和弱實(shí)時(shí)2大類。強(qiáng)實(shí)時(shí)對(duì)于響應(yīng)時(shí)間要求很高,如果實(shí)時(shí)性得不到滿足,系統(tǒng)會(huì)出現(xiàn)錯(cuò)誤甚至難以挽回的故障。弱實(shí)時(shí)雖然同樣要求調(diào)度時(shí)間短,響應(yīng)速度快,但其確定性較差,超過(guò)限定時(shí)間也能勉強(qiáng)工作。在基于μC/OS-Ⅱ的嵌入式應(yīng)用系統(tǒng)中,強(qiáng)實(shí)時(shí)任務(wù)能夠在限定的時(shí)間范圍內(nèi)調(diào)度執(zhí)行,是整個(gè)系統(tǒng)穩(wěn)定可靠,實(shí)時(shí)有效的重要保障。因此,在劃分μC/OS-Ⅱ任務(wù)時(shí),應(yīng)將每個(gè)強(qiáng)實(shí)時(shí)應(yīng)用劃分為獨(dú)立的任務(wù),與其他應(yīng)用分開(kāi),并設(shè)定高優(yōu)先級(jí),以保證強(qiáng)實(shí)時(shí)事件的限時(shí)發(fā)生,避免出現(xiàn)災(zāi)難性后果。

假設(shè)把某一強(qiáng)實(shí)時(shí)應(yīng)用與一弱實(shí)時(shí)性要求的應(yīng)用一起打包成為1個(gè)任務(wù)。在嵌入式應(yīng)用系統(tǒng)運(yùn)行過(guò)程中,一旦該弱實(shí)時(shí)應(yīng)用因?yàn)槟撤N原因(例如:等待內(nèi)存數(shù)據(jù)、等待外部輸入信號(hào)、等待中斷發(fā)生等)導(dǎo)致整個(gè)任務(wù)進(jìn)入等待狀態(tài),則在等待的事件發(fā)生之前,強(qiáng)實(shí)時(shí)應(yīng)用也無(wú)法通過(guò)任務(wù)調(diào)度得以執(zhí)行。在強(qiáng)實(shí)時(shí)系統(tǒng)中,出現(xiàn)了以上所述的情況,結(jié)果是不堪設(shè)想的。

如果強(qiáng)實(shí)時(shí)性應(yīng)用允許通過(guò)中斷方式“通知”μC/OS-Ⅱ內(nèi)核,則可將該強(qiáng)實(shí)時(shí)任務(wù)代碼放入相應(yīng)的中斷服務(wù)程序中去處理。在中斷服務(wù)程序在發(fā)生引起中斷處理的事件后,由硬件機(jī)制自動(dòng)加載運(yùn)行(把中斷服務(wù)程序的入口地址放入PC寄存器),無(wú)需軟件調(diào)度干涉,因此可更好保證應(yīng)用功能的強(qiáng)實(shí)時(shí)性。在中斷服務(wù)程序中執(zhí)行強(qiáng)實(shí)時(shí)性任務(wù)代碼,同樣必須遵循中斷服務(wù)程序要盡可能簡(jiǎn)短的原則。具體的方法是通過(guò)分析每個(gè)強(qiáng)實(shí)時(shí)任務(wù)功能和代碼,將其最重要的核心部分放人中斷處理程序中,其余部分形成一個(gè)單獨(dú)的任務(wù),兩者可通過(guò)任務(wù)同步機(jī)制(信號(hào)量、消息郵箱或者消息隊(duì)列)進(jìn)行聯(lián)系,以達(dá)到簡(jiǎn)化中斷處理過(guò)程的目的。

2.3 分割耗時(shí)較多的任務(wù)[!--empirenews.page--]

在一些較復(fù)雜的嵌入式應(yīng)用系統(tǒng)中,個(gè)別任務(wù)代碼會(huì)包含繁瑣的計(jì)算算法,運(yùn)行時(shí)占用大量的CPU處理時(shí)間和資源,嚴(yán)重影響μC/OS-Ⅱ系統(tǒng)的實(shí)時(shí)性。對(duì)于這樣的任務(wù),可將其按照不同的內(nèi)部功能劃分為多個(gè)模塊,每個(gè)模塊即為一個(gè)相對(duì)獨(dú)立的小任務(wù),相互之間通過(guò)任務(wù)通信機(jī)制協(xié)調(diào)工作。由于需要占用CPU較多的處理時(shí)間,這些任務(wù)幾乎沒(méi)有實(shí)時(shí)性要求,所以通常將其優(yōu)先級(jí)設(shè)低,以確保強(qiáng)實(shí)時(shí)任務(wù)的正常運(yùn)行。

例如:當(dāng)前的μC/OS-Ⅱ系統(tǒng)中有一任務(wù)在調(diào)度執(zhí)行時(shí)會(huì)占用較長(zhǎng)時(shí)間,導(dǎo)致其運(yùn)行過(guò)程頻繁被強(qiáng)實(shí)時(shí)任務(wù)打斷,這樣CPU就需要“犧牲”大量時(shí)間和空間用于保存被打斷的任務(wù)現(xiàn)場(chǎng),而整個(gè)系統(tǒng)的實(shí)時(shí)性就會(huì)大大降低,執(zhí)行效率也大打折扣。該任務(wù)的描述如下:首先根據(jù)算法1處理數(shù)據(jù)X,其次利用算法2處理數(shù)據(jù)Y,最后將數(shù)據(jù)X和數(shù)據(jù)Y通過(guò)算法3得到數(shù)據(jù)Z。在這種情況下,應(yīng)將不同的算法處理部分劃分為獨(dú)立的子任務(wù),并根據(jù)執(zhí)行順序逐次遞減任務(wù)優(yōu)先級(jí)。由于縮短了單個(gè)任務(wù)的執(zhí)行時(shí)間,任務(wù)的響應(yīng)時(shí)間也隨之變短,整個(gè)系統(tǒng)的實(shí)時(shí)性得到了提高。

3 應(yīng)用實(shí)例

作者在參與開(kāi)發(fā)的一個(gè)項(xiàng)目網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)中使用了μC/OS-Ⅱ進(jìn)行多任務(wù)的管理。該項(xiàng)目基于Freescale公司1994年推出的微處理器MC9S12NE64,主要功能要求網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)通過(guò)光敏傳感器采集工廠生產(chǎn)設(shè)備的多個(gè)狀態(tài)指示燈,以獲取當(dāng)前設(shè)備的工作狀態(tài)信息,隨后通過(guò)UDP包將信息發(fā)送至局域網(wǎng)中PC服務(wù)器處理。此外,技術(shù)人員還能夠通過(guò)串行通信方式對(duì)采集系統(tǒng)進(jìn)行測(cè)試和維護(hù)。該采集系統(tǒng)劃分的主要任務(wù)及其優(yōu)先級(jí)設(shè)定如表1所示。

 

 

生產(chǎn)設(shè)備狀態(tài)信息采集及處理任務(wù)優(yōu)先級(jí)最高,因?yàn)樵撊蝿?wù)屬于強(qiáng)實(shí)時(shí)性任務(wù),無(wú)法及時(shí)執(zhí)行會(huì)使采集系統(tǒng)處于癱瘓狀態(tài)。而同樣屬于實(shí)時(shí)任務(wù)的系統(tǒng)測(cè)試維護(hù)功能由于實(shí)時(shí)要求并不高,所以優(yōu)先級(jí)次之。

A/D模塊驅(qū)動(dòng)程序、網(wǎng)絡(luò)模塊通信程序、串口通信程序和FIASH模塊操作程序與各自硬件單元關(guān)系密切,故將它們劃分為獨(dú)立的硬件相關(guān)任務(wù)。

采集系統(tǒng)中耗時(shí)最多、處理最復(fù)雜的部分是局域網(wǎng)內(nèi)的數(shù)據(jù)通信。由于受到芯片存儲(chǔ)空間的限制,作者并沒(méi)有移植現(xiàn)有源碼公開(kāi)的TCP/IP協(xié)議棧,取而代之的是自主研發(fā)了簡(jiǎn)易TCP/IP協(xié)議,并將該協(xié)議棧中每一層分割成為1個(gè)獨(dú)立的任務(wù)存在。

4 結(jié)語(yǔ)

μC/OS-Ⅱ是一個(gè)公開(kāi)源碼、搶占式、多任務(wù)的嵌入式實(shí)時(shí)操作系統(tǒng),自1992年面世以來(lái),已應(yīng)用于上百種產(chǎn)品。與一些商用嵌入式操作系統(tǒng)相比,它源代碼結(jié)構(gòu)清晰,易于移植和裁剪,具有很大的發(fā)展空間。本文在分析μC/OS-Ⅱ任務(wù)管理機(jī)制的基礎(chǔ)上,對(duì)μC/OS-Ⅱ的任務(wù)劃分進(jìn)行了初步探究,闡述了一些任務(wù)劃分的方法:“劃分與硬件模塊相關(guān)的任務(wù)”、“劃分強(qiáng)實(shí)時(shí)性任務(wù)”、“分割耗時(shí)較多的任務(wù)”。最后,結(jié)合開(kāi)發(fā)實(shí)踐給出了基于μC/OS-Ⅱ應(yīng)用系統(tǒng)的任務(wù)劃分實(shí)例。

本站聲明: 本文章由作者或相關(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日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

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

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(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ì)日本游戲市場(chǎng)的投資。

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

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

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

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

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

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

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

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

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

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

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