從μC/OS―II到μC/OS―III的各種改進(jìn)
2 μC/OS-III的新特性
μC/OS—III已經(jīng)不僅僅是一個(gè)RTOS內(nèi)核,而是包含很多與該內(nèi)核配套的軟件開發(fā)包。和傳統(tǒng)的大型商用RTOS類似,μC/OS—III能以傳統(tǒng)的BSP(板級(jí)支持包)方式,實(shí)現(xiàn)諸如USB主機(jī)、文件系統(tǒng)、TCP/IP協(xié)議棧等,還包括RTOS本身的調(diào)試工具等。Micrium公司和很多軟件公司合作,提供很多基于μC/OS—III的通用商業(yè)軟件,如GUI、FS、USB、TCP/IP等。今后還會(huì)與更多的半導(dǎo)體廠商合作,提供更多商家的以ARM Cortex—M3/4為核心的μC/OS—III評(píng)估板。
μC/OS—III在功能上得到了全面的擴(kuò)展和提升。μC/OS—II最多支持255個(gè)任務(wù),而μC/OS—III可以支持任意數(shù)目的任務(wù),實(shí)際使用的任務(wù)數(shù)目?jī)H受CPU所能使用的存儲(chǔ)空間的限制。μC/OS—III可以支持任意數(shù)目的信號(hào)量、事件標(biāo)志組、消息隊(duì)列、存儲(chǔ)塊等內(nèi)核對(duì)象,而且,為了避免在程序編譯過程中出現(xiàn)資源不夠分配的問題,允許用戶在程序運(yùn)行中動(dòng)態(tài)配置內(nèi)核資源。μC/OS—II允許掛起某個(gè)任務(wù),但掛起操作不可以嵌套,而μC/OS—III允許嵌套掛起某個(gè)任務(wù),嵌套掛起最深可達(dá)250層。μC/OS—III增加了一個(gè)時(shí)鐘節(jié)拍任務(wù)來做延時(shí)處理和超時(shí)判斷。通過在任務(wù)級(jí)代碼完成時(shí)鐘節(jié)拍服務(wù),能極大地減少中斷延遲時(shí)間。而且,μC/OS—III使用了哈希散列表機(jī)制,進(jìn)一步降低了延時(shí)處理和超時(shí)判斷的開銷,提高了系統(tǒng)的實(shí)時(shí)性。
除了功能上的擴(kuò)展和提升,μC/OS—III還增加了一些新功能。μC/OS—III增加了時(shí)間片輪轉(zhuǎn)調(diào)度,允許多個(gè)任務(wù)有相同的優(yōu)先級(jí)。當(dāng)多個(gè)優(yōu)先級(jí)相同的任務(wù)同時(shí)就緒并且所屬優(yōu)先級(jí)高于其他所有就緒任務(wù)時(shí),μC/OS—III輪轉(zhuǎn)調(diào)度這些任務(wù),讓每個(gè)任務(wù)運(yùn)行一段用戶指定的時(shí)間長(zhǎng)度(即時(shí)間片)。
μC/OS—III允許中斷或任務(wù)直接給另一個(gè)任務(wù)發(fā)信號(hào)或消息。在實(shí)際應(yīng)用中,很多情況下,編程人員知道該向哪個(gè)任務(wù)發(fā)信號(hào)或消息,這時(shí)就可以使用μC/OS—III的這種新功能來向目標(biāo)任務(wù)直接發(fā)信號(hào)或消息,從而避免創(chuàng)建和使用諸如信號(hào)量或消息隊(duì)列等內(nèi)核對(duì)象作為中介,提高信號(hào)或消息發(fā)送的效率。μC/OS—III增加了時(shí)間戳功能,可以給信號(hào)或消息打上時(shí)間戳,從而允許用戶獲取某個(gè)事件發(fā)生的時(shí)刻,以及信號(hào)或消息傳遞到目標(biāo)任務(wù)所耗費(fèi)的時(shí)間等。
另外,μC/OS-III的設(shè)計(jì)能方便地按照CPU架構(gòu)優(yōu)化,特別是其數(shù)據(jù)類型可按照CPU能適應(yīng)的最佳位數(shù)寬度修改,以適應(yīng)8/16/32位的CPU。關(guān)鍵算法可采用匯編程,以發(fā)揮一些有特殊指令的CPU的優(yōu)勢(shì)。很多CP有讀改寫指令,可方便實(shí)現(xiàn)存儲(chǔ)器訪問的原子操作,有的CPU有計(jì)算前導(dǎo)零指令,可用來快速查找任務(wù)就緒表。
μC/OS—III增加了中斷處理任務(wù),可以把內(nèi)核對(duì)象的處理工作都放到任務(wù)級(jí)代碼中完成,從而允許通過給調(diào)度器上鎖的方式實(shí)現(xiàn)臨界段代碼的保護(hù),這樣就使內(nèi)核關(guān)中斷的時(shí)鐘周期幾乎為零。μC/OS—III內(nèi)置了對(duì)系統(tǒng)性能進(jìn)行測(cè)試的代碼,能夠檢測(cè)每個(gè)任務(wù)的執(zhí)行時(shí)間、堆棧使用情況、每個(gè)任務(wù)運(yùn)行的次數(shù)、CPU利用率、關(guān)閉中斷和給調(diào)度器上鎖的時(shí)間等。μC/OS—III還支持內(nèi)核覺察式調(diào)試,可以以友好的方式對(duì)μC/OS—III的變量、數(shù)據(jù)結(jié)構(gòu)進(jìn)行檢查和顯示,并且?guī)в?mu;C/Probe調(diào)試工具,可在程序運(yùn)行過程中察看和修改變量。
結(jié)語
相比μC/OS—II,μC/OS—III做了很多改進(jìn),比如改進(jìn)了任務(wù)調(diào)度方法、改進(jìn)了時(shí)鐘節(jié)拍管理機(jī)制、增加了中斷處理任務(wù)、允許向任務(wù)直接發(fā)信號(hào)或消息、增加了時(shí)間戳功能、支持內(nèi)核覺察式調(diào)試等。從這些改進(jìn)來看,μC/OS—III比μC/OS—II上升到一個(gè)更高的檔次。其中,一主要的改進(jìn),比如μC/OS—III的任務(wù)調(diào)度方法的改進(jìn)、時(shí)鐘節(jié)拍管理機(jī)制的改進(jìn)、中斷管理方法的改進(jìn)等會(huì)在后續(xù)專題文章中詳細(xì)介紹。本文引用地址:http://cafeforensic.com/article/159587.htm
評(píng)論