<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于μC/OS-Ⅱ應用系統的任務(wù)劃分實(shí)例

基于μC/OS-Ⅱ應用系統的任務(wù)劃分實(shí)例

作者: 時(shí)間:2012-10-09 來(lái)源:網(wǎng)絡(luò ) 收藏

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

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

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

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

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

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

2 的方法

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

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

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

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

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

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

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

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

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

2.3 分割耗時(shí)較多的任務(wù)


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>