RTOS基礎(chǔ)及其在10A Charger中的應(yīng)用1_第1頁
RTOS基礎(chǔ)及其在10A Charger中的應(yīng)用1_第2頁
RTOS基礎(chǔ)及其在10A Charger中的應(yīng)用1_第3頁
RTOS基礎(chǔ)及其在10A Charger中的應(yīng)用1_第4頁
RTOS基礎(chǔ)及其在10A Charger中的應(yīng)用1_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、RTOS基礎(chǔ)及其在10A Charger中的應(yīng)用1目錄前后臺系統(tǒng)RTOS系統(tǒng)的架構(gòu)RTOS的任務(wù)管理機制10A charger應(yīng)用實例2前后臺系統(tǒng)架構(gòu)3中斷在中斷中置標志位表明相關(guān)任務(wù)需要執(zhí)行4前后臺的不足每一個任務(wù)被延遲的最大時間都是主函數(shù)一個循環(huán)的時間,實時性不好不利于程序的模組化5基于RTOS的10A charger架構(gòu)(1)uc_II系統(tǒng)(2)不可剝奪型內(nèi)核6硬件層(黃色部分) DSP 2802的各個功能模塊:I/O PORTS(PWM PORTS)SCI,SPI,CANADC7在這一層,主要通過對DSP寄存器對 DSP的資源進行操作通過宏(MACRO)的方式,實現(xiàn)對硬件操作。硬件抽象

2、層(褐色部分)8Device Driver 層這一層主要是在各個中斷中實現(xiàn),通過調(diào)用硬件抽象層的宏(MACRO),來獲得與低層硬件無關(guān)的數(shù)據(jù),提供給任務(wù)級使用。通過這一層和硬件抽象層提供給kernel和任務(wù)級與處理器無關(guān)的數(shù)據(jù)。提高更高層的可移植性。9任務(wù)層(藍色部分)Charger的任務(wù)層包括:狀態(tài)切換;時序控制;相關(guān)偵測和保護;交互通信 中斷也可以看著是任務(wù),但優(yōu)先級和時效性要求最高的任務(wù)通過和Device Driver一層的接口來獲得模擬量的數(shù)據(jù)。通過Kernel提供的服務(wù)和別的任務(wù)同步。用戶應(yīng)用程序主要通過任務(wù)級完成。10Kernel層(粉紅色部分)RTOS的一個主要任務(wù)是任務(wù)的調(diào)度和

3、切換 也就是CPU如何對需要處理的任務(wù)進行服務(wù)。 Kernel層是RTOS主要的設(shè)計任務(wù),通過提供特定的系統(tǒng)服務(wù),來實現(xiàn)對任務(wù)的調(diào)度以及切換,實現(xiàn)任務(wù)之間的同步與通信。主要有以下三部分組成:任務(wù)的管理和調(diào)度任務(wù)之間 的通信和同步Timer結(jié)構(gòu)以及時間管理1110A charger系統(tǒng)內(nèi)的任務(wù)有中斷、定時和其他任務(wù)喚醒三種方式;系統(tǒng)內(nèi)基本沒有共享的外設(shè),不需要信號量進行資源的互斥。任務(wù)間的數(shù)據(jù)共享是通過全局變量和函數(shù)進行的。10A charger是一個事件驅(qū)動的系統(tǒng),任務(wù)之間是通過簡單的事件進行同步和通信的。任務(wù)間通信和同步12任務(wù)管理共有4個任務(wù),每個任務(wù)有各自的優(yōu)先級,優(yōu)先級固定不變每個任務(wù)

4、都在系統(tǒng)啟動之前建立不可刪除任務(wù)任務(wù)只有三種狀態(tài):就緒、掛起和執(zhí)行使用優(yōu)先級的調(diào)度策略13TCB結(jié)構(gòu)每個任務(wù)通過一個任務(wù)控制塊來管理自己的信息,任務(wù)控制塊的結(jié)構(gòu)如下: 14任務(wù)堆棧每個任務(wù)有各自的獨立任務(wù)堆棧,這樣在采用C語言編寫程序的時候才不會有任何的限制任務(wù)堆棧的大小由處理器、編譯器架構(gòu)以及任務(wù)級的函數(shù)嵌套n、中斷嵌套m、傳遞的參數(shù)x、臨時變量y共同決定任務(wù)棧大小=15優(yōu)先級、TCB列表、就緒表的關(guān)系16調(diào)度用OSRdyMap中的一個bit來表示任務(wù)的狀態(tài),任務(wù)被掛起時,對應(yīng)的bit為0,就緒或者執(zhí)行時為1。在就緒表中將優(yōu)先級為prio的任務(wù)置就緒(相應(yīng)bit置1):#define OST

5、askRdy(prio) OSRdyMap |= (1 prio)在就緒表中將優(yōu)先級為prio的任務(wù)置掛起(相應(yīng)bit1清零) : #define OSTaskSuspend(prio)OSRdyMap &= (1 prio)17調(diào)度(Scheduler)18創(chuàng)建任務(wù)void OSTaskCreate (void (*task)(void), INTOS stksize, INTOS prio)找到對應(yīng)的TCB從系統(tǒng)堆棧中分配大小為stksize的區(qū)域并初 始化系統(tǒng)堆棧初始化TCB中各項任務(wù)置為就緒態(tài)19創(chuàng)建一個任務(wù)20任務(wù)級切換函數(shù)OSSched()21中斷級切換函數(shù)OSIntExit()2

6、2中斷管理無嵌套的中斷處理(不能在中斷中打開中斷)中斷的時間要求盡可能短 Buck、Boost IGBT控制也在中斷中執(zhí)行,該部分程序占用了大多數(shù)的CPU時間,注意中斷溢出。23事件管理1、等待特定的事件,如果沒有事件,那么掛起該任務(wù)TASK_EVENTOSMaskEventPend(TASK_EVENT mask) 比較常用的是等待所有的事件:#defineOSEventPendOSMaskEventPend(0);2、等待一個事件,并返回事件,如果沒有事件,不掛起。TASK_EVENTOSEventGet(void)3、發(fā)送一個事件給特定的任務(wù)voidOSEventSend(INTOS p

7、rio,INTOS EventId)voidOSISREventSend(INTOS prio,INTOS EventId) 24發(fā)送事件EventSend(prio,EventId)25時間管理大多數(shù)任務(wù)需要一個定時的機制來實現(xiàn)定時的調(diào)度,需要一個定時的中斷來管理定時。每一個任務(wù)需要一個變量來記錄timer的周期(OSTimerPeriod),還需要一個變量來記錄計 數(shù)值(OSTimerCnt)當timer的周期值為0時,表示這個timer是被禁止的。當計數(shù)器的值大于或等于周期值時,將計數(shù)器清零,并喚醒任務(wù)。喚醒的方式通過發(fā)送一個EventId=0的事件給任務(wù)的TCB。26時間節(jié)拍函數(shù)OSTimerTick27應(yīng)用實例void main()/啟動系統(tǒng)UPSHardwareInitial(); OSInit();sTaskInitial();OSStart(); 系統(tǒng)在初始化硬件后(UPSHardwareInitial ); 調(diào)用O

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論