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