課件及范例代碼04.osal操作系統(tǒng)開發(fā)_第1頁
課件及范例代碼04.osal操作系統(tǒng)開發(fā)_第2頁
課件及范例代碼04.osal操作系統(tǒng)開發(fā)_第3頁
課件及范例代碼04.osal操作系統(tǒng)開發(fā)_第4頁
課件及范例代碼04.osal操作系統(tǒng)開發(fā)_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、OSAL操作系統(tǒng)開發(fā)物聯(lián)網(wǎng)師資培訓(xùn)1OSAL操作系統(tǒng)開發(fā)OSAL操作系統(tǒng)簡介OSAL初始化與運行多任務(wù)概念及任務(wù)建立系統(tǒng)時鐘消息管理2OSAL操作系統(tǒng)開發(fā)OSAL操作系統(tǒng)簡介OSAL初始化與運行多任務(wù)概念及任務(wù)建立系統(tǒng)時鐘消息管理3OSAL操作系統(tǒng)簡介(1/4)OSAL(Operating System Abstraction L ayer) 操作系統(tǒng)抽象層:以實現(xiàn)多任務(wù)為的系統(tǒng)資源管理機(jī)制。采用 輪轉(zhuǎn)查詢 的方式來協(xié)調(diào)調(diào)度各項任務(wù)。實現(xiàn)類似操作系統(tǒng)的某些功能,但并不能稱乊為真正意義上的操作系統(tǒng)。4OSAL操作系統(tǒng)簡介(2/4)系統(tǒng)設(shè)置多個優(yōu)先級OSAL把優(yōu)先級放在了最重要的地位。當(dāng)前在處理的

2、任務(wù)中有兩個以上事件待處理,處理完一件后,也要去查詢優(yōu)先級更高的任務(wù)。賦予優(yōu)先級高的任務(wù)最大權(quán)利,盡可能保證高優(yōu)先級任務(wù)的每一個事件都能得到最及時的處理。支持64個任務(wù),即任務(wù)分為64個優(yōu)先級;5OSAL操作系統(tǒng)簡介(3/4)任務(wù)執(zhí)行流程開始任務(wù)一有任務(wù)二有任務(wù)三有6Y事件發(fā)生嗎?處理本任務(wù)當(dāng)前優(yōu)先級最高的事件NY事件發(fā)生嗎?處理本任務(wù)當(dāng)前優(yōu)先級最高的事件NY事件發(fā)生嗎?處理本任務(wù)當(dāng)前優(yōu)先級最高的事件NOSAL操作系統(tǒng)簡介(3/4)任務(wù)執(zhí)行流程7OSAL操作系統(tǒng)簡介(4/4)OSAL提供的服務(wù)任務(wù)登記,初始化,啟勱任務(wù)間的信息傳送任務(wù)同步定時器管理器分配中斷處理8OSAL操作系統(tǒng)開發(fā)OSAL操

3、作系統(tǒng)簡介OSAL初始化與運行多任務(wù)概念及建立任務(wù)系統(tǒng)時鐘消息管理9OSAL系統(tǒng)初始化函數(shù)原型:unsigned char osal_init_system(void)功能描述:初始化系統(tǒng)。必須在任何系統(tǒng)函數(shù)啟勱乊前先啟勱;輸入:無輸出:返回操作結(jié)果(ZSUCS)其中taskEvents用于保存任務(wù)對應(yīng)的事件,供系統(tǒng)輪詢使用。有N個任務(wù)則分配u16*N的空間,1個u16數(shù)據(jù)保存1個任務(wù)的所有事件,每1位對應(yīng)1個事件,1個任務(wù)最多可以有16個事件;10運行OSAL系統(tǒng)函數(shù)原型:void osal_start_system(void)功能描述:系統(tǒng)主循環(huán)函數(shù),查詢所有的任務(wù)事件,調(diào)用每個事件相應(yīng)的

4、任務(wù)處理函數(shù)。如果某個特定的任務(wù)有事件發(fā)生,該函數(shù)將調(diào)用任務(wù)事件的處理函數(shù),處理結(jié)束后返回主循環(huán)函數(shù)。如果所有任務(wù)都沒有事件發(fā)生,那么該函數(shù)將使處理器進(jìn)入睡眠模式(可選的節(jié)能)。11運行OSAL系統(tǒng)12OSAL操作系統(tǒng)開發(fā)OSAL操作系統(tǒng)簡介OSAL初始化與運行多任務(wù)概念及建立任務(wù)系統(tǒng)時鐘消息管理13任務(wù)的概念任務(wù)?一個任務(wù)就是一個簡單的程序。多任務(wù)應(yīng)用程序的設(shè)計是將問題分割成多個任務(wù),每個任務(wù)都是整個應(yīng)用程序的一部分,并賦予一定的優(yōu)先級,有它自己的一套CPU寄存器和??臻g。14建立任務(wù)任務(wù)初始化:為用戶任務(wù)分配任務(wù)號.在系統(tǒng)初始化時為所有系統(tǒng)任務(wù)分配唯一taskID任務(wù)事件處理函數(shù):任務(wù)事件

5、處理函數(shù),當(dāng)系統(tǒng)有事件需要處理時調(diào)用任務(wù)列表中相應(yīng)的事件處理函數(shù)進(jìn)行處理。15建立任務(wù)練習(xí)任務(wù)初始化定義任務(wù)初始化函數(shù):添加到系統(tǒng)任務(wù)初始化函數(shù)中:任務(wù)處理函數(shù)定義任務(wù)處理函數(shù):添加到任務(wù)處理函數(shù)列表中:16OSAL操作系統(tǒng)開發(fā)OSAL操作系統(tǒng)簡介OSAL初始化與運行多任務(wù)系統(tǒng)時鐘消息管理17系統(tǒng)時鐘osal_start_timer()osal_stop_timer()osal_start_timerEx()osal_stop_timerEx()18osal_start_timer()函數(shù)原型:byte osal_start_timer(U16 event_id, U16 timerout_v

6、alue)功能描述:定時觸發(fā)任務(wù)事件輸入?yún)?shù):event_id:用戶定義的事件timerout_value:計時時間(ms)返回值:返回操作結(jié)果(ZSUCS, NO_TIMER_AVAIL,INVALID_EVENT_ID or NVALID_TIMEOUT_VALUE)19osal_stop_timer()函數(shù)原型:byte osal_stop_timer(U功能描述:停止已被啟動的定時器。輸入?yún)?shù):event_id:被停止計時器的標(biāo)識符。16 event_id)返回值:返回操作結(jié)果(ZSUCS, INVALID_EVENT_ID)20osal_start_timerEx()函數(shù)原型:byt

7、e osal_start_timerEx(byte taskID, U16event_id, U16 timerout_value)功能描述:允許用戶設(shè)置另一任務(wù)的定時器輸入?yún)?shù):taskID:任務(wù)ID號 event_id:用戶定義的事件 timerout_value:計時時間(ms)返回:操作結(jié)果(ZSUCS or NO_TIMER_AVAIL)21osal_stop_timerEx()函數(shù)原型:byte osal_stop_timerEx(byte task_id, U16 event_id)功能函數(shù):停止已被啟動的定時器,指明任務(wù)ID輸入?yún)?shù):task_id:停止定時器所在的任務(wù)ID。e

8、vent_id:被停止定時器的標(biāo)識符。返回值:操作結(jié)果(ZSUCSorINVALID_EVENT_ID)22初始化定時器在任務(wù)初始化函數(shù)中初始化定時器在任務(wù)處理函數(shù)中添加相應(yīng)的事件處理代碼D8(LED1)指示燈閃爍一次23OSAL操作系統(tǒng)開發(fā)OSAL操作系統(tǒng)簡介OSAL初始化與運行多任務(wù)系統(tǒng)時鐘消息管理24消息管理osal_msg_allocate()osal_msg_deallocate()osal_msg_send()osal_msg_receive()HalUARTWrite()25osal_msg_allocate()函數(shù)原型:byte *osal_msg_allocate(u16 l

9、en)功能函數(shù):分配消息緩沖空間輸入?yún)?shù):len :消息的長度。返回值:指向緩存空間首地址的指針26osal_msg_deallocate()函數(shù)原型:byte*osal_msg_deallocate(byte* msg_ptr)功能函數(shù):輸入?yún)?shù):已分配消息緩沖區(qū)* msg_ptr:指向需要處理消息緩存的指針返回值:操作結(jié)果(ZSUCS orINVALID_MSG_POER)27osal_msg_send()函數(shù)原型:byte *osal_msg_send(byte destination_task, byte* msg_ptr)功能函數(shù):任務(wù)間通信,發(fā)送給消息給其他任務(wù);輸入?yún)?shù):dest

10、ination_task:目的任務(wù)ID號msg_ptr:指向包含發(fā)送消息的指針返回值:返回操作結(jié)果(ZSUCS,INVALID_SENDING_TASK, INVALID_MSG_POER)28osal_msg_receive()函數(shù)原型:byte *osal_msg_receive(byte task_id )功能函數(shù):接收某任務(wù)發(fā)來消息輸入?yún)?shù):task_id :消息來源任務(wù)ID返回值:指向接收到的消息數(shù)據(jù)包首地址的指針29串口發(fā)送數(shù)據(jù)函數(shù)原型:u16 HalUARTWrite (u8 port, u8*buf, u16 len )函數(shù)功能:串口發(fā)送數(shù)據(jù)函數(shù)函數(shù)參數(shù):port:串行端口(選擇uart0或uart1)buf:指向發(fā)送數(shù)據(jù)的指針len:發(fā)送數(shù)據(jù)的長度返回值:發(fā)送數(shù)據(jù)的長度30其他常用API任務(wù)同步:osal_set_event();觸發(fā)某任務(wù)事件標(biāo)志;中斷管理:osal_init_enable()/osal_init_disable();函數(shù)用于使能中斷/關(guān)閉中斷電源管理:osal_pwrmgr_device()osal_pwrmgr_task_se();函數(shù)在上電或電源需要發(fā)生變化時被調(diào)用/是否保存電源狀態(tài)31練習(xí)任務(wù)

溫馨提示

  • 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

提交評論