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