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

下載本文檔

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

文檔簡介

1、嵌入式操作系統(tǒng)uc/os概述 2.1 uc/os簡介簡介 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簡介 u: Micro C:control uC/OS : 適合于小的、控制器的操作系統(tǒng) 小巧 公開源代碼,詳細(xì)的注解 可剝奪實(shí)時內(nèi)核 可移植性強(qiáng) 多任務(wù)多任務(wù) uC/OS-II 美國人Jean Labrosse 1992年編寫的 嵌入式多任務(wù)實(shí)時操作系統(tǒng) 應(yīng)用面覆蓋了諸多領(lǐng)域,如照相機(jī)、醫(yī)療器械、 音響設(shè)備、發(fā)動機(jī)控制

2、、高速公路電話系統(tǒng)、 自動提款機(jī)等 通過了美國FAA(美國航空管理委員會 )認(rèn)證, 可以運(yùn)行在諸如航天器等對安全要求極為苛刻 的系統(tǒng)之上 www.uCOS-II.com uC/OS-II uC/OS-II是用C語言和匯編語言編寫 C/OS-II 具有執(zhí)行效率高、占用空間小、 實(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)一個基于優(yōu)先級調(diào) 度的搶占式的實(shí)時內(nèi)核,并在這個內(nèi)核之 上提供最基本的系統(tǒng)服務(wù),如信號量,郵 箱,消息隊(duì)列,內(nèi)存管理,中斷管理等。 uC/OS-II 體系結(jié)構(gòu) 2.2 uC/O

3、S-II工作原理 uC/OS-II是一種基于優(yōu)先級的可搶先的硬 實(shí)時內(nèi)核。 在uC/OS-II里,每個任務(wù)都有一個任務(wù)控制 塊(Task Control Block),這是一個比較復(fù) 雜的數(shù)據(jù)結(jié)構(gòu)。在任務(wù)控制塊的偏移為0的 地方,存儲著一個指針,它記錄了所屬任務(wù)的 專用堆棧地址。 2.2 uC/OS-II工作原理 在uC/OS-II內(nèi),每個任務(wù)都有自己的專用堆 棧,彼此之間不能侵犯。這點(diǎn)要求程序員再 他們的程序中保證。一般的做法是把他們申 明成靜態(tài)數(shù)組。而且要申明成OS_STK類 型。 當(dāng)任務(wù)有了自己的堆棧,那么就可以將每一 個任務(wù)堆棧在那里記錄到前面談到的任務(wù)控 制塊偏移為0的地方。 2.2

4、 uC/OS-II工作原理 以后每當(dāng)發(fā)生任務(wù)切換,系統(tǒng)必然會先進(jìn)入 一個中斷,這一般是通過軟中斷或者時鐘中 斷實(shí)現(xiàn)。然后系統(tǒng)會先把當(dāng)前任務(wù)的堆棧地 址保存起來,緊接著恢復(fù)要切換的任務(wù)的堆 棧地址。由于那個任務(wù)的堆棧里一定也存的 是地址(還記得我們前面說過的,每當(dāng)發(fā)生 任務(wù)切換,系統(tǒng)必然會先進(jìn)入一個中斷,而一 旦中斷CPU就會把地址壓入堆棧),這樣,就 達(dá)到了修改PC為下一個任務(wù)的地址的目的。 2.3 uC/OS-II基本的系統(tǒng)服務(wù) 任務(wù)調(diào)度任務(wù)調(diào)度 任務(wù)間同步與通信任務(wù)間同步與通信 內(nèi)存管理內(nèi)存管理 時間管理時間管理 任務(wù)管理任務(wù)管理 任務(wù)管理 uC/OS-II 中最多可以支持64 個任務(wù),

5、分別對應(yīng)優(yōu)先級063,其中0 為最高優(yōu) 先級。63為最低級,系統(tǒng)保留了4個最高 優(yōu)先級的任務(wù)和4個最低優(yōu)先級的任務(wù), 所有用戶可以使用的任務(wù)數(shù)有56個。 任務(wù)管理 uC/OS-II提供了任務(wù)管理的各種函數(shù)調(diào)用, 包括創(chuàng)建任務(wù),刪除任務(wù),改變?nèi)蝿?wù)的優(yōu)先 級,任務(wù)掛起和恢復(fù)等。 系統(tǒng)初始化時會自動產(chǎn)生兩個任務(wù):一個是 空閑任務(wù),它的優(yōu)先級最低,該任務(wù)僅給一 個整形變量做累加運(yùn)算;另一個是系統(tǒng)任務(wù), 它的優(yōu)先級為次低,該任務(wù)負(fù)責(zé)統(tǒng)計(jì)當(dāng)前 cpu的利用率。 時間管理 uC/OS-II的時間管理是通過定時中斷來 實(shí)現(xiàn)的,該定時中斷一般為10毫秒或100 毫秒發(fā)生一次,時間頻率取決于用戶對硬 件系統(tǒng)的定時

6、器編程來實(shí)現(xiàn)。中斷發(fā)生的 時間間隔是固定不變的,該中斷也成為一 個時鐘節(jié)拍。 uC/OS-II要求用戶在定時中斷的服務(wù)程 序中,調(diào)用系統(tǒng)提供的與時鐘節(jié)拍相關(guān)的 系統(tǒng)函數(shù),例如中斷級的任務(wù)切換函數(shù), 系統(tǒng)時間函數(shù)。 內(nèi)存管理 在ANSI C中是使用malloc和free兩個函數(shù)來動 態(tài)分配和釋放內(nèi)存。但在嵌入式實(shí)時系統(tǒng)中,多 次這樣的操作會導(dǎo)致內(nèi)存碎片,且由于內(nèi)存管理 算法的原因,malloc和free的執(zhí)行時間也是不確 定。 uC/OS-II中把連續(xù)的大塊內(nèi)存按分區(qū)管理。每 個分區(qū)中包含整數(shù)個大小相同的內(nèi)存塊,但不同 分區(qū)之間的內(nèi)存塊大小可以不同。用戶需要動態(tài) 分配內(nèi)存時,系統(tǒng)選擇一個適當(dāng)?shù)姆?/p>

7、區(qū),按塊來 分配內(nèi)存。釋放內(nèi)存時將該塊放回它以前所屬的 分區(qū),這樣能有效解決碎片問題,同時執(zhí)行時間 也是固定的。 任務(wù)間通信與同步 同步對象同步對象 事件事件 消息隊(duì)列消息隊(duì)列 信號量信號量 郵箱郵箱 任務(wù)調(diào)度 uC/OS-II 采用的是可剝奪型實(shí)時多任務(wù) 內(nèi)核??蓜儕Z型的實(shí)時內(nèi)核在任何時候都 運(yùn)行就緒了的最高優(yōu)先級的任務(wù)。 uC/os-II的任務(wù)調(diào)度是完全基于任務(wù)優(yōu)先 級的搶占式調(diào)度,也就是最高優(yōu)先級的任 務(wù)一旦處于就緒狀態(tài),則立即搶占正在運(yùn) 行的低優(yōu)先級任務(wù)的處理器資源。 為了簡化系統(tǒng)設(shè)計(jì),uC/OS-II規(guī)定所有 任務(wù)的優(yōu)先級不同,因?yàn)槿蝿?wù)的優(yōu)先級也 同時唯一標(biāo)志了該任務(wù)本身 任務(wù)調(diào)度

8、任務(wù)調(diào)度將在以下情況下發(fā)生: 1) 高優(yōu)先級的任務(wù)因?yàn)樾枰撤N臨界資源,主 動請求掛起,讓出處理器,此時將調(diào)度就緒狀態(tài) 的低優(yōu)先級任務(wù)獲得執(zhí)行,這種調(diào)度也稱為任務(wù) 級的上下文切換。 2) 高優(yōu)先級的任務(wù)因?yàn)闀r鐘節(jié)拍到來,在時鐘 中斷的處理程序中,內(nèi)核發(fā)現(xiàn)高優(yōu)先級任務(wù)獲得 了執(zhí)行條件(如休眠的時鐘到時),則在中斷態(tài)直 接切換到高優(yōu)先級任務(wù)執(zhí)行。這種調(diào)度也稱為中 斷級的上下文切換。 任務(wù)調(diào)度 最高優(yōu)先級任務(wù)最高優(yōu)先級任務(wù) 的尋找的尋找 通過建立就緒列表實(shí)現(xiàn) u C / O S 中的每一個任 務(wù)都有獨(dú)立的堆棧空間 ,并有一個稱為任務(wù)控 制塊TCB(Task Control Block)的數(shù)據(jù)結(jié)構(gòu),其

9、 中第一個成員變量就是 保存的任務(wù)堆棧指針。 調(diào)度工作調(diào)度工作 任務(wù)切換任務(wù)切換 任務(wù)調(diào)度模塊首先用 變量 OSTCBHighRdy 記 錄當(dāng)前最高級就緒任 務(wù)的TCB 地址,然 后調(diào)用 OS_TASK_SW()函 數(shù)來進(jìn)行任務(wù)切換 2.4 uc/OS-II內(nèi)核結(jié)構(gòu) CPU 移植移植 核心核心 任務(wù)任務(wù) 處理處理 時間時間 處理處理 任務(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)、時鐘節(jié)拍、任務(wù)調(diào) 度、事件處理等多部分。能夠

10、維持系統(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)重要。 時鐘部分(OSTime.c) 時鐘部分(OSTime.c) C/OS-II中的最 小時鐘單位是timetick(時鐘節(jié)拍)。任 務(wù)延時等操作是在這里完成的。 任務(wù)同步和通信部分 任務(wù)同步和通信部分 ,包括信號量、郵箱、 郵箱隊(duì)列、事件標(biāo)志等部分;主要用于任 務(wù)間的互相聯(lián)系和對臨界資源的訪問。 OS_MUTEX.C, OS_MBOX

11、.C, OS_SEM.C, OS_Q.C. CPU移植 與CPU的接口部分 是指C/OS-II針對所使用 的CPU的移植部分。由于C/OS-II是一個通用 性的操作系統(tǒng),所以對于關(guān)鍵問題上的實(shí)現(xiàn), 還是需要根據(jù)具體CPU的具體內(nèi)容和要求作相 應(yīng)的移植。 這部分內(nèi)容由于牽涉到SP等系統(tǒng)指針,所以通 常用匯編語言編寫。主要包括中斷級任務(wù)切換 的底層實(shí)現(xiàn)、任務(wù)級任務(wù)切換的底層實(shí)現(xiàn)、時 鐘節(jié)拍的產(chǎn)生和處理、中斷的相關(guān)處理部分等 內(nèi)容。 2.5 uC/OS-II移植移植 uC/OS-的大部分代碼是用ANSI C寫成 的,只有與處理器硬件相關(guān)的一部分代碼 用匯編語言編寫。所以uC/OS-的移植 性很強(qiáng),可

12、以在絕大多數(shù)8位、16位、32 位微處理器、數(shù)字信號處理器上運(yùn)行。 uC/OS-的移植并不復(fù)雜,只要編寫4個 匯編語言的函數(shù)、6個C函數(shù)再定義3個宏 和1個常量,這些宏和函數(shù)都非常簡單, 其中的5個C函數(shù)甚至只需聲明不必包含代 碼。 2.5 uC/OS-II移植移植 用戶可以根據(jù)需要自己編寫移植代碼。 uC/OS-的網(wǎng)站上(www.uCOS-II.com) 有針對不同微處理器的移植代碼可供下載。 目前網(wǎng)站上提供的移植實(shí)例包括Intel公司 的80 x86、8051、80196等,Motorola 公司的PowerPC、68K、CPU32等,TI公 司的TMS320系列,Zilog公司的z-80

13、、z- 180,還包括Analog Device公司、ARM 公司、日立公司、三菱公司、飛利浦公司和 西門子公司的各種微處理器。 2.6 uC/OS-II開發(fā)開發(fā) 軟件開發(fā)環(huán)境 Embest IDE Embest IDE是一個高度集成的圖形界面操作環(huán)境,包 含編輯器、編譯器、匯編器、鏈接器、調(diào)試器等工具, 其界面同Microsoft Visual Studio類似。Embest IDE支持ARM、Motorola等多家公司不同系列的處理 器,對于ARM系列處理器,目前支持到ARM9系列,包 括ARM7、ARM5等低系列芯片。 Embest IDE運(yùn)行的主機(jī)環(huán)境為 Windows95/98/NT

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

溫馨提示

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

評論

0/150

提交評論