?
uC/OS-III簡介
uC/OS-III(Micro C OS Three 微型的C 語言編寫的操作系統(tǒng)第3版)是一個可升級的,可固化的,基于優(yōu)先級的實時內(nèi)核。它對任務(wù)的個數(shù)無限制。uC/OS-III 是一個第3 代的系統(tǒng)內(nèi)核,支持現(xiàn)代的實時內(nèi)核所期待的大部分功能。例如資源管理,同步,任務(wù)間的通信等等。然而,uC/OS-III 提供的特色功能在其它的實時內(nèi)核中是找不到的,比如說完備的運行時間測量性能,直接地發(fā)送信號或者消息到任務(wù),任務(wù)可以同時等待多個內(nèi)核對象等。
uC/OS-III 是一個可擴(kuò)展的,可固化的,搶占式的實時內(nèi)核,它管理的任務(wù)個數(shù)不受限制。它是第三代內(nèi)核,提供了現(xiàn)代實時內(nèi)核所期望的所有功能包括資源管理、同步、內(nèi)部任務(wù)交流等。uC/OS-III 也提供了很多特性是在其他實時內(nèi)核中所沒有的。比如能在運行時測量運行性能,直接得發(fā)送信號或消息給任務(wù),任務(wù)能同時等待多個信號量和消息隊列。
?
uC/OS-III主要特點
1、時間片輪轉(zhuǎn)調(diào)度:uC/OS-III 允許多個任務(wù)擁有相同的優(yōu)先級。當(dāng)多個相同優(yōu)先級的任務(wù)就緒時,并且這個優(yōu)先級是目前最高的。uC/OS-III 會分配用戶定義的時間片給每個任務(wù)去運行。每個任務(wù)可以定義不同的時間片。當(dāng)任務(wù)用不完時間片時可以讓出CPU 給另一個任務(wù)。
2、搶占式多任務(wù)處理:uC/OS-III 是一個搶占式多任務(wù)處理內(nèi)核,因此,uC/OS-III 正在運行的經(jīng)常是最重要的就緒任務(wù)。
3、快速響應(yīng)中斷:uC/OS-III 有一些內(nèi)部的數(shù)據(jù)結(jié)構(gòu)和變量。uC/OS-III 保護(hù)臨界段可以通過鎖定調(diào)度器代替關(guān)中斷。因此關(guān)中斷的時間會非常少。這樣就使uC/OS-III 可以響應(yīng)一些非常快的中斷源了。
4、確定性的:uC/OS-III 的中斷響應(yīng)時間是可確定的,uC/OS-III 提供的大部分服務(wù)的執(zhí)行時間也是可確定的。
5、易移植的:uC/OS-III 可以被移植到大部分的CPU 架構(gòu)中。大部分的支持uC/OS-II 的器件通過改動就能支持uC/OS-III。而uC/OS-II已經(jīng)移植到45 種CPU 架構(gòu)中了。
6、可固化的:uC/OS-III 專為嵌入式系統(tǒng)設(shè)計,它可以跟應(yīng)用程序代碼一起被固化。
7、可實時配置的:uC/OS-III 允許用戶在運行時配置內(nèi)核。特別的,所有的內(nèi)核對象如任務(wù)、堆棧、信號量、事件標(biāo)志組、消息隊列、消息、互斥信號量、內(nèi)存分區(qū)、軟件定時器等都是在運行時分配的,以免在編譯時的過度分配。
8、任務(wù)數(shù)無限制:uC/OS-III 對任務(wù)數(shù)量無限制。實際上,任務(wù)的數(shù)量限制于處理器能提供的內(nèi)存大小。每一個任務(wù)需要有自己的堆??臻g,uC/OS-III 在運行時監(jiān)控任務(wù)堆棧的生長。uC/OS-III 對任務(wù)的大小無限制,
9、優(yōu)先級數(shù)無限制:uC/OS-III 對優(yōu)先級的數(shù)量無限制。然而,配置uC/OS-III 的優(yōu)先級在32 到256 之間已經(jīng)滿足大多數(shù)的應(yīng)用了。
10、內(nèi)核對象數(shù)無限制:uC/OS-III 支持任何數(shù)量的任務(wù)、信號量、互斥信號量、事件標(biāo)志組、消息隊列、軟件定時器、內(nèi)存分區(qū)。用戶在運行時分配所有的內(nèi)核對象。
11、服務(wù):uC/OS-III 提供了高檔實時內(nèi)核所需要的所有功能,例如任務(wù)管理、時間管理、信號量、事件標(biāo)志組、互斥信號量、消息隊列、軟件定時器、內(nèi)存分區(qū)等。
12、死鎖預(yù)防:uC/OS-III 中所有的掛起服務(wù)都可以有時間限制,預(yù)防死鎖。
13、任務(wù)級的時基處理:uC/OS-III 有時基任務(wù),時基ISR 觸發(fā)時基任務(wù)。uC/OS-III 使用了哈希列表結(jié)構(gòu),可以大大減少處理延時和任務(wù)超時所產(chǎn)生的開支。
14、用戶可定義的鉤子函數(shù):uC/OS-III 允許程序員定義hook 函數(shù),hook 函數(shù)被uC/OS-III 調(diào)用。hook 函數(shù)允許用戶擴(kuò)展uC/OS-III 的功能。有的hook 函數(shù)在任務(wù)切換的時候被調(diào)用,有的在任務(wù)創(chuàng)建的時候被調(diào)用,有的在任務(wù)刪除的時候被調(diào)用。
15時間戳:為了測量時間,uC/OS-III 需要一個16 位或者32 位的時時間戳計數(shù)器。這個計數(shù)器值可以在運行時被讀取以測量時間。例如:當(dāng)ISR 提交消息到任務(wù)時,時間戳計數(shù)器自動讀取并保存作為消息。當(dāng)接收者接收到這條消息,時間戳被提供在消息內(nèi)。通過讀取現(xiàn)在的時間戳,消息的響應(yīng)時間可以被確定。
16、可優(yōu)化:uC/OS-III 被設(shè)計于能夠根據(jù)CPU 的架構(gòu)被優(yōu)化。uC/OS-III 所用的大部分?jǐn)?shù)據(jù)類型能夠被改變,以更好地適應(yīng)CPU 固有的字大小。優(yōu)先級調(diào)度法則可以通過編寫一些匯編語言而獲益于一些特殊的指令如位設(shè)置、位清除、計數(shù)清零指令(CLZ),find-first-one(FF1)指令。
17、內(nèi)置的性能測量:uC/OS-III 有內(nèi)置性能測量功能。能測量每一個任務(wù)的執(zhí)行時間,每個任務(wù)的堆棧使用情況,任務(wù)的執(zhí)行次數(shù),CPU的使用情況,ISR 到任務(wù)的切換時間,任務(wù)到任務(wù)的切換時間,列表中的峰值數(shù),關(guān)中斷、鎖調(diào)度器平均時間等。
18、錯誤檢測:uC/OS-III 能檢測指針是否為NULL、在ISR 中調(diào)用的任務(wù)級服務(wù)是否允許、參數(shù)在允許范圍內(nèi)、配置選項的有效性、函數(shù)的執(zhí)行結(jié)果等。每一個uC/OS-III 的API 函數(shù)返回一個對應(yīng)于函數(shù)調(diào)用結(jié)果的錯誤代號。
19、任務(wù)消息:uC/OS-III 允許ISR 或者任務(wù)直接發(fā)送消息到另一個任務(wù)。這樣就避免產(chǎn)生一個消息隊列,提高了內(nèi)核性能。
20、任務(wù)信號量“uC/OS-III 允許ISR 或者任務(wù)直接地發(fā)送信號量給其它任務(wù)。這樣就避免了必須產(chǎn)生一個中間級內(nèi)核對象如一個信號量或者事件標(biāo)志組只為了標(biāo)記一個任務(wù)。提高了內(nèi)核性能。
21、掛起多個對象:uC/OS-III 允許任務(wù)等待多個事件的發(fā)生。特別的,任務(wù)可以同時等待多個信號量和消息隊列被提交。等待中的任務(wù)在事件發(fā)生的時候被喚醒。
22、嵌套的任務(wù)停止“uC/OS-III 允許任務(wù)停止自身或者停止另外的任務(wù)。停止一個任務(wù)意味著這個任務(wù)將不再執(zhí)行直到被其他的任務(wù)恢復(fù)。停止可以被嵌套到250 級。換句話說,一個任務(wù)可以停止另外的任務(wù)多達(dá)250 次。當(dāng)然,這個任務(wù)必須被恢復(fù)同等次數(shù)才有資格再次獲得CPU。
23、嵌入的內(nèi)核調(diào)試器:這個功能允許內(nèi)核調(diào)試器查看uC/OS-III 的變量和數(shù)據(jù)結(jié)構(gòu)通過一個用戶定義的通道。(但是只能在調(diào)試器遇到斷點的時候查看)。uC/OS-III 內(nèi)核也支持uC/Probe(探針)在運行時顯示信息。
24、對象名稱:每個uC/OS-III 的內(nèi)核對象有一個相關(guān)聯(lián)的名字。這樣就能很容易的識別出對象所指定的作用。分配一個ASCII 碼的名字給任務(wù)、信號量、互斥信號量、事件標(biāo)志組、消息隊列、內(nèi)存塊、軟件定時器。對象的名字長度沒有限制,但是必須以空字符結(jié)束。
評論