第二章uc-os概述__嵌入式操作系統(tǒng)_第1頁(yè)
第二章uc-os概述__嵌入式操作系統(tǒng)_第2頁(yè)
第二章uc-os概述__嵌入式操作系統(tǒng)_第3頁(yè)
第二章uc-os概述__嵌入式操作系統(tǒng)_第4頁(yè)
第二章uc-os概述__嵌入式操作系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、嵌入式操作系統(tǒng)uc/os概述2.1 uc/os簡(jiǎn)介簡(jiǎn)介2.2 uC/OS-II工作原理工作原理2.3 uC/OS-II基本系統(tǒng)服務(wù)基本系統(tǒng)服務(wù)2.4 uC/OS-II體系結(jié)構(gòu)體系結(jié)構(gòu)2.5 uC/OS-II移植移植2.6 uC/OS-II開發(fā)開發(fā)2.1 uc/os簡(jiǎn)介u: Micro C:controluC/OS : 適合于小的、控制器的操作系統(tǒng)小巧公開源代碼,詳細(xì)的注解可剝奪實(shí)時(shí)內(nèi)核可移植性強(qiáng)多任務(wù)多任務(wù) uC/OS-II美國(guó)人Jean Labrosse 1992年編寫的嵌入式多任務(wù)實(shí)時(shí)操作系統(tǒng)應(yīng)用面覆蓋了諸多領(lǐng)域,如照相機(jī)、醫(yī)療器械、音響設(shè)備、發(fā)動(dòng)機(jī)控制、高速公路電話系統(tǒng)、自動(dòng)提款機(jī)等 通

2、過了美國(guó)FAA(美國(guó)航空管理委員會(huì) )認(rèn)證,可以運(yùn)行在諸如航天器等對(duì)安全要求極為苛刻的系統(tǒng)之上www.uCOS-II.comuC/OS-IIuC/OS-II是用C語(yǔ)言和匯編語(yǔ)言編寫C/OS-II 具有執(zhí)行效率高、占用空間小、實(shí)時(shí)性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn), 最小內(nèi)核可編譯至 2KB 。C/OS-II 已經(jīng)移植到了幾乎所有知名的CPU 上。uC/OS-II目標(biāo)是實(shí)現(xiàn)一個(gè)基于優(yōu)先級(jí)調(diào)度的搶占式的實(shí)時(shí)內(nèi)核,并在這個(gè)內(nèi)核之上提供最基本的系統(tǒng)服務(wù),如信號(hào)量,郵箱,消息隊(duì)列,內(nèi)存管理,中斷管理等。uC/OS-II 體系結(jié)構(gòu)2.2 uC/OS-II工作原理uC/OS-II是一種基于優(yōu)先級(jí)的可搶先的硬實(shí)時(shí)內(nèi)核

3、。在uC/OS-II里,每個(gè)任務(wù)都有一個(gè)任務(wù)控制塊(Task Control Block),這是一個(gè)比較復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。在任務(wù)控制塊的偏移為0的地方,存儲(chǔ)著一個(gè)指針,它記錄了所屬任務(wù)的專用堆棧地址。2.2 uC/OS-II工作原理在uC/OS-II內(nèi),每個(gè)任務(wù)都有自己的專用堆棧,彼此之間不能侵犯。這點(diǎn)要求程序員再他們的程序中保證。一般的做法是把他們申明成靜態(tài)數(shù)組。而且要申明成OS_STK類型。當(dāng)任務(wù)有了自己的堆棧,那么就可以將每一個(gè)任務(wù)堆棧在那里記錄到前面談到的任務(wù)控制塊偏移為0的地方。2.2 uC/OS-II工作原理以后每當(dāng)發(fā)生任務(wù)切換,系統(tǒng)必然會(huì)先進(jìn)入一個(gè)中斷,這一般是通過軟中斷或者時(shí)鐘中

4、斷實(shí)現(xiàn)。然后系統(tǒng)會(huì)先把當(dāng)前任務(wù)的堆棧地址保存起來,緊接著恢復(fù)要切換的任務(wù)的堆棧地址。由于那個(gè)任務(wù)的堆棧里一定也存的是地址(還記得我們前面說過的,每當(dāng)發(fā)生任務(wù)切換,系統(tǒng)必然會(huì)先進(jìn)入一個(gè)中斷,而一旦中斷CPU就會(huì)把地址壓入堆棧),這樣,就達(dá)到了修改PC為下一個(gè)任務(wù)的地址的目的。2.3 uC/OS-II基本的系統(tǒng)服務(wù) 任務(wù)調(diào)度任務(wù)調(diào)度 任務(wù)間同步與通信任務(wù)間同步與通信 內(nèi)存管理內(nèi)存管理 時(shí)間管理時(shí)間管理 任務(wù)管理任務(wù)管理任務(wù)管理uC/OS-II 中最多可以支持64 個(gè)任務(wù),分別對(duì)應(yīng)優(yōu)先級(jí)063,其中0 為最高優(yōu)先級(jí)。63為最低級(jí),系統(tǒng)保留了4個(gè)最高優(yōu)先級(jí)的任務(wù)和4個(gè)最低優(yōu)先級(jí)的任務(wù),所有用戶可以使用

5、的任務(wù)數(shù)有56個(gè)。任務(wù)管理uC/OS-II提供了任務(wù)管理的各種函數(shù)調(diào)用,包括創(chuàng)建任務(wù),刪除任務(wù),改變?nèi)蝿?wù)的優(yōu)先級(jí),任務(wù)掛起和恢復(fù)等。系統(tǒng)初始化時(shí)會(huì)自動(dòng)產(chǎn)生兩個(gè)任務(wù):一個(gè)是空閑任務(wù),它的優(yōu)先級(jí)最低,該任務(wù)僅給一個(gè)整形變量做累加運(yùn)算;另一個(gè)是系統(tǒng)任務(wù),它的優(yōu)先級(jí)為次低,該任務(wù)負(fù)責(zé)統(tǒng)計(jì)當(dāng)前cpu的利用率。時(shí)間管理uC/OS-II的時(shí)間管理是通過定時(shí)中斷來實(shí)現(xiàn)的,該定時(shí)中斷一般為10毫秒或100毫秒發(fā)生一次,時(shí)間頻率取決于用戶對(duì)硬件系統(tǒng)的定時(shí)器編程來實(shí)現(xiàn)。中斷發(fā)生的時(shí)間間隔是固定不變的,該中斷也成為一個(gè)時(shí)鐘節(jié)拍。uC/OS-II要求用戶在定時(shí)中斷的服務(wù)程序中,調(diào)用系統(tǒng)提供的與時(shí)鐘節(jié)拍相關(guān)的系統(tǒng)函數(shù),例

6、如中斷級(jí)的任務(wù)切換函數(shù),系統(tǒng)時(shí)間函數(shù)。內(nèi)存管理在ANSI C中是使用malloc和free兩個(gè)函數(shù)來動(dòng)態(tài)分配和釋放內(nèi)存。但在嵌入式實(shí)時(shí)系統(tǒng)中,多次這樣的操作會(huì)導(dǎo)致內(nèi)存碎片,且由于內(nèi)存管理算法的原因,malloc和free的執(zhí)行時(shí)間也是不確定。uC/OS-II中把連續(xù)的大塊內(nèi)存按分區(qū)管理。每個(gè)分區(qū)中包含整數(shù)個(gè)大小相同的內(nèi)存塊,但不同分區(qū)之間的內(nèi)存塊大小可以不同。用戶需要?jiǎng)討B(tài)分配內(nèi)存時(shí),系統(tǒng)選擇一個(gè)適當(dāng)?shù)姆謪^(qū),按塊來分配內(nèi)存。釋放內(nèi)存時(shí)將該塊放回它以前所屬的分區(qū),這樣能有效解決碎片問題,同時(shí)執(zhí)行時(shí)間也是固定的。任務(wù)間通信與同步同步對(duì)象同步對(duì)象事件事件消息隊(duì)列消息隊(duì)列信號(hào)量信號(hào)量郵箱郵箱任務(wù)調(diào)度uC

7、/OS-II 采用的是可剝奪型實(shí)時(shí)多任務(wù)內(nèi)核。可剝奪型的實(shí)時(shí)內(nèi)核在任何時(shí)候都運(yùn)行就緒了的最高優(yōu)先級(jí)的任務(wù)。uC/os-II的任務(wù)調(diào)度是完全基于任務(wù)優(yōu)先級(jí)的搶占式調(diào)度,也就是最高優(yōu)先級(jí)的任務(wù)一旦處于就緒狀態(tài),則立即搶占正在運(yùn)行的低優(yōu)先級(jí)任務(wù)的處理器資源。為了簡(jiǎn)化系統(tǒng)設(shè)計(jì),uC/OS-II規(guī)定所有任務(wù)的優(yōu)先級(jí)不同,因?yàn)槿蝿?wù)的優(yōu)先級(jí)也同時(shí)唯一標(biāo)志了該任務(wù)本身任務(wù)調(diào)度任務(wù)調(diào)度將在以下情況下發(fā)生:1) 高優(yōu)先級(jí)的任務(wù)因?yàn)樾枰撤N臨界資源,主動(dòng)請(qǐng)求掛起,讓出處理器,此時(shí)將調(diào)度就緒狀態(tài)的低優(yōu)先級(jí)任務(wù)獲得執(zhí)行,這種調(diào)度也稱為任務(wù)級(jí)的上下文切換。2) 高優(yōu)先級(jí)的任務(wù)因?yàn)闀r(shí)鐘節(jié)拍到來,在時(shí)鐘中斷的處理程序中,內(nèi)核

8、發(fā)現(xiàn)高優(yōu)先級(jí)任務(wù)獲得了執(zhí)行條件(如休眠的時(shí)鐘到時(shí)),則在中斷態(tài)直接切換到高優(yōu)先級(jí)任務(wù)執(zhí)行。這種調(diào)度也稱為中斷級(jí)的上下文切換。任務(wù)調(diào)度最高優(yōu)先級(jí)任務(wù)最高優(yōu)先級(jí)任務(wù)的尋找的尋找通過建立就緒列表實(shí)現(xiàn)u C / O S 中的每一個(gè)任務(wù)都有獨(dú)立的堆??臻g,并有一個(gè)稱為任務(wù)控制塊TCB(Task Control Block)的數(shù)據(jù)結(jié)構(gòu),其中第一個(gè)成員變量就是保存的任務(wù)堆棧指針。調(diào)度工作調(diào)度工作任務(wù)切換任務(wù)切換任務(wù)調(diào)度模塊首先用變量OSTCBHighRdy 記錄當(dāng)前最高級(jí)就緒任務(wù)的TCB 地址,然后調(diào)用OS_TASK_SW()函數(shù)來進(jìn)行任務(wù)切換2.4 uc/OS-II內(nèi)核結(jié)構(gòu)CPU移植移植核心核心任務(wù)任務(wù)處

9、理處理時(shí)間時(shí)間處理處理任務(wù)同步任務(wù)同步與通信與通信內(nèi)核結(jié)構(gòu)內(nèi)核結(jié)構(gòu)uc/OS-II內(nèi)核結(jié)構(gòu)內(nèi)核結(jié)構(gòu)核心部分(OSCore.c) 核心部分(OSCore.c) 是操作系統(tǒng)的處理核心,包括操作系統(tǒng)初始化、操作系統(tǒng)運(yùn)行、中斷進(jìn)出的前導(dǎo)、時(shí)鐘節(jié)拍、任務(wù)調(diào)度、事件處理等多部分。能夠維持系統(tǒng)基本工作的部分都在這里任務(wù)處理部分(OSTask.c)任務(wù)處理部分(OSTask.c) 任務(wù)處理部分中的內(nèi)容都是與任務(wù)的操作密切相關(guān)的。包括任務(wù)的建立、刪除、掛起、恢復(fù)等等。因?yàn)镃/OS-II是以任務(wù)為基本單位調(diào)度的,所以這部分內(nèi)容也相當(dāng)重要。時(shí)鐘部分(OSTime.c) 時(shí)鐘部分(OSTime.c) C/OS-II中

10、的最小時(shí)鐘單位是timetick(時(shí)鐘節(jié)拍)。任務(wù)延時(shí)等操作是在這里完成的。任務(wù)同步和通信部分 任務(wù)同步和通信部分 ,包括信號(hào)量、郵箱、郵箱隊(duì)列、事件標(biāo)志等部分;主要用于任務(wù)間的互相聯(lián)系和對(duì)臨界資源的訪問。OS_MUTEX.C, OS_MBOX.C, OS_SEM.C, OS_Q.C.CPU移植與CPU的接口部分 是指C/OS-II針對(duì)所使用的CPU的移植部分。由于C/OS-II是一個(gè)通用性的操作系統(tǒng),所以對(duì)于關(guān)鍵問題上的實(shí)現(xiàn),還是需要根據(jù)具體CPU的具體內(nèi)容和要求作相應(yīng)的移植。這部分內(nèi)容由于牽涉到SP等系統(tǒng)指針,所以通常用匯編語(yǔ)言編寫。主要包括中斷級(jí)任務(wù)切換的底層實(shí)現(xiàn)、任務(wù)級(jí)任務(wù)切換的底層實(shí)

11、現(xiàn)、時(shí)鐘節(jié)拍的產(chǎn)生和處理、中斷的相關(guān)處理部分等內(nèi)容。2.5 uC/OS-II移植移植uC/OS-的大部分代碼是用ANSI C寫成的,只有與處理器硬件相關(guān)的一部分代碼用匯編語(yǔ)言編寫。所以u(píng)C/OS-的移植性很強(qiáng),可以在絕大多數(shù)8位、16位、32位微處理器、數(shù)字信號(hào)處理器上運(yùn)行。uC/OS-的移植并不復(fù)雜,只要編寫4個(gè)匯編語(yǔ)言的函數(shù)、6個(gè)C函數(shù)再定義3個(gè)宏和1個(gè)常量,這些宏和函數(shù)都非常簡(jiǎn)單,其中的5個(gè)C函數(shù)甚至只需聲明不必包含代碼。2.5 uC/OS-II移植移植用戶可以根據(jù)需要自己編寫移植代碼。uC/OS-的網(wǎng)站上(www.uCOS-II.com)有針對(duì)不同微處理器的移植代碼可供下載。目前網(wǎng)站上

12、提供的移植實(shí)例包括Intel公司的80 x86、8051、80196等,Motorola公司的PowerPC、68K、CPU32等,TI公司的TMS320系列,Zilog公司的z-80、z-180,還包括Analog Device公司、ARM公司、日立公司、三菱公司、飛利浦公司和西門子公司的各種微處理器。2.6 uC/OS-II開發(fā)開發(fā)軟件開發(fā)環(huán)境 Embest IDEEmbest IDE是一個(gè)高度集成的圖形界面操作環(huán)境,包含編輯器、編譯器、匯編器、鏈接器、調(diào)試器等工具,其界面同Microsoft Visual Studio類似。Embest IDE支持ARM、Motorola等多家公司不同系

13、列的處理器,對(duì)于ARM系列處理器,目前支持到ARM9系列,包括ARM7、ARM5等低系列芯片。Embest IDE運(yùn)行的主機(jī)環(huán)境為Windows95/98/NT/Me/2000,支持的開發(fā)語(yǔ)言包括標(biāo)準(zhǔn)C、Embedded C和匯編語(yǔ)言。Embest IDE的所有與處理器和調(diào)試設(shè)備相關(guān)模塊采用即插即用方式,可在同一個(gè)工作區(qū)中同時(shí)管理多個(gè)應(yīng)用軟件和庫(kù)工程,各工程均可配置不同的處理器和仿真器,用戶可在各工程中無縫切換。Embest IDE 工程管理器:圖形化的工程管理工具,負(fù)責(zé)應(yīng)用源程序的文件組織和管理,提供編譯、鏈接、庫(kù)文件的設(shè)置窗口。 源碼編輯器:標(biāo)準(zhǔn)的文本編輯功能,支持語(yǔ)法關(guān)鍵字、關(guān)鍵字色彩顯示等。 編譯工具:集成著名優(yōu)秀自由軟件GNU的GCC編譯器,并經(jīng)過優(yōu)化和嚴(yán)格測(cè)試。 調(diào)試器:源碼級(jí)調(diào)試,提供了圖形和命令行兩種調(diào)試方式,可進(jìn)行斷點(diǎn)設(shè)置、單步執(zhí)行、異常處理,可查看修改內(nèi)存、寄存器、變量等,可查看函數(shù)棧,可進(jìn)行反匯編等。 調(diào)試設(shè)備:Embest JTAG仿真器,一端是一個(gè)DB25的接口,連接到主機(jī)的并行口,另外一端是IDC插頭,連接到目標(biāo)板的JTAG接口。 作業(yè)搭建uc/os的PC機(jī)上開發(fā)環(huán)境。(平臺(tái)不限,V或支持C編譯的開發(fā)環(huán)境都可)。初步熟悉uc/os-III的代碼結(jié)構(gòu)和嘗試閱讀源碼。1.uC/OS-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論