嵌入式操作系統(tǒng)教程第四章課件_第1頁
嵌入式操作系統(tǒng)教程第四章課件_第2頁
嵌入式操作系統(tǒng)教程第四章課件_第3頁
嵌入式操作系統(tǒng)教程第四章課件_第4頁
嵌入式操作系統(tǒng)教程第四章課件_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

嵌入式操作系統(tǒng)基礎(chǔ)1第四章嵌入式實時操作系統(tǒng)第四章嵌入式實時操作系統(tǒng)uC/OS-II及其任務(wù)uC/OS-II概述uC/OS-II的任務(wù)uC/OS-II任務(wù)的存儲結(jié)構(gòu)uC/OS-II任務(wù)的狀態(tài)任務(wù)的優(yōu)先級別任務(wù)控制塊任務(wù)堆棧系統(tǒng)任務(wù)臨界區(qū)嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)第四章嵌入式實時操作系統(tǒng)uC/OS-II及其任務(wù)§4.1

uC/OS-II概述一、uC/OS-II的特點2嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)二、uC/OS-II的文件結(jié)構(gòu)1.幾個應(yīng)用程序相關(guān)頭文件(1)includes.h#include

<stdio.h>#include

<string.h>#include

<ctype.h>#include

<stdl.h>#include

<conio.h>#include

<dos.h>#include

<setjmp.h>/*與應(yīng)用程序相關(guān)*/#include

“\software\ucosii\ix86\bc31\os_cpu.h”#include

“os_cfg.h”#include

“software\uscos-ii\source\ucos_ii.h”#include

“software\blocks\pc\bc31\pc.h”由具體應(yīng)用環(huán)境決定3嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)(2)os_cfg.h#defineOS_MAX_EVENTS2//事件總數(shù)#defineOS_MAX_FLAGS5//信號量集總數(shù)#defineOS_MAX_MEM_PART5//內(nèi)存塊數(shù)量#defineOS_MAX_QS2//消息隊列數(shù)量#defineOS_MAX_TASKS50//任務(wù)數(shù)量#defineOS_LOWEST_PRIO52//用戶任務(wù)數(shù)量#defineOS_TASK_IDLE_STK_SIZE512//空閑任務(wù)堆棧長度……#define用OS_TASK_CHANGE_PRIO_EN1//優(yōu)先級修改功能可#defineOS_TASK_CREATE_ENABLE1//任務(wù)創(chuàng)建功能可用……系統(tǒng)裁剪性的實現(xiàn):#if

OS_TASK_CREATE_EXE_EN……

//用戶可代碼#endif4嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)2.幾個系統(tǒng)硬件相關(guān)頭文件(1)os_cpu.hTypedefunsignedcharBOOLEAN;#define

BYTE

INT8S

#define

UBYTE

INT8UTypedefunsignedcharINT8U;TypedefsignedcharINT8S;TypedefunsignedintINT16U;#define

WORD

INT16STypedefsignedintINT16S;TypedefTypedefunsignedsignedlonglongINT32U;INT32U;#define

UWORD

INT16UTypedeffloatFP32;#define

LONG

INT32STypedefdoubleFP64;#define

ULONG

INT32UTypedefunsignedintOS_STK;5TypedefunsignedshortOS_CPU_SR;嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)與系統(tǒng)處理器相關(guān)的宏定義:#define#ifOS_CRITICAL_METHODOS_CRITICAL_METHOD2==1#defineOS_ENTER_CRITICAL()asmCLI#defineOS_EXIT_CRITICAL()asmSTI#endif#ifOS_CRITICAL_METHOD==2#defineOS_ENTER_CRITICAL()asm(PUSHF;

CLI)#defineOS_EXIT_CRITICAL()asmPOPF#endif#ifOS_CRITICAL_METHOD==3#defineOS_ENTER_CRITICAL()(cpu_sr=OSCPUSaveSR())#define

OS_EXIT_CRITICAL()(OSCPURestoreSR(cpu_sr))6#endif嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)3.

內(nèi)核相關(guān)文件三、uC/OS-II的裁剪性typedef

struct

os_tcb

{OS_STK*OSTCBStkPtr;由cfg.h設(shè)定編#if

OS_TASK_CREATE_EXT_EN譯與否(值為1)void*OSTCBExtPtr;OS_STK*OSTCBStkBottom;INT32UOSTCBStkSize;INT16UOSTCBOpt;INT16UOSTCBId;#endif……#if

(OS_Q_EN

&&

(OS_MAX_QS

>=

2))

||

OS_MBOX_EN

||

OS_SEM_ENOS_EVENT*OSTCBEventPtr;#endif由cfg.h設(shè)定編譯與否(值為0)#if

(OS_Q_EN

&&

(OS_MAX_QS

>=

2))

||

OS_MBOX_ENvoid*OSTCBMsg;#endif……#if

OS_TASK_DEL_ENBOOLEANOSTCBDelReq;#endif}

OS_TCB;7嵌入式操作系統(tǒng)基礎(chǔ)8第四章嵌入式實時操作系統(tǒng)§4.2

uC/OS-II任務(wù)1.任務(wù)的統(tǒng)一性與獨立性——總?cè)蝿?wù)與分任務(wù)任務(wù)就是一個無限循環(huán)的C函數(shù)void

YourTask

(void

*pdata)

(1){for

(;;)

{

(2)/*

用戶代碼*/調(diào)用uC/OS-II的某種系統(tǒng)服務(wù):OSMboxPend();OSQPend();OSSemPend();OSTaskDel(OS_PRIO_SELF);OSTaskSuspend(OS_PRIO_SELF);OSTimeDly();OSTimeDlyHMSM();/*

用戶代碼*/}}嵌入式操作系統(tǒng)基礎(chǔ)9第四章嵌入式實時操作系統(tǒng)2.嵌入式實時操作系統(tǒng)對任務(wù)的響應(yīng)

異步事件;周期性事件;同時具有異步和周期特性的時間;嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)§4.3

uC/OS-II任務(wù)的存儲結(jié)構(gòu)任務(wù)控制塊:保存任務(wù)屬性信息。任務(wù)堆棧:保存任務(wù)的工作環(huán)境。任務(wù)程序代碼:任務(wù)執(zhí)行的實體。10嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)為了便于管理,相應(yīng)的任務(wù)控制塊彼此通過自己的指針彼此連接形成一個鏈表。11嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)§4.4

uC/OS-II任務(wù)狀態(tài)12嵌入式操作系統(tǒng)基礎(chǔ)13第四章嵌入式實時操作系統(tǒng)睡眠態(tài)(DORMANT):指任務(wù)駐留在程序空間之中,還沒有交給μC/OS-Ⅱ管理

。就緒態(tài):通過調(diào)用兩個函數(shù)之一:OSTaskCreate()或OSTaskCreateExt()來建立任務(wù),一旦建立任務(wù)就進入就緒態(tài)準備運行。運行態(tài):調(diào)用OSStart()函數(shù)可以啟動任務(wù),即任務(wù)投入運行,它總是啟動擁有最高優(yōu)先級的任務(wù)等待態(tài):正在運行的任務(wù)需要延遲一段時間或等待某事件的發(fā)生,它將放棄讓出處理器進入等待狀態(tài)。中斷態(tài):正在運行的任務(wù)是可以被中斷的,除非該任務(wù)將中斷關(guān)了,或者μC/OS-Ⅱ?qū)⒅袛嚓P(guān)了。被中斷的任務(wù)就進入了中斷服務(wù)態(tài)(ISR)。嵌入式操作系統(tǒng)基礎(chǔ)14第四章嵌入式實時操作系統(tǒng)§4.5

uC/OS-II任務(wù)優(yōu)先級uC/OS-II為硬實時可剝奪型內(nèi)核任務(wù)數(shù)量一定,且擁有全系統(tǒng)唯一優(yōu)先級——OS_LOWEST_PRIOuC/OS系統(tǒng)都系統(tǒng)中最低優(yōu)先級任務(wù)默認嵌入式操作系統(tǒng)基礎(chǔ)15第四章嵌入式實時操作系統(tǒng)typedef

struct

os_tcb

{OS_STK

*OSTCBStkPtr;

//指向任務(wù)堆棧棧頂?shù)闹羔?/p>

#if

OS_TASK_CREATE_EXT_EN#void*OSTCBExtPtr;//指向任務(wù)控制塊擴展的指針OS_STK*OSTCBStkBottom;//指向任務(wù)堆棧棧底的指針I(yè)NT32UOSTCBStkSize;//任務(wù)堆棧的長度INT16UOSTCBOpt;//創(chuàng)建任務(wù)時的選擇項INT16UOSTCBId;//目前,該域未被使用endifstruct

os_tcb

*OSTCBNext;

//指向后一個任務(wù)控制塊的指針struct

os_tcb*OSTCBPrev;//指向前一個任務(wù)控制塊的指針#if(OS_Q_EN

&&(OS_MAX_QS>=2))||

OS_MBOX_EN

||

OS_Sem_ENOS_EVENT

*OSTCBEventPtr;

//指向事件控制塊的指針#endif§4.6

任務(wù)優(yōu)控制塊(TCB)1.任務(wù)控制塊結(jié)構(gòu)定義嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)#if

(OS_Q_EN

&&

(OS_MAX_QS

>=

2))

||

OS_MBOX_ENvoid

*OSTCBMsg;#endifINT16U

OSTCBDly;INT8U

OSTCBStat;INT8U

OSTCBPrio;INT8UINT8UINT8UOSTCBX;OSTCBY;OSTCBBitX;//指向傳遞給任務(wù)消息的指針等到中斷到來減1//任務(wù)等待的時限(節(jié)拍數(shù))//任務(wù)的當前狀態(tài)標志//任務(wù)的優(yōu)先級別//用于快速訪問就緒表的數(shù)據(jù)//用于快速訪問就緒表的數(shù)據(jù)//用于快速訪問就緒表的數(shù)據(jù)INT8U值說OSTC明BBOitSY_;STAT_RDY表示任務(wù)處于就//用緒于狀快態(tài)速O訪S問_S就TA緒T_表SE的M數(shù)表據(jù)示任務(wù)處于等待信號量狀態(tài)OS_STAT_MBOX表示任務(wù)處于等待消息郵箱狀態(tài)#if

OS_TOASS_KS_TDAET_LQ_表EN示任務(wù)處于等待消息隊列狀態(tài)OS_STAT_SUSPEND表示任務(wù)處

BOOLEAN

于被掛起OS狀T態(tài)CBODSe_lSRTeAqT;_MUTEX表示任/務(wù)/請?zhí)幥笥趧h除等任待務(wù)互時斥用型到信的號標量志狀態(tài)#endif}

OS_TCB;16嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)2.空閑任務(wù)塊鏈表(空)任務(wù)塊數(shù)量:系統(tǒng)初始化時建立,數(shù)量由os_cfg.h中參數(shù)OS_MAX_TASKS+OS_N_SYS_TASKS決定.任務(wù)數(shù):文件UCOS_II.H中的常數(shù)OS_N_SYS_TASKS它指明了系統(tǒng)任務(wù)的數(shù)目。17嵌入式操作系統(tǒng)基礎(chǔ)18第四章嵌入式實時操作系統(tǒng)3.任務(wù)鏈表的建立任務(wù)創(chuàng)建函數(shù):

OSTaskCreate()或OSTaskCreateExt()任務(wù)搜索數(shù)組:OSTCBTb[],按優(yōu)先級順序存放任務(wù)控制塊指針。全局變量:OSTCBCur,存放當前占用處理器資源的任務(wù)任務(wù)刪除函數(shù):OSTaskDel(),任務(wù)刪除的實質(zhì)就是資源的回收。嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)19嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)堆棧:按“先進進出(FIFO)”順序組織的存儲空間。堆棧創(chuàng)建§4.7

任務(wù)堆棧一、任務(wù)堆棧的創(chuàng)建static

OS_STK

MyTaskStack[stack_size];OROS_STK

MyTaskStack[stack_size];{OS_STK*pstk;pstk

=

(OS_STK

*)malloc(stack_size);if

(pstk

!=

(OS_STK

*)0)

{/*

確認malloc()能得到足夠地內(nèi)存空間*/INTU8U

OSTaskCreate(void

*pdata);}20}嵌入式操作系統(tǒng)基礎(chǔ)第四章嵌入式實時操作系統(tǒng)任務(wù)創(chuàng)建INT8U

OSTaskCreate(void(*task)(void

*pd),void

*pdata.OS_STK

*ptos,INT8U

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論