




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《嵌入式系統原理與開發》
第19講南京大學計算機系俞建新主講12月15日1南京大學計算機系第1頁第9章嵌入式操作系統概論本講內容實時系統嵌入式操作系統特點和分類RTOS慣用調度算法開啟程序bootloader嵌入式操作系統μC/OS-II
12月15日2南京大學計算機系第2頁9.5嵌入式操作系統μC/OS-IIμC/OS-II主要特點μC/OS-II層次μC/OS-II代碼結構μC/OS-II內核μC/OS-II任務調度μC/OS-II任務切換μC/OS-II中止處理μC/OS-II時間管理μC/OS-II任務間通信μC/OS-II存放管理μC/OS-II移植12月15日3南京大學計算機系第3頁μC/OS-II介紹作者:JeanLabrosse源碼公開嵌入式實時系統已被移植到40各種不一樣CPU上/提供技術服務支持。12月15日4南京大學計算機系第4頁μC/OS-II主要特點可移植性和可確定性絕大部分代碼用ANSIC編寫與處理器硬件相關代碼用匯編語言編寫移植條件 移植目標處理器要有硬件堆棧指針 CPU內容存放器入棧、出棧指令 C編譯器支持內嵌匯編或C可擴展,可連接匯編模塊 關中止、開中止可在C語言中實現12月15日5南京大學計算機系第5頁μC/OS-II主要特點(續1)搶占式多任務
能夠管理64個任務,8個任務是系統任務用戶能夠最多定義56個任務,每個任務優先級不相同實時性較強,參看下表OSVxWorksμC/OS-IIRT-LinuxQNX6供給商WindRiverMicriumFSMlabsQuanturm硬件平臺MC6800080486/33MHz80486/60MHz80486/33MHz任務切換3.8微秒﹤9微秒不詳12.57微秒中止響應﹤3微秒﹤7.5微秒25微秒7.54微秒4種嵌入式操作系統實時性能經典值12月15日6南京大學計算機系第6頁μC/OS-II主要特點(續2)可固化可裁剪實用程序能夠只使用μC/OS-II中需要那些系統服務任務由獨立堆棧μC/OS-II允許每個任務由不一樣棧空間嵌套中止管理嵌套層數可達255層12月15日7南京大學計算機系第7頁μC/OS-II層次μC/OS-II嵌入式系統軟件架構(見下頁),是一個建立在硬件系統上四層軟件結構最上層是應用軟件層API層和支撐軟件層內核設備驅動程序12月15日8南京大學計算機系第8頁μC/OS-II層次示意圖基于μC/OS-II嵌入式系統軟件層次示意圖如右圖所表示12月15日9南京大學計算機系第9頁μC/OS-II代碼結構基于μC/OS-II平臺嵌入式系統體系結構如右下列圖所表示μC/OS-II主要由三大類程序文件組成A類:處理器無關B類:應用程序相關C類:硬件平臺相關12月15日10南京大學計算機系第10頁μC/OS-II代碼結構(續)按功效分關鍵模塊、預處理模塊、進程間通信模塊、內存管理模塊、任務與調度管理器模塊、時間管理模塊、移植模塊μC/OS-II源代碼文件組成見教材第344頁表9-512月15日11南京大學計算機系第11頁μC/OS-II代碼結構(續)μC/OS-II任務代碼有兩種框架結構,以以下出:voidUsertask(void*pdata){for(;;){用戶代碼;OSMboxPend();OSQPend();OSSemPend();OSTaskDel(OS_PRIO_SELF);OSTaskSuspend(OS_PRIO_SELF);OSTimeDly();OSTimeDlyHMSM();用戶代碼;}}voidUsertask(void*pdata){用戶代碼;OSTaskDel(OS_PRIO_SELF);}12月15日12南京大學計算機系第12頁μC/OS-II代碼結構(續)對于執行無限循環任務,通常采取第一個形式;對于只執行一次就自我刪除任務,采取第二種形式。以下是推薦μC/OS-II應用程序任務基本結構
voidUsertask(void*pdata){INT8UReturnNum;//返回值InitTimer();//可選for(;;)………..//應用程序代碼OSTimeDly(n);//慣用語句}12月15日13南京大學計算機系第13頁μC/OS-II代碼結構(續)μC/OS-II開啟過程Bootloader執行完成后,調用應用程序主文件(通常是main.c)里main()函數。main()函數在執行過程中,除硬件初始化函數和用戶函數外,按以下次序執行三個主要μC/OS-II函數:①操作系統初始化OSInit();②任務創建OSTaskCreate();③任務調度開始OSStart()一旦OSStart()函數開始執行,就標志著μC/OS-II進入了多任務調度正常運行狀態12月15日14南京大學計算機系第14頁μC/OS-II內核μC/OS-II內核只提供任務調度、任務間通信(ITC)與同時、任務管理、時間管理和內存管理等基本功效可裁剪編譯到8K左右,全部只有100K左右,消耗資源非常小在小規模代碼內實現了搶占式任務調度、多任務通信功效12月15日15南京大學計算機系第15頁μC/OS-II內核(續1)μC/OS-II臨界區μC/OS-II調用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()兩個宏來執行關中止和開中止,對于不一樣體系結構,這兩個宏定義不一樣。OS_CPU.H文件中含有OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()定義12月15日16南京大學計算機系第16頁μC/OS-II內核(續2)μC/OS-II任務狀態最大任務數64個,最高優先級為0,最低優先級取值為實際定義最大任務數減1.任務建立之后,擁有優先級,執行函數,自用棧空間和任務控制塊(TCB),在運行時刻能夠完全控制CPU操作以及全部用戶可訪問存放器操作。12月15日17南京大學計算機系第17頁μC/OS-II任務狀態轉換圖μC/OS-II每個任務都是一個無限循環。每個任務都處于休眠態、就緒態、運行態、掛起態和被中止態某種狀態下(任務狀態變遷如右圖所表示)12月15日18南京大學計算機系第18頁μC/OS-II內核(續3)休眠態(dormant)這種狀態相當于該任務駐留在內存中,但還沒有交給內核管理。把任務交給內核是經過調用任務創建函數實現μC/OS-II兩個任務創建函數 OSTaskCreate()和OSTaskCreateExt()12月15日19南京大學計算機系第19頁μC/OS-II內核(續3)就緒態(ready)在這種狀態下意味著該任務已經準備好,且可運行,但因為該任務優先級比正在運行任務優先級低,所以還暫時不能運行μC/OS-II就緒表為每一個優先級任務提供了一個位元,登記該任務是否就緒,就緒時取值為1,沒有就緒時取值為0運行態得到了CPU控制權正在運行之中任務狀態12月15日20南京大學計算機系第20頁μC/OS-II內核(續4)掛起態(pending)或者等候態(waiting)正在運行任務因為調用延時函數OSTimeDly(),或等候事件信號量而將本身掛起被中止態(Interrupted)發生中止時CPU提供對應中止服務,原來正在運行任務暫時停頓運行,進入了被中止狀態12月15日21南京大學計算機系第21頁μC/OS-II內核(續5)任務控制塊OS_TCB內查對任務管理經過任務控制塊OS_TCB(TaskControlBlock)進行。任務控制塊是一個數據結構,在任務創建時內核會申請一個空白TCB,而后進行初始化,將創建任務信息填入該TCB各個字段。當任務CPU使用權被剝奪時,μC/OS-II用它來保留該任務狀態。當任務重新得到CPU使用權時,任務控制塊能確保任務從當初被中止處繼續執行。OS_TCB全部駐留在RAM中12月15日22南京大學計算機系第22頁μC/OS-II內核(續6)OS_TCB字段說明OS_TCB數據結構中OSTCBX,OSTCBY,OSTCBBitX,OSTCBBitY四個變量用于加速任務進入就緒態過程或進入等候事件發生狀態過程是依據任務優先級OSTCBPrio計算得出,計算公式以下 OSTCBY =OSTCBPrio>>3; OSTCBBitY =OSMapTbl[OSTCBY]; OSTCBX =OSTCBPrio&0x07; OSTCBBitX =OSMapTbl[OSTCBX];12月15日23南京大學計算機系第23頁μC/OS-II任務調度μC/OS-II就緒表μC/OS-II就緒任務登記在就緒表中。就緒表由兩個變量OSRdyGrp和OSRdyTbl[]組成OSRdyGrp是一個單字節整數變量OSRdyTbl[OS_LOWEST_PRIO/8+1]是單字節整數數組,其元素個數定義為最低優先級除以8加1,最多可有8個元素(字節)12月15日24南京大學計算機系第24頁μC/OS-II任務調度(續1)位圖形式μC/OS-II任務就緒表和就緒實例12月15日25南京大學計算機系第25頁μC/OS-II任務調度(續2)任務就緒表操作登記一個新就緒表操作經典指令段刪除不再處于就緒態任務指令段從就緒表中找到最高優先級任務12月15日26南京大學計算機系第26頁μC/OS-II任務調度(續3)μC/OS-II任務調度μC/OS-II總是運行處于就緒態任務中優先級最高那一個OSSched()函數是任務調度前導函數,判斷進行任務調度三個條件是否滿足。這三個條件分別是:中止嵌套層數共享全程變量OSIntNesting=0任務調度加鎖層數共享全程變量OSLockNesting=0就緒表中查找到最高優先級任務優先級比當前任務優先級高12月15日27南京大學計算機系第27頁μC/OS-II任務切換也叫做上下文切換(ContextSwitch)當μC/OS-II內核決定運行另外任務時,它保留正在運行任務上下文,這些內容保留在任務自用堆棧之中。上下文入棧工作完成以后,把下一個將要執行任務上下文從該任務自用堆棧中裝入CPU存放器,然后開始該任務運行12月15日28南京大學計算機系第28頁ARM處理器任務棧上下文存放結構圖12月15日29南京大學計算機系第29頁μC/OS-II中止處理μC/OS-II中中止服務子程序主要用匯編語言編寫而成中止服務子程序在執行前將被中止任務執行現場保留在自用堆棧中止服務子程序執行事件處理有兩種方法。一個方法是經過OSMBoxPost()、OSQPost()、OSSemPost()等函數去通知真正做該事件處理那個任務,讓任務完成中止事件處理。另外一個是由中止服務子程序本身完成事件處理12月15日30南京大學計算機系第30頁μC/OS-II中止處理(續1)中止服務子程序偽碼結構以下所表示:保留全部CPU存放器到堆棧;調用OSIntEnter()或者對OSIntNesting變量加1;執行中止服務代碼,或者發出IPC消息通知特定任務去執行中止服務;調用OSIntExit()函數;恢復全部CPU存放器;執行中止返回指令;12月15日31南京大學計算機系第31頁μC/OS-II中止處理(續2)調用中止退出函數OSIntExit()標志著中止服務子程序終止,OSIntExit()將中止嵌套層數計數器減1。當中止嵌套計數器減到零而且調度未被禁止(OSLockNesting=0),μC/OS-II要重新開始調度。12月15日32南京大學計算機系第32頁μC/OS-II時間管理μC/OS-II能夠提供周期性時鐘信號,節拍率10~100Hz。用戶必須在多任務系統開啟以后即在調用OSStart()之后激活時鐘節拍信號發生器時鐘節拍中止服務子程序必須用匯編語言編寫每當硬件定時器發出節拍中止請求,μC/OS-II就要響應這個中止12月15日33南京大學計算機系第33頁μC/OS-II時間管理(續)μC/OS-II時間管理函數
節拍延時函數OSTimeDly() 該函數經常位于任務函數結束處,用以退出運行,用戶能夠借助定義全局常數OS_TICKS_PER_SECOSTimeDlyHMSM() 該函數能夠按小時(H)、分(M)、秒(S)和毫秒(m)來定義時間OSTimeDlyResume() 依據需要正處于延時期任務能夠被用戶中止延時
12月15日34南京大學計算機系第34頁μC/OS-II任務間通信μC/OS-II中保護任務間共享數據和提供任務間通信主要三種方式利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()來關閉中止和打開中止利用函數OSSchedLock()和OSSchekUnlock()對μC/OS-II中任務調度函數上鎖和開鎖利用信號量、互斥信號量、郵箱和消息隊列進行任務間通信,屬于事件控制同時與通信。12月15日35南京大學計算機系第35頁μC/OS-II任務間通信(續1)事件控制塊ECB用于實現信號量管理、互斥型信號量管理、消息郵箱以及消息隊列管理ITC功效函數基本數據結構μC/OS-IIECB有4種類型:OSSemCreate()、OSMutexCreate()、OSMboxCreate()、OSQCreate()12月15日36南京大學計算機系第36頁μC/OS-II任務間通信(續2)基于ECB任務間通信一個任務或者中止服務子程序能夠經過事件控制塊ECB來向另外任務發信號事件控制塊作用見下頁圖示12月15日37南京大學計算機系第37頁μC/OS-II任務間通信(續3)事件控制塊作用12月15日38南京大學計算機系第38頁μC/OS-II任務間通信(續4)上圖ITC操作說明任務或中止服務子程序能夠給事件控制塊ECB發信號。只有任務能夠等候另一個任務或中止服務子程序經過事件控制塊ECB給它發送信號,而中止服務子程序是不能等候事件控制塊ECB給它發送信號。處于等候狀態任務能夠指定一個最長等候時間多個任務能夠同時等候同一事件發生。當事件控制塊ECB是一個信號量時,任務能夠等候它,也能夠給它發送消息12月15日39南京大學計算機系第39頁μC/OS-II任務間通信(續5)信號量控制下任務間通信在μC/OS-II下,用信號量進行任務間通信時,先用信號量創建函數OSSemCreate創建一個信號量,且對該信號量賦初始計數值。假如信號量是用來表示一個或者多個事件發生,那么該信號量初始值應設為0假如信號量是用于對共享資源訪問,那么該信號量初始值應設為1假如該信號量是用來表示允許任務訪問n個相同資源,那么該初始值顯然應該是n,并把該信號量作為一個可計數信號量使用。12月15日40南京大學計算機系第40頁μC/OS-II內存管理嵌入式內存管理含虛擬存放器:硬件提供MMU,軟件提供虛擬存放器管理模塊不含虛擬存放器:段式管理段式管理下存放器分配固定分區法 固定分區法指內存中分區個數固定不變,依據分區大小不一樣,還能夠分為等分方式和分區差分方式動態分區法 各個分區大小是在對應進程需要內存時依據需要建立12月15日41南京大學計算機系第41頁μC/OS-II內存管理(續1)μC/OS-II內存管理改進型固定分區法,由操作系統把連續大塊內存按分區進行管理每個分區包含整數個大小相同內存塊:兩級固定分區μC/OS-II對malloc()和free()進行了改進μC/OS-II中使用內存控制塊數據結構跟蹤每一個內存分區,系統中每個內存分區都有它自己內存控制塊12月15日42南京大學計算機系第42頁μC/OS-II內存管理(續2)μC/OS-II對內存管理經過以下四個函數完成創建一個內存分區:OSMemCreate()分配一個內存塊:OSMemGet()釋放一個內存塊:OSMemPut()查詢一個內存分區狀態:OSMemQuery()12月15日43南京大學計算機系第43頁μC/OS-II移植移植μC/OS-II必須滿足以下要求處理器C編譯器能產生可重入代碼用C語言能夠打開和關閉中止處理器支持中止,而且能產生定時中止處理器支持能夠容納一定量數據硬件棧區處理器有將棧區指針和其它CPU存放器讀出和存放到棧區或內存中指令12月15日44南京大學計算機系第44頁μC/OS-II移植(續1)基本配置和定義基本配置和定義全部集中在OS_CPU.H中定義和編譯器相關數據結構定義關中止和開中止宏定義棧指針增加方向12月15日45南京大學計算機系第45頁μC/OS-II移植(續2)與移植相關四個匯編語言程序OSStartHighRdy():運行優先級最高任務OSCtxSw():任務級任務切換函數OSintCtxSw():中止級任務切換函數OSTickISR():時鐘節拍中止服務子程序12月15日46南京大學計算機系第46頁需要移植匯編子程序(函數)OSTickISROSTickISR()――時鐘節拍中止服務子程序時鐘節拍起源于硬件電路,它是嵌入式操作系統基本定時單位OSTickISR()首先在被中止任務棧區中保留CPU存放器值,調用OSIntEnter(),該函數將中止嵌套統計值OSIntNesting加1OSTickISR()然后調用OSTimeTick()OSTickISR()最終調用OSIntExit()12月15日47南京大學計算機系第47頁μC/OS-II移植(續3)與移植相關主要C函數需要在OS_CPU_C.C文件中改寫10個簡單C函數,其中必須修改函數是OSTaskStkInit(),其余9個都是用戶接口函數用戶接口函數調用位置都是在任務狀態發生顯著變動地方OSTaskStkInit()函數用于初始化任務自用棧區,它在任務創建時被調用,負責在內存開辟該任務棧工作區,然后返回該棧棧頂指針stk。12月15日48南京大學計算機系第48頁相關μC/OS-II源代碼通讀通讀μC/OS-II源
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年項目經理勞動合同范本
- 2025代理銷售合同協議書范本
- 2025年租店轉讓合同協議書
- 2025合同解除協議書范本
- 《2025光伏電站用工試用合同》
- 2025租賃合同范文大全
- 2025版房產借款合同書范本
- 2025承租方安全生產責任合同
- 2025沉井鉆孔混凝土灌注樁施工承包合同
- 《心腦血管腫瘤》課件
- 云-邊-端協同架構設計-洞察分析
- 品管圈PDCA案例-中醫醫院減少住院患者艾灸燙傷率醫院改善成果匯報
- 《新聞基礎知識》近年考試真題題庫(附答案)
- 【MOOC】大學攝影基礎-福建師范大學 中國大學慕課MOOC答案
- 【MOOC】固體物理學-北京交通大學 中國大學慕課MOOC答案
- 心衰病人的觀察與護理
- 20241115某克縫紉機供應鏈計劃IBP PPDS詳細解決方案
- 愛護環境主題班會課件
- 大班游戲活動案例《快樂沙池》
- 糖尿病飲食指導護理
- 國有企業戰略規劃審計實施方案
評論
0/150
提交評論