|
0.jpg (11.19 KB, 下載次數(shù): 223)
下載附件
2018-4-26 16:01 上傳
譯者序
很高興終于完成了 uC/OS-III 嵌入式系統(tǒng)的翻譯,翻譯從 2011 年10 月 15 日開始到 2011 年 11 月 3 日為止 , 共 20 天時(shí)間 , 平均每天 5個(gè)小時(shí)。本想將 uC/OS-III 函數(shù)的 API 部分也翻譯的,但畢竟考研更甚于愛好,我得為 2013 年 1 月的考研做準(zhǔn)備呀 ~~ 。
在此,我要感謝:
1 、 我的導(dǎo)師:樂(lè)教授。是您經(jīng)常帶我去公司拓展視野,并讓我堅(jiān)定不移地往嵌入式方面發(fā)展。
2 、 我的師傅:張博士。是您無(wú)償提供給我一些開發(fā)板,作為回報(bào),幫您的店鋪宣傳一下as-robot
3 、 還有我的親朋好友們。
特別是今天上午,用了 3 小時(shí)終于在 MDK4.0 編譯器上 將uC/OS-III 移植到 stm32f103rb 處理器上,并成功運(yùn)行。移植的步驟 ,我也會(huì)發(fā)布到網(wǎng)上的,謝謝大家。
序言
什么是 uC/OS-III?
uC/OS-III(Micro C OS Three 微型的 C 語(yǔ)言編寫的操作系統(tǒng)第 3版 ) 是一個(gè)可升級(jí)的,可固化的,基于優(yōu)先級(jí)的實(shí)時(shí)內(nèi)核。它對(duì)任務(wù)的個(gè)數(shù)無(wú)限制。 uC/OS-III 是一個(gè)第 3 代的系統(tǒng)內(nèi)核,支持現(xiàn)代的實(shí)時(shí)內(nèi)核所期待的大部分功能 。 例如資源管理 , 同步 , 任務(wù)間的通信等等。然而, uC/OS-III 提供的特色功能在其它的實(shí)時(shí)內(nèi)核中是找不到的 , 比如說(shuō)完備的運(yùn)行時(shí)間測(cè)量性能 , 直接地發(fā)送信號(hào)或者消息到任務(wù),任務(wù)可以同時(shí)等待多個(gè)內(nèi)核對(duì)象等。為什么命名一個(gè)新的版本?
uC/OS 系列,第一代產(chǎn)生于 1992 。經(jīng)過(guò)了多年的使用和上千人的反饋,已經(jīng)產(chǎn)生了很多的進(jìn)化版本。
uC/OS-III 是這些反饋和經(jīng)驗(yàn)的總結(jié)。在 uC/OS-II 中很少使用的功能已經(jīng)被刪除或者被更新 , 添加了更高效的功能和服務(wù) 。 其中最有用的功能應(yīng)該是時(shí)間片輪轉(zhuǎn)法( round robin), 這個(gè)是 uC/OS-II 中不支持的,但是現(xiàn)在已經(jīng)是 uC/OS-III 的一個(gè)功能了。uC/OS-III 會(huì)提供新的功能以更好地適應(yīng)新出現(xiàn)的處理器。特別的, uC/OS-III 被設(shè)計(jì)用于 32 位處理器,但是它也能在 16 位或 8 位處理器中很好地工作。
uC/OS-III 的目標(biāo)
uC/OS-III 最主要的目標(biāo)是提供一流的實(shí)時(shí)內(nèi)核以適應(yīng)更新很快的嵌入式產(chǎn)品。使用像 uC/OS-III 那樣具有雄厚的基礎(chǔ)和穩(wěn)定的框架的商業(yè)實(shí)時(shí)內(nèi)核,能夠幫助設(shè)計(jì)師們處理日益復(fù)雜的嵌入式設(shè)計(jì)。這本書中的目標(biāo) , 是為了介紹 uC/OS-III 的內(nèi)部工作 。 了解這些會(huì)幫助讀者實(shí)現(xiàn)邏輯上的設(shè)計(jì)方案 , 協(xié)調(diào)統(tǒng)一硬件和軟件會(huì)讓你對(duì)整體的設(shè)計(jì)很有把握。
1 、簡(jiǎn)介
在重要的地方,實(shí)時(shí)系統(tǒng)憑借其系統(tǒng)性的計(jì)算和及時(shí)的處理能力工作著。一共有 2 種類型的實(shí)時(shí)系統(tǒng):軟實(shí)時(shí)系統(tǒng)和硬實(shí)時(shí)系統(tǒng)。軟實(shí)時(shí)系統(tǒng)和硬實(shí)時(shí)系統(tǒng)的區(qū)別在于一旦沒(méi)有在規(guī)定的時(shí)間內(nèi)完成任務(wù)所導(dǎo)致后果的嚴(yán)重性 。 超過(guò)時(shí)限后所得到的結(jié)果即使正確也可能是毫無(wú)作用的。
硬實(shí)時(shí)系統(tǒng)中,運(yùn)算超時(shí)是不允許發(fā)生的。在很多情況下,超時(shí)會(huì)導(dǎo)致巨大的災(zāi)難,會(huì)威脅人們的生命安全。但是在軟實(shí)時(shí)系統(tǒng)中 ,超時(shí)不會(huì)導(dǎo)致嚴(yán)重后果。
實(shí)時(shí)系統(tǒng)的應(yīng)用范圍很廣,但很多實(shí)時(shí)系統(tǒng)是嵌入式的。一個(gè)嵌入式系統(tǒng)是計(jì)算機(jī)中添加操作系統(tǒng),但是用戶不公認(rèn)這是個(gè)計(jì)算機(jī) 。以下列出嵌入式系統(tǒng)的一些例子
0.jpg (20.42 KB, 下載次數(shù): 192)
下載附件
2018-4-26 16:04 上傳
0.jpg (24.34 KB, 下載次數(shù): 193)
下載附件
2018-4-26 16:04 上傳
實(shí)時(shí)系統(tǒng)的設(shè)計(jì),調(diào)試和配置比非實(shí)時(shí)系統(tǒng)難得多。
1-1 前后臺(tái)系統(tǒng) 前后臺(tái)系統(tǒng) 前后臺(tái)系統(tǒng) 前后臺(tái)系統(tǒng)簡(jiǎn)單的小型系統(tǒng)設(shè)計(jì)一般是基于前后臺(tái)的或者無(wú)限循環(huán)的系統(tǒng)。包含一個(gè)無(wú)限循環(huán)的模塊實(shí)現(xiàn)需要的操作(后臺(tái) ) 。中斷處理程序?qū)崿F(xiàn)異步事件(前臺(tái) ) 。前臺(tái)也叫做中斷級(jí),后臺(tái)也叫作任務(wù)級(jí)。臨界操作應(yīng)該在任務(wù)級(jí)中被執(zhí)行,不可避免地必須在中斷處理程序中執(zhí)行也要確保是在很短的時(shí)間內(nèi)完成 。 因?yàn)檫@會(huì)導(dǎo)致 ISR 占用更長(zhǎng)的時(shí)間 。 通常的 , ISR 中使能相關(guān)的信息而在后臺(tái)程序中執(zhí)行相應(yīng)的操作 。 這叫做任務(wù)級(jí)響應(yīng) 。 任務(wù)級(jí)響應(yīng)的時(shí)間依賴于后臺(tái)循環(huán)一次所需的時(shí)間 , 通常這不是一個(gè)固定常量 。 另外 , 如果其中的代碼稍有改動(dòng),那么循環(huán)一次所用的時(shí)間也將有所變化。
大多數(shù)高產(chǎn)量低成本微控制器的應(yīng)用軟件 ( 例如微波爐 , 電話玩具等)都是基于前后臺(tái)系統(tǒng)的。
0.png (96.96 KB, 下載次數(shù): 192)
下載附件
2018-4-26 16:05 上傳
1-2 實(shí)時(shí)內(nèi)核
實(shí)時(shí)內(nèi)核是一個(gè)能管理 MPU 、 MCU 、 DSP 時(shí)間和資源的軟件。
實(shí)時(shí)內(nèi)核的應(yīng)用包括迅速地響應(yīng),可靠地完成工作的各個(gè)部分。
任務(wù)(也叫做線程)是一段簡(jiǎn)單的程序,運(yùn)行時(shí)完全地占用 CPU 。在單 CPU 中,任何時(shí)候只有 1 個(gè)任務(wù)被執(zhí)行。
內(nèi)核的責(zé)任是管理任務(wù) , 也做多任務(wù)處理 。 多任務(wù)處理的作用是協(xié)調(diào)和切換多個(gè)任務(wù)依次享用 CPU 。多任務(wù)處理最大化 CPU 的功能同時(shí)會(huì)讓我們感覺(jué)是多個(gè) CPU 在同時(shí)運(yùn)行。多任務(wù)處理也有利于處理模塊化的應(yīng)用 。 多任務(wù)處理一個(gè)最重要的方面在于它允許程序員管
理復(fù)雜的實(shí)時(shí)應(yīng)用 。 在多任務(wù)處理中程序員可以簡(jiǎn)單的維護(hù)和升級(jí)產(chǎn)品。
uC/OS-III 是一個(gè)搶占式內(nèi)核 , 這意味著 uC/OS-III 總是執(zhí)行最重要的就緒任務(wù),如圖 1-2 。
0.png (86.16 KB, 下載次數(shù): 179)
下載附件
2018-4-26 16:06 上傳
F1-2 ( 1 ) 一個(gè)低優(yōu)先級(jí)的任務(wù)正在被執(zhí)行
F1-2 ( 2 )發(fā)生一個(gè)中斷, CPU 轉(zhuǎn)向 ISR
F1-2 ( 3 ) ISR 響應(yīng)中斷請(qǐng)求設(shè)備 , 但是 ISR 只做非常少的工作 。 ISR應(yīng)該標(biāo)記或發(fā)送消息到一個(gè)高優(yōu)先級(jí)的任務(wù) , 讓中斷能夠快速處理完畢 。 例如 , 如果一個(gè)中斷來(lái)自于以太網(wǎng)控制器 , ISR 標(biāo)記任務(wù) , 在任務(wù)級(jí)響應(yīng)以太網(wǎng)控制器。
F1-2 ( 4 ) 當(dāng) ISR 執(zhí)行完畢 , uC/OS-III 注意到 ISR 創(chuàng)建的一個(gè)更高優(yōu)先級(jí)的任務(wù)就緒。 uC/OS-III 將不會(huì)返回到中斷前的任務(wù),它會(huì)切換到這個(gè)更高優(yōu)先級(jí)的任務(wù)。
F1-2 ( 5 )高優(yōu)先級(jí)任務(wù)執(zhí)行必要的處理答復(fù)中斷請(qǐng)求設(shè)備。
F1-2 ( 6 )當(dāng)高優(yōu)先級(jí)任務(wù)完成時(shí),返回原任務(wù)中斷前的代碼。
F1-2 ( 7 )原任務(wù)在它被中斷的地方開始執(zhí)行。
uC/OS-III 內(nèi)核也負(fù)責(zé)管理任務(wù)間的交流,系統(tǒng)的資源(內(nèi)存 和I/O ) 。
系統(tǒng)中加入內(nèi)核需要額外的支出,因?yàn)閮?nèi)核提供服務(wù)時(shí)需要時(shí)間去處理 。 大多數(shù)的額外支出取決于服務(wù)的調(diào)用頻繁度 。 在一個(gè)優(yōu)秀的設(shè)計(jì)中,內(nèi)核占用 CPU 的時(shí)間介于 2% 到 4% 之間。因?yàn)?uC/OS-II I是一個(gè)軟件,添加到目標(biāo)系統(tǒng)中需要額外的 ROM 和 RAM 。低檔的單片機(jī)很有可能不支持像 uC/OS-III 那樣的實(shí)時(shí)內(nèi)核 , 因?yàn)樗挥泻苌俚?RAM 可供訪問(wèn)。 uC/OS-III 內(nèi)核需要 1K 到 4K 之間 的RAM , 加上每個(gè)任務(wù)自己所需的堆?臻g 。 至少有 4K 大小 RAM 的處理器才有可能成功移植 uC/OS-III 。
最后,為了更好地使用 CPU , uC/OS-III 提供了大約 70 種常用的服務(wù)。當(dāng)用過(guò)像 uC/OS-III 那樣的具有實(shí)時(shí)內(nèi)核的系統(tǒng)后,你將不會(huì)再去使用前后臺(tái)系統(tǒng)了。
1-3 實(shí)時(shí)系統(tǒng) RTOS
一個(gè)實(shí)時(shí)系統(tǒng)通常包括一個(gè)實(shí)時(shí)內(nèi)核以及其他高級(jí)的服務(wù) , 例如 :文件管理 , 堆棧協(xié)議 , 圖形用戶接口等等 。 大多數(shù)服務(wù)都是跟 I/O 有關(guān)的。Micrium 提供了 RTOS 一套完整的組件 , 包括 uC/FS 、 uC/TCP-IP 、uC/GUI 、 uC/USB 等 。 這些組件大部分都可以單獨(dú)執(zhí)除了 uC/TCP-IP 。實(shí)時(shí)內(nèi)核在應(yīng)用中不是必須的 。 事實(shí)上 , 用戶可以單獨(dú)選擇您的應(yīng)用所需用的組件。詳情和購(gòu)買請(qǐng)聯(lián)系 Micrium 。
1-4 uC/OS-III
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)核中所沒(méi)有的 。 比如能在運(yùn)行時(shí)測(cè)量運(yùn)行性能 , 直接得發(fā)送信號(hào)或消息給任務(wù) , 任務(wù)能同時(shí)等待多個(gè)信號(hào)量和消息隊(duì)列。
以下列出 uC/OS-III 的特點(diǎn):
源代碼 : uC/OS-III 完全根據(jù) ANSI-C 標(biāo)準(zhǔn)寫的。代碼的規(guī)范 是Micrium 團(tuán)隊(duì)的一種文化 。 雖然很多商業(yè)內(nèi)核供應(yīng)商提供他們產(chǎn)品的源代碼 , 但是這些產(chǎn)品很有可能是笨重且難以利用的 。 除非代碼嚴(yán)格地遵循標(biāo)準(zhǔn)并且產(chǎn)品有完整的帶例子的說(shuō)明書以展示代碼是怎樣工作的。通過(guò)這本書,你將會(huì)對(duì) uC/OS-III 內(nèi)部的工作情況有一個(gè)很深的了解。應(yīng)用程序接口 ( API ) : uC/OS-III 是很直觀的 。 如果你熟悉類似的編碼規(guī)范 , 你能輕松地知道函數(shù)名所對(duì)應(yīng)的服務(wù) , 以及需要怎樣的參數(shù) 。 例如 : 指向?qū)ο蟮闹羔樛ǔJ堑谝粋(gè)參數(shù) , 指向錯(cuò)誤代碼的指針
通常是最后一個(gè)參數(shù)。
搶占式多任務(wù)處理 : uC/OS-III 是一個(gè)搶占式多任務(wù)處理內(nèi)核 , 因此, uC/OS-III 正在運(yùn)行的經(jīng)常是最重要的就緒任務(wù)。時(shí)間片輪轉(zhuǎn)調(diào)度 : uC/OS-III 允許多個(gè)任務(wù)擁有相同的優(yōu)先級(jí) 。 當(dāng)多個(gè)相同優(yōu)先級(jí)的任務(wù)就緒時(shí),并且這個(gè)優(yōu)先級(jí)是目前最高的。uC/OS-III 會(huì)分配用戶定義的時(shí)間片給每個(gè)任務(wù)去運(yùn)行。每個(gè)任務(wù)可以定義不同的時(shí)間片。當(dāng)任務(wù)用不完時(shí)間片時(shí)可以讓出 CPU 給另一個(gè)任務(wù)。
快速響應(yīng)中斷: uC/OS-III 有一些內(nèi)部的數(shù)據(jù)結(jié)構(gòu)和變量。
uC/OS-III 保護(hù)臨界段可以通過(guò)鎖定調(diào)度器代替關(guān)中斷。因此關(guān)中斷的時(shí)間會(huì)非常少。這樣就使 uC/OS-III 可以響應(yīng)一些非?斓闹袛嘣戳。
確定性的 : uC/OS-III 的中斷響應(yīng)時(shí)間是可確定的 , uC/OS-III 提供
的大部分服務(wù)的執(zhí)行時(shí)間也是可確定的。
可擴(kuò)展的 :根據(jù)應(yīng)用的需求,代碼大小可以被調(diào)整。 編譯時(shí) 通過(guò)調(diào)整 uC/OS-II I 源代碼中的大 約 4 0 個(gè) #define( 見 OS_CFG.H) 可以在添加或移除一些功能。 uC/OS-III 的服務(wù)還提供一些實(shí)時(shí)檢查功能。特別的, uC/OS-III 能檢傳遞的參數(shù)是否為 NULL 指針, ISR 是否就緒了任務(wù)級(jí)服務(wù) 。 參數(shù)有允許范圍 , 指定選項(xiàng)都是有用的 。 檢測(cè)功能可以被關(guān)閉(在編譯時(shí))以提供更好的性能和縮減代碼大小。實(shí)際上 ,可擴(kuò)展的 uC/OS-III 支持更廣泛的應(yīng)用和項(xiàng)目。易移植的 : uC/OS-III 可以被移植到大部分的 CPU 架構(gòu)中。大部分的支持 uC/OS-II 的器件通過(guò)改動(dòng)就能支持 uC/OS-III 。而 uC/OS-I I已經(jīng)移植到 45 種 CPU 架構(gòu)中了。
可固化的 : uC/OS-III 專為嵌入式系統(tǒng)設(shè)計(jì) , 它可以跟應(yīng)用程序代碼一起被固化。
可實(shí)時(shí)配置的: uC/OS-III 允許用戶在運(yùn)行時(shí)配置內(nèi)核。特別的 ,所有的內(nèi)核對(duì)象如任務(wù)、堆棧、信號(hào)量、事件標(biāo)志組、消息隊(duì)列 、 消息、互斥信號(hào)量、內(nèi)存分區(qū)、軟件定時(shí)器等都是在運(yùn)行時(shí)分配的 , 以免在編譯時(shí)的過(guò)度分配。
任務(wù)數(shù)無(wú)限制 : uC/OS-III 對(duì)任務(wù)數(shù)量無(wú)限制 。 實(shí)際上 , 任務(wù)的數(shù)量限制于處理器能提供的內(nèi)存大小 。 每一個(gè)任務(wù)需要有自己的堆?臻g, uC/OS-III 在運(yùn)行時(shí)監(jiān)控任務(wù)堆棧的生長(zhǎng)。 uC/OS-III 對(duì)任務(wù)的大小無(wú)限制,
優(yōu)先級(jí)數(shù)無(wú)限制 : uC/OS-III 對(duì)優(yōu)先級(jí)的數(shù)量無(wú)限制 。 然而 , 配置uC/OS-III 的優(yōu)先級(jí)在 32 到 256 之間已經(jīng)滿足大多數(shù)的應(yīng)用了。內(nèi)核對(duì)象數(shù)無(wú)限制: uC/OS-III 支持任何數(shù)量的任務(wù)、信號(hào)量 、 互斥信號(hào)量 、 事件標(biāo)志組 、 消息隊(duì)列 、 軟件定時(shí)器 、 內(nèi)存分區(qū) 。 用戶在運(yùn)行時(shí)分配所有的內(nèi)核對(duì)象。
服務(wù) : uC/OS-III 提供了高檔實(shí)時(shí)內(nèi)核所需要的所有功能 , 例如任務(wù)管理、時(shí)間管理、信號(hào)量、事件標(biāo)志組、互斥信號(hào)量、消息隊(duì)列 、軟件定時(shí)器、內(nèi)存分區(qū)等;コ庑盘(hào)量( Mutexes Mutexes Mutexes Mutexes ) : 互斥信號(hào)量用于資源管理。它是一個(gè)內(nèi)置優(yōu)先級(jí)的特殊類型信號(hào)量 , 用于消除優(yōu)先級(jí)反轉(zhuǎn) 。 互斥信號(hào)量可以被嵌套,因此,任務(wù)可申請(qǐng)同一個(gè)互斥信號(hào)量多達(dá) 250 次。當(dāng)然 , 互斥信號(hào)量的占有者需要釋放同等次數(shù)。
嵌套的任務(wù)停止 : uC/OS-III 允許任務(wù)停止自身或者停止另外的任務(wù)。停止一個(gè)任務(wù)意味著這個(gè)任務(wù)將不再執(zhí)行直到被其他的任務(wù)恢復(fù) 。 停止可以被嵌套到 250 級(jí) 。 換句話說(shuō) , 一個(gè)任務(wù)可以停止另外的任務(wù)多達(dá) 250 次 。 當(dāng)然 , 這個(gè)任務(wù)必須被恢復(fù)同等次數(shù)才有資格再次獲得 CPU 。
軟件定時(shí)器: 可以定義任意數(shù)量的一次性的、周期性的、或者兩者兼有的定時(shí)器 。 定時(shí)器是倒計(jì)時(shí)的 , 執(zhí)行用戶定義的行為一直到計(jì)數(shù)減為 0 。 每一個(gè)定時(shí)器可以有自己的行為 , 如果一個(gè)定時(shí)器是周期性的,計(jì)數(shù)減為 0 時(shí)會(huì)自動(dòng)重裝計(jì)數(shù)值并執(zhí)行用戶定義的行為。
掛起多個(gè)對(duì)象 : uC/OS-III 允許任務(wù)等待多個(gè)事件的發(fā)生 。 特別的 ,任務(wù)可以同時(shí)等待多個(gè)信號(hào)量和消息隊(duì)列被提交 。 等待中的任務(wù)在事件發(fā)生的時(shí)候被喚醒。
任務(wù)信號(hào)量 : uC/OS-III 允許 ISR 或者任務(wù)直接地發(fā)送信號(hào)量給其它任務(wù) 。 這樣就避免了必須產(chǎn)生一個(gè)中間級(jí)內(nèi)核對(duì)象如一個(gè)信號(hào)量或者事件標(biāo)志組只為了標(biāo)記一個(gè)任務(wù)。提高了內(nèi)核性能。任務(wù)消息 : uC/OS-III 允許 ISR 或者任務(wù)直接發(fā)送消息到另一個(gè)任務(wù)。這樣就避免產(chǎn)生一個(gè)消息隊(duì)列,提高了內(nèi)核性能。
任務(wù)寄存器 :每一個(gè)任務(wù)可以擁有用戶可定義的任務(wù)寄存器,不同于 CPU 寄存器。
錯(cuò)誤檢測(cè) : uC/OS-III 能檢測(cè)指針是否為 NULL 、 在 ISR 中調(diào)用的任務(wù)級(jí)服務(wù)是否允許 、 參數(shù)在允許范圍內(nèi) 、 配置選項(xiàng)的有效性 、 函數(shù)的執(zhí)行結(jié)果等。每一個(gè) uC/OS-III 的 API 函數(shù)返回一個(gè)對(duì)應(yīng)于函數(shù)調(diào)用結(jié)果的錯(cuò)誤代號(hào)。
內(nèi)置的性能測(cè)量 : uC/OS-III 有內(nèi)置性能測(cè)量功能 。 能測(cè)量每一個(gè)任務(wù)的執(zhí)行時(shí)間 , 每個(gè)任務(wù)的堆棧使用情況,任務(wù)的執(zhí)行次數(shù), CP U的使用情況 , ISR 到任務(wù)的切換時(shí)間 , 任務(wù)到任務(wù)的切換時(shí)間 , 列表中的峰值數(shù),關(guān)中斷、鎖調(diào)度器平均時(shí)間等。
可優(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)先級(jí)調(diào)度法則可以通過(guò)編寫一些匯編語(yǔ)言而獲益于一些 特 殊 的 指 令 如 位 設(shè) 置 、 位 清 除 、 計(jì) 數(shù) 清 零 指 令( CLZ ) ,find-first-one(FF1) 指令。
死鎖預(yù)防 : uC/OS-III 中所有的掛起服務(wù)都可以有時(shí)間限制 , 預(yù)防死鎖。
任務(wù)級(jí)的時(shí)基處理 : uC/OS-III 有時(shí)基任務(wù),時(shí)基 ISR 觸發(fā)時(shí)基任務(wù)。 uC/OS-III 使用了哈希列表結(jié)構(gòu),可以大大減少處理延時(shí)和任務(wù)超時(shí)所產(chǎn)生的開支。
用戶可定義的鉤子函數(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)用。
時(shí)間戳 :為了測(cè)量時(shí)間, uC/OS-III 需要一個(gè) 16 位或者 32 位的時(shí)時(shí)間戳計(jì)數(shù)器。這個(gè)計(jì)數(shù)器值可以在運(yùn)行時(shí)被讀取以測(cè)量時(shí)間 。 例如 : 當(dāng) ISR 提交消息到任務(wù)時(shí) , 時(shí)間戳計(jì)數(shù)器自動(dòng)讀取并保存作為消息 。 當(dāng)接收者接收到這條消息 , 時(shí)間戳被提供在消息內(nèi) 。 通過(guò)讀取現(xiàn)在的時(shí)間戳,消息的響應(yīng)時(shí)間可以被確定。
嵌入的內(nèi)核調(diào)試器 : 這個(gè)功能允許內(nèi)核調(diào)試器查看 uC/OS-III 的變量和數(shù)據(jù)結(jié)構(gòu)通過(guò)一個(gè)用戶定義的通道 。 (但是只能在調(diào)試器遇到斷點(diǎn)的時(shí)候查看 ) 。 uC/OS-III 內(nèi)核也支持 uC/Probe ( 探針 ) 在運(yùn)行時(shí)顯示信息。
對(duì)象名稱 : 每個(gè) uC/OS-III 的內(nèi)核對(duì)象有一個(gè)相關(guān)聯(lián)的名字 。 這樣就能很容易的識(shí)別出對(duì)象所指定的作用 。 分配一個(gè) ASCII 碼的名字給任務(wù) 、 信號(hào)量 、 互斥信號(hào)量 、 事件標(biāo)志組 、 消息隊(duì)列 、 內(nèi)存塊 、 軟件定時(shí)器。對(duì)象的名字長(zhǎng)度沒(méi)有限制,但是必須以空字符結(jié)束。
0.png (66.98 KB, 下載次數(shù): 186)
下載附件
2018-4-26 16:09 上傳
完整的pdf格式文檔51黑下載地址(共316頁(yè)):
uCOS-III中文說(shuō)明文檔.pdf
(5.31 MB, 下載次數(shù): 907)
2018-4-26 08:36 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|