嵌入式系統(tǒng)應(yīng)用與學(xué)習(xí)心得體會(huì)_第1頁(yè)
嵌入式系統(tǒng)應(yīng)用與學(xué)習(xí)心得體會(huì)_第2頁(yè)
嵌入式系統(tǒng)應(yīng)用與學(xué)習(xí)心得體會(huì)_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

μC/OS嵌入式實(shí)時(shí)操作系統(tǒng)的應(yīng)用和學(xué)習(xí)心得μC/OS-II是一種基于優(yōu)先級(jí)的搶占式多任務(wù)實(shí)時(shí)操作系統(tǒng),包含了實(shí)時(shí)內(nèi)核、任務(wù)管理、時(shí)間管理、任務(wù)間通信同步(信號(hào)量,郵箱,消息隊(duì)列)和內(nèi)存管理等功能。它可以使各個(gè)任務(wù)獨(dú)立工作,互不干涉,很容易實(shí)現(xiàn)準(zhǔn)時(shí)而且無(wú)誤執(zhí)行,使實(shí)時(shí)應(yīng)用程序的設(shè)計(jì)和擴(kuò)展變得容易,使應(yīng)用程序的設(shè)計(jì)過程大為減化。它是一個(gè)完整的、可移植、可固化、可裁剪的搶占式實(shí)時(shí)多任務(wù)內(nèi)核。μC/OS-II絕大部分的代碼是用ANSII的C語(yǔ)言編寫的,包含一小部分匯編代碼,使之可供不同架構(gòu)的微處理器使用。至今,從8位到64位,μC/OS-II已在超過40種不同架構(gòu)上的微處理器上運(yùn)行。μC/OS-II已經(jīng)在世界范圍內(nèi)得到廣泛應(yīng)用,包括很多領(lǐng)域,如手機(jī)、路由器、集線器、不間斷電源、飛行器、醫(yī)療設(shè)備及工業(yè)控制上。實(shí)際上,μC/OS-II已經(jīng)通過了非常嚴(yán)格的測(cè)試,并且得到了美國(guó)航空管理局的認(rèn)證,可以用在飛行器上。這說(shuō)明μC/OS-II是穩(wěn)定可靠的,可用于與人性命攸關(guān)的安全緊要系統(tǒng)。除此以外,μC/OS-II的鮮明特點(diǎn)就是源碼公開,便于移植和維護(hù)。我們?cè)趯W(xué)習(xí)μC/OS嵌入式實(shí)時(shí)操作系統(tǒng)時(shí)用的教科書是任哲編著的《嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ原理及應(yīng)用》,這本書介紹了嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ內(nèi)核的任務(wù)管理和調(diào)度、系統(tǒng)時(shí)鐘和節(jié)拍服務(wù)、時(shí)間管理、中斷、任務(wù)的通信和同步、內(nèi)存的簡(jiǎn)單管理原理,同時(shí)給出了實(shí)例。最后,還介紹了μC/OS-Ⅱ的移植方法。在多任務(wù)系統(tǒng)中,內(nèi)核負(fù)責(zé)管理各個(gè)任務(wù),或者說(shuō)為每個(gè)任務(wù)分配CPU時(shí)間,并且負(fù)責(zé)任務(wù)之間的通訊。內(nèi)核提供的基本服務(wù)是任務(wù)切換。之所以使用實(shí)時(shí)內(nèi)核可以大大簡(jiǎn)化應(yīng)用系統(tǒng)的設(shè)計(jì),是因?yàn)閷?shí)時(shí)內(nèi)核允許將應(yīng)用分成若干個(gè)任務(wù),由實(shí)時(shí)內(nèi)核來(lái)管理它們。內(nèi)核本身也增加了應(yīng)用程序的額外負(fù)荷,代碼空間增加ROM的用量,內(nèi)核本身的數(shù)據(jù)結(jié)構(gòu)增加了RAM的用量。但更主要的是,每個(gè)任務(wù)要有自己的??臻g,這一塊吃起內(nèi)存來(lái)是相當(dāng)厲害的。內(nèi)核本身對(duì)CPU的占用時(shí)間一般在2到5個(gè)百分點(diǎn)之間。μC/OS-Ⅱ有一個(gè)精巧的內(nèi)核調(diào)度算法,實(shí)時(shí)內(nèi)核精小,執(zhí)行效率高,算法巧妙,代碼空間很少,具有如下特點(diǎn):只支持基于優(yōu)先級(jí)的搶占式調(diào)度算法,不支持時(shí)間片輪循;64個(gè)優(yōu)先級(jí),只能創(chuàng)建64個(gè)任務(wù),用戶只能創(chuàng)建56個(gè)任務(wù);每個(gè)任務(wù)優(yōu)先級(jí)都不相同;不支持優(yōu)先級(jí)逆轉(zhuǎn);READY隊(duì)列通過內(nèi)存映射表實(shí)現(xiàn)快速查詢;效率非常高;支持時(shí)鐘節(jié)拍;支持信號(hào)量,消息隊(duì)列,事件控制塊,事件標(biāo)志組,消息郵箱任務(wù)通訊機(jī)制;支持中斷嵌套,中斷嵌套層數(shù)可達(dá)255層,中斷使用當(dāng)前任務(wù)的堆棧保存上下文;每個(gè)任務(wù)有自己的堆棧,堆棧大小用戶自己設(shè)定;支持動(dòng)態(tài)修改任務(wù)優(yōu)先級(jí);任務(wù)TCB為靜態(tài)數(shù)組,建立任務(wù)只是從中獲得一個(gè)TCB,不用動(dòng)態(tài)分配,釋放內(nèi)存;任務(wù)堆棧為用戶靜態(tài)或者動(dòng)態(tài)創(chuàng)建,在任務(wù)創(chuàng)建外完成,任務(wù)創(chuàng)建本身不進(jìn)行動(dòng)態(tài)內(nèi)存分配;任務(wù)的總個(gè)數(shù)(OS_MAX_TASKS)由用戶決定;0優(yōu)先級(jí)最高,63優(yōu)先級(jí)最低;有一個(gè)優(yōu)先級(jí)最低的空閑任務(wù),在沒有用戶任務(wù)運(yùn)行的時(shí)候運(yùn)行。任務(wù)的調(diào)度核心主要是在任務(wù)就緒表中查找具有最高優(yōu)先級(jí)別的就緒任務(wù)及實(shí)現(xiàn)任務(wù)切換,即將找到的的最高優(yōu)先級(jí)別的任務(wù)的“任務(wù)號(hào)”--->“當(dāng)前任務(wù)的任務(wù)號(hào)OSPrioCur”;從OSTCBPrioTbl[]取出最高優(yōu)先級(jí)別任務(wù)的任務(wù)控制塊首地址--->“當(dāng)前任務(wù)的任務(wù)控制塊指針OSTCBCur”,最后調(diào)用OS_TASK_SW()完成現(xiàn)場(chǎng)切換(即將CPU的寄存器信息保存到當(dāng)前正運(yùn)行任務(wù)的私棧中,然后從待運(yùn)行的高優(yōu)先級(jí)別的任務(wù)私棧中彈出原先保存寄存器信息到CPU)。時(shí)鐘節(jié)拍服務(wù)放到一個(gè)時(shí)鐘節(jié)拍任務(wù)中完成,通過采用啥希散列表機(jī)制來(lái)管理延時(shí)任務(wù),每次時(shí)鐘節(jié)拍服務(wù)只需要處理極少數(shù)的延時(shí)任務(wù),從而大大減少了時(shí)鐘節(jié)拍服務(wù)花費(fèi)的時(shí)間,提高了系統(tǒng)的實(shí)時(shí)性。另外,在μC/OS系列RTOS中,時(shí)鐘節(jié)拍服務(wù)除了會(huì)跟蹤延時(shí)的任務(wù),還會(huì)跟蹤那些指定了超時(shí)時(shí)限的等待任務(wù)。也就是說(shuō),當(dāng)指定的超時(shí)時(shí)限結(jié)束時(shí),即使任務(wù)等待的事件沒有發(fā)生,時(shí)鐘節(jié)拍服務(wù)也會(huì)使該任務(wù)恢復(fù)運(yùn)行。uC/OS-II的時(shí)間管理是通過定時(shí)中斷來(lái)實(shí)現(xiàn)的,該定時(shí)中斷一般為10毫秒或100毫秒發(fā)生一次,時(shí)間頻率取決于用戶對(duì)硬件系統(tǒng)的定時(shí)器編程來(lái)實(shí)現(xiàn)。中斷發(fā)生的時(shí)間間隔是固定不變的,該中斷也成為一個(gè)時(shí)鐘節(jié)拍。uC/OS-II要求用戶在定時(shí)中斷的服務(wù)程序中,調(diào)用系統(tǒng)提供的與時(shí)鐘節(jié)拍相關(guān)的系統(tǒng)函數(shù),例如中斷級(jí)的任務(wù)切換函數(shù),系統(tǒng)時(shí)間函數(shù)。uC/OS-II中最多可以支持64個(gè)任務(wù),分別對(duì)應(yīng)優(yōu)先級(jí)0~63,其中0為最高優(yōu)先級(jí)。63為最低級(jí),系統(tǒng)保留了4個(gè)最高優(yōu)先級(jí)的任務(wù)和4個(gè)最低優(yōu)先級(jí)的任務(wù),所有用戶可以使用的任務(wù)數(shù)有56個(gè)。還提供了任務(wù)管理的各種函數(shù)調(diào)用,包括創(chuàng)建任務(wù),刪除任務(wù),改變?nèi)蝿?wù)的優(yōu)先級(jí),任務(wù)掛起和恢復(fù)等。系統(tǒng)初始化時(shí)會(huì)自動(dòng)產(chǎn)生兩個(gè)任務(wù):一個(gè)是空閑任務(wù),它的優(yōu)先級(jí)最低,該任務(wù)僅給一個(gè)整形變量做累加運(yùn)算;另一個(gè)是系統(tǒng)任務(wù),它的優(yōu)先級(jí)為次低,該任務(wù)負(fù)責(zé)統(tǒng)計(jì)當(dāng)前cpu的利用率。想使用在MCU上使用μC/OS-II則必須滿足以下幾個(gè)條件:①處理器C編譯器支持可重入代碼的生成;②用C語(yǔ)言可以打開和關(guān)閉中斷;③處理器支持中斷,并能產(chǎn)生定時(shí)中斷(中斷頻率通常設(shè)置在10~100Hz之間);④處理器支持足夠的RAM空間,以滿足多任務(wù)環(huán)境下設(shè)置任務(wù)堆棧的要求;⑤處理器有相應(yīng)的指令,能將堆棧指針和其它CPU寄存器讀出和存儲(chǔ)到堆?;騼?nèi)存中。μC/OS-II代碼中大部分是用C語(yǔ)言寫的,但涉及到數(shù)據(jù)類型的重定義、堆棧結(jié)構(gòu)的設(shè)計(jì)、任務(wù)切換時(shí)狀態(tài)的保存和恢復(fù)等問題的大部分代碼由于與處理器有關(guān),是用匯編語(yǔ)言實(shí)現(xiàn)的。移植所要做的工作,就是在不同的處理器上用匯編語(yǔ)言來(lái)改寫與處理器有關(guān)的代碼及其他與處理器特性相關(guān)的部分。在μC/OS-II移植過程中涉及以上問題的代碼都包含在文件OS_CPU.H、OS_CPU_C.C、OS_CPU_A.ASM中。因此移植的主要工作也在源代碼的基礎(chǔ)上圍繞著這三個(gè)文件的改寫展開??傊瑢W(xué)習(xí)μC/OS嵌入式實(shí)時(shí)操作系統(tǒng)首先得先了解整個(gè)系統(tǒng)的結(jié)構(gòu),工作時(shí)的流程,比如任務(wù)1運(yùn)行時(shí)如果有外部中斷會(huì)發(fā)生什么(調(diào)用中斷服務(wù)程序,把相應(yīng)的任務(wù)加如就緒列,內(nèi)核進(jìn)行調(diào)度,就緒隊(duì)列中的最高優(yōu)先級(jí)的任務(wù)...)等,再對(duì)代碼進(jìn)行具體的研究會(huì)比較容易。我們需熟知μC/OS嵌入式實(shí)時(shí)操作系統(tǒng)中的函數(shù)及其應(yīng)用,例如引起任務(wù)調(diào)度的系統(tǒng)函數(shù)有OSStart()uCOS/II啟動(dòng);OSTaskSuspend()掛起任務(wù);OSTaskResume()恢復(fù)任務(wù);OSTimeDly()/OSTimeDlyHMSM()等待一個(gè)事件的發(fā)生等。只有在熟識(shí)系統(tǒng)運(yùn)行的方式及可以引發(fā)其運(yùn)行的函數(shù)的情況下我們才能較好的去運(yùn)用它,用它來(lái)實(shí)現(xiàn)移植,從而達(dá)到我們的目的。學(xué)習(xí)實(shí)時(shí)操作系統(tǒng),任哲編著的《嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ原理及應(yīng)用》這本書相對(duì)來(lái)說(shuō)比較適合初學(xué)者,它篇幅適中,通俗易懂,若能結(jié)合北京航空航天大學(xué)《ucosii操作系統(tǒng)講義》就更加好了。正所謂讀書百遍,其義自現(xiàn),通過對(duì)《北航》和《任哲》的資料不斷反復(fù)地學(xué)習(xí)和閱讀,我心中總算有些眉目

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論