任哲--嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II講座2

任哲--嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II講座2

ID:40229921

大?。?.78 MB

頁數(shù):34頁

時(shí)間:2019-07-27

任哲--嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II講座2_第1頁
任哲--嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II講座2_第2頁
任哲--嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II講座2_第3頁
任哲--嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II講座2_第4頁
任哲--嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II講座2_第5頁
資源描述:

《任哲--嵌入式實(shí)時(shí)操作系統(tǒng)uCOS-II講座2》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、μC/OS-II中的任務(wù)管理任務(wù)的狀態(tài)及其轉(zhuǎn)換正在運(yùn)行的任務(wù),需要等待一段時(shí)間或需要等待一個(gè)事件發(fā)生再運(yùn)行時(shí),該任務(wù)就會把CPU的使用權(quán)讓給別的任務(wù)而使任務(wù)進(jìn)入等待狀態(tài)。任務(wù)在沒有被配備任務(wù)控制塊或被剝奪了任務(wù)控制塊時(shí)的狀態(tài)叫做任務(wù)的睡眠狀態(tài)系統(tǒng)為任務(wù)配備了任務(wù)控制塊且在任務(wù)就緒表中進(jìn)行了就緒登記,這時(shí)任務(wù)的狀態(tài)叫做就緒狀態(tài)。處于就緒狀態(tài)的任務(wù)如果經(jīng)調(diào)度器判斷獲得了CPU的使用權(quán),則任務(wù)就進(jìn)入運(yùn)行狀態(tài)一個(gè)正在運(yùn)行的任務(wù)一旦響應(yīng)中斷申請就會中止運(yùn)行而去執(zhí)行中斷服務(wù)程序,這時(shí)任務(wù)的狀態(tài)叫做中斷服務(wù)狀態(tài)前面談到

2、,一個(gè)任務(wù)的任務(wù)控制塊的主要作用就是保存該任務(wù)的虛擬處理器的堆棧指針寄存器SP。其實(shí),隨著任務(wù)管理工作的復(fù)雜性的提高,它還應(yīng)該保存一些其他信息。任務(wù)控制塊——任務(wù)在系統(tǒng)中的身份證由于系統(tǒng)存在著多個(gè)任務(wù),于是系統(tǒng)如何來識別并管理一個(gè)任務(wù)就是一個(gè)需要解決的問題。識別一個(gè)任務(wù)的最直接的辦法是為每一個(gè)任務(wù)起一個(gè)名稱。由于μC/OS-II中的任務(wù)都有一個(gè)惟一的優(yōu)先級別,因此μC/OS-II是用任務(wù)的優(yōu)先級來作為任務(wù)的標(biāo)識的。所以,任務(wù)控制塊還要來保存該任務(wù)的優(yōu)先級別。另外,前面也談到,一個(gè)任務(wù)在不同的時(shí)刻還處于不同

3、的狀態(tài),顯然,記錄了任務(wù)狀態(tài)的數(shù)據(jù)也應(yīng)該保存到任務(wù)控制塊中?;谏鲜鲈颍到y(tǒng)必須為每個(gè)任務(wù)創(chuàng)建一個(gè)保存與該任務(wù)有關(guān)的相關(guān)信息的數(shù)據(jù)結(jié)構(gòu),這個(gè)數(shù)據(jù)結(jié)構(gòu)就叫做該任務(wù)的任務(wù)控制塊(TCB)。任務(wù)控制塊結(jié)構(gòu)的主要成員typedefstructos_tcb{OS_STK*OSTCBStkPtr;//指向任務(wù)堆棧棧頂?shù)闹羔槨璉NT8UOSTCBStat;//任務(wù)的當(dāng)前狀態(tài)標(biāo)志INT8UOSTCBPrio;//任務(wù)的優(yōu)先級別……}OS_TCB;任務(wù)控制塊是不是像我們?nèi)嗽谝粋€(gè)國家中的身份證?(其實(shí),系統(tǒng)中的所有資源都

4、應(yīng)該有身份證。)任務(wù)在內(nèi)存中的結(jié)構(gòu)用戶任務(wù)代碼的一般結(jié)構(gòu)voidMyTask(void*pdata){for(;;){可以被中斷的用戶代碼;OS_ENTER_CRITICAL();//進(jìn)入臨界段(關(guān)中斷)不可以被中斷的用戶代碼;OS_EXIT_CRITICAL();//退出臨界段(開中斷)可以被中斷的用戶代碼;}}臨界段無限循環(huán)于是可以這樣說,μC/OS-II任務(wù)的代碼結(jié)構(gòu)是一個(gè)可以帶有臨界段的無限循環(huán)。系統(tǒng)提供的空閑任務(wù)在多任務(wù)系統(tǒng)運(yùn)行時(shí),系統(tǒng)經(jīng)常會在某個(gè)時(shí)間內(nèi)無用戶任務(wù)可運(yùn)行而處于所謂的空閑狀態(tài),為了

5、使CPU在沒有用戶任務(wù)可執(zhí)行的時(shí)候有事可做,μC/OS-II提供了一個(gè)叫做空閑任務(wù)OSTaskIdle()的系統(tǒng)任務(wù)voidOSTaskIdle(void*pdata){#ifOS_CRITICAL_METHOD==3OS_CPU_SRcpu_sr;#endifpdata=pdata;//防止某些編譯器報(bào)錯for(;;){OS_ENTER_CRITICAL();//關(guān)閉中斷OSdleCtr++;//計(jì)數(shù)OS_EXIT_CRITICAL();//開放中斷}}空閑任務(wù)只是做了一個(gè)計(jì)數(shù)工作注意!空閑任務(wù)中沒有調(diào)

6、用任務(wù)延時(shí)函數(shù)μC/OS-II規(guī)定,一個(gè)用戶應(yīng)用程序必須使用這個(gè)空閑任務(wù),而且這個(gè)任務(wù)是不能用軟件來刪除的系統(tǒng)提供的另一個(gè)任務(wù)——統(tǒng)計(jì)任務(wù)μC/OS-II提供的另一個(gè)系統(tǒng)任務(wù)是統(tǒng)計(jì)任務(wù)OSTaskStat()。這個(gè)統(tǒng)計(jì)任務(wù)每秒計(jì)算一次CPU在單位時(shí)間內(nèi)被使用的時(shí)間,并把計(jì)算結(jié)果以百分比的形式存放在變量OSCPUsage中,以便應(yīng)用程序通過訪問它來了解CPU的利用率,所以這個(gè)系統(tǒng)任務(wù)OSTaskStat()叫做統(tǒng)計(jì)任務(wù)任務(wù)的優(yōu)先權(quán)及優(yōu)先級別μC/OS_II把任務(wù)的優(yōu)先權(quán)分為64個(gè)優(yōu)先級別,每一個(gè)級別都用一個(gè)

7、數(shù)字來表示。數(shù)字0表示任務(wù)的優(yōu)先級別最高,數(shù)字越大則表示任務(wù)的優(yōu)先級別越低用戶可以根據(jù)應(yīng)用程序的需要,在文件OS_CFG.H中通過給表示最低優(yōu)先級別的常數(shù)OS_LOWEST_PRIO賦值的方法,來說明應(yīng)用程序中任務(wù)優(yōu)先級別的數(shù)目。該常數(shù)一旦被定義,則意味著系統(tǒng)中可供使用的優(yōu)先級別為:0,1,2,……,OS_LOWEST_PRIO,共OS_LOWEST_PRIO+1個(gè)固定地,系統(tǒng)總是把最低優(yōu)先級別OS_LOWEST_PRIO自動賦給空閑任務(wù)。如果應(yīng)用程序中還使用了統(tǒng)計(jì)任務(wù),系統(tǒng)則會把優(yōu)先級別OS_LOWES

8、T_PRIO-1自動賦給統(tǒng)計(jì)任務(wù),因此用戶任務(wù)可以使用的優(yōu)先級別是:0,1,2…OS_LOWEST_PRIO-2,共OS_LOWEST_PRIO-1個(gè)任務(wù)堆棧保存CPU寄存器中的內(nèi)容及存儲任務(wù)私有數(shù)據(jù)的需要,每個(gè)任務(wù)都應(yīng)該配有自己的堆棧,任務(wù)堆棧是任務(wù)的重要的組成部分在應(yīng)用程序中定義任務(wù)堆棧的棧區(qū)非常簡單,即定義一個(gè)OS_STK類型的一個(gè)數(shù)組并在創(chuàng)建一個(gè)任務(wù)時(shí)把這個(gè)數(shù)組的地址賦給該任務(wù)就可以了。例如://定義堆棧的長度#def

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。