嵌入式實(shí)時(shí)操作系統(tǒng)μCOS原理與實(shí)踐實(shí)驗(yàn)教程.ppt_第1頁
嵌入式實(shí)時(shí)操作系統(tǒng)μCOS原理與實(shí)踐實(shí)驗(yàn)教程.ppt_第2頁
嵌入式實(shí)時(shí)操作系統(tǒng)μCOS原理與實(shí)踐實(shí)驗(yàn)教程.ppt_第3頁
嵌入式實(shí)時(shí)操作系統(tǒng)μCOS原理與實(shí)踐實(shí)驗(yàn)教程.ppt_第4頁
嵌入式實(shí)時(shí)操作系統(tǒng)μCOS原理與實(shí)踐實(shí)驗(yàn)教程.ppt_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2013年補(bǔ)充說明2012年本書出版后,受到讀者的厚愛,不勝感謝。但是自己還是有很多做的不完美的地方,抱歉!不少朋友反映該書講解代碼比較詳細(xì),但是移植部分不太好,沒有硬件平臺。而機(jī)械工業(yè)出版社又邀請本人寫一本新書,因此,本人根據(jù)現(xiàn)在搞STM32的比較多的情況,做了這么一個平臺,正在寫基于STM32及C/OS 的嵌入式系統(tǒng)設(shè)計(jì),希望能對大家有用。這個平臺的代碼我都在博客和愛板(左上圖可鏈接)發(fā)布,是開源的,起名叫亮點(diǎn)嵌入式!鄙人做的STM32開源板在淘寶網(wǎng)(右下圖可鏈接)。這本書我也在淘寶賣,由當(dāng)當(dāng)直接發(fā)貨。有什么問題都可以去博客或愛板留言交流,必復(fù)!我還承諾,2013年免費(fèi)提供信號量和消息部分

2、的視頻!實(shí)驗(yàn)前言實(shí)驗(yàn)參考書:嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐2012 電子工業(yè)出版社實(shí)驗(yàn)前需學(xué)習(xí)對應(yīng)部分實(shí)驗(yàn)中對得到的結(jié)論需進(jìn)行分析并交報(bào)告,做到知其然而知其所以然對VC開發(fā)環(huán)境部熟悉的同學(xué)在實(shí)驗(yàn)中逐步掌握所有資料請?jiān)诓┛拖螺d實(shí)驗(yàn)列表第1學(xué)時(shí)跑第一個任務(wù)第2學(xué)時(shí)調(diào)試模式跑第一個任務(wù)第3學(xué)時(shí)任務(wù)的創(chuàng)建第4學(xué)時(shí)操作系統(tǒng)初始化第5學(xué)時(shí)讓任務(wù)阻塞式延時(shí)第6學(xué)時(shí)兩個任務(wù)交替運(yùn)行第7學(xué)時(shí)理解任務(wù)堆棧和任務(wù)切換第8學(xué)時(shí)理解多任務(wù)的啟動第9學(xué)時(shí)任務(wù)的掛起和恢復(fù)第10學(xué)時(shí) 信號量管理實(shí)驗(yàn)第11學(xué)時(shí) 互斥信號量管理實(shí)驗(yàn)第12學(xué)時(shí) 事件標(biāo)志組管理實(shí)驗(yàn)第13學(xué)時(shí)消息郵箱管理實(shí)驗(yàn)第14學(xué)時(shí) 消息隊(duì)列管理實(shí)驗(yàn)第15學(xué)

3、時(shí) 內(nèi)存管理實(shí)驗(yàn)第1學(xué)時(shí)跑第一個任務(wù)本實(shí)驗(yàn)的目的是了解嵌入式實(shí)時(shí)操作系統(tǒng)COS代碼結(jié)構(gòu),將其跑起來得到直觀的認(rèn)識。實(shí)驗(yàn)步驟1.將包含全部實(shí)驗(yàn)代碼的壓縮文件解壓縮2.將VC6開發(fā)環(huán)境打開3.打開ucosexperiment目錄下的ucos_vc.dsw 4.用全部編譯(rebuild all)編譯程序,運(yùn)行程序,根據(jù)窗口提示輸出,獲得感性認(rèn)識!5.根據(jù)教材P246頁圖7.1及7.1.1和7.1.2的內(nèi)容,寫出文件目錄結(jié)構(gòu)的說明,說明嵌入式實(shí)時(shí)操作系統(tǒng)COS都由哪些部分組成第1學(xué)時(shí)跑第一個任務(wù)6.VC環(huán)境下,在工程上點(diǎn)鼠標(biāo)右鍵,查看工程的設(shè)計(jì)7.打開main.c,編輯使#define Experi

4、ment 1,使用REBUILD ALL 進(jìn)行編譯,找到可執(zhí)行文件的輸出目錄,記錄下來8.使用菜單或快捷按鈕再次執(zhí)行編譯好的程序。查看運(yùn)行結(jié)果并記錄,查看main.c及usercode.c,分析main.c及usercode.c代碼。9.說明任務(wù)堆棧的定義位置,任務(wù)在什么時(shí)候被創(chuàng)建,任務(wù)在什么時(shí)候獲得運(yùn)行。10.自己修改代碼,減少延時(shí)時(shí)間,或?qū)⒚看渭?改為其他算法,查看效果!補(bǔ)充,各個例子的運(yùn)行結(jié)果展示1準(zhǔn)備工作閱讀嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐P24-40 2.1任務(wù)管理的重要數(shù)據(jù)結(jié)構(gòu),為以后的實(shí)驗(yàn)做準(zhǔn)備第2學(xué)時(shí) 調(diào)試模式跑第一個任務(wù)本實(shí)驗(yàn)的目的在于學(xué)會使用VC的調(diào)試模式運(yùn)行和調(diào)試操作

5、系統(tǒng)。步驟1.在上次實(shí)驗(yàn)的基礎(chǔ)上不改動代碼,打開工程2.在usercode.c中的printf(“welcome to embeded systemn”);處設(shè)置斷點(diǎn)。第2學(xué)時(shí) 調(diào)試模式跑第一個任務(wù)3.如果程序中有其他斷點(diǎn),去掉4.在usercode.c中的printf(“welcome to embeded systemn”);處設(shè)置斷點(diǎn)。(設(shè)置斷點(diǎn),在代碼處按右鍵,insert breakpoint)5.按F5以調(diào)試模式運(yùn)行代碼6.如果有其他斷點(diǎn),去掉,再按F57.當(dāng)?shù)皆O(shè)定的斷點(diǎn)處停下時(shí),將VC窗口縮小,調(diào)整輸出的窗口使兩個窗口同時(shí)顯示在屏幕上8.按F10單步執(zhí)行,查看輸出9. 發(fā)現(xiàn)在延時(shí)

6、代碼循環(huán)中無法調(diào)試,在printf(“j=%dn”,j+);加斷點(diǎn),按F5第2學(xué)時(shí) 調(diào)試模式跑第一個任務(wù)10.在觀察窗口watch window輸入j, 連續(xù)按F5查看j的變化和屏幕的輸出。11.按SHIFT+F5或使用菜單結(jié)束調(diào)試,記錄12說明watch window的作用,嘗試在watch window中輸入操作系統(tǒng)的重要全局變量,P247表7.1,觀察他們的值下次實(shí)驗(yàn)的準(zhǔn)備工作閱讀嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐P41-43任務(wù)控制塊的初始化,P51-54任務(wù)的創(chuàng)建第3學(xué)時(shí) 任務(wù)的創(chuàng)建掌握任務(wù)創(chuàng)建的過程步驟1. 去掉前面的斷點(diǎn),找到main.c中OSTaskCreate(FirstT

7、ask, 0, &TaskStk5TASK_STK_SIZE-1, 5);函數(shù),設(shè)置斷點(diǎn),并按F5調(diào)試運(yùn)行,運(yùn)行代碼的時(shí)候輸入1,在運(yùn)行到斷點(diǎn)時(shí),按F11追進(jìn)函數(shù)內(nèi)部,再按F10單步運(yùn)行,與書上51頁進(jìn)行比較。2。畫出該函數(shù)運(yùn)行完成后的就緒表和就緒組,任務(wù)控制塊空閑鏈表和任務(wù)鏈表。第3學(xué)時(shí)任務(wù)創(chuàng)建的過程3.記錄所有過程,說明OSTaskCreate都做了哪些工作,任務(wù)FirstTask的任務(wù)控制塊實(shí)體是什么,在創(chuàng)建結(jié)束時(shí)其任務(wù)控制塊的內(nèi)容又是什么。記錄下來。4.試著自己編寫一個帶輸出的簡單的函數(shù),然后使用OSTaskCreate創(chuàng)建這個函數(shù),修改MAIN.c,在輸入1的時(shí)候創(chuàng)建這個函數(shù)。自己編

8、寫的函數(shù)保存在usercode.c中,并注意在usercode.h中添加函數(shù)聲明。修改完成后重新編譯執(zhí)行。下次實(shí)驗(yàn)的準(zhǔn)備工作閱讀嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐P44-50操作系統(tǒng)的初始化第4學(xué)時(shí) 操作系統(tǒng)初始化步驟1. 找到操作系統(tǒng)初始化函數(shù)OSInit,在其中設(shè)置斷點(diǎn),并按F5調(diào)試運(yùn)行,觀察OSInit執(zhí)行的過程,與書上44頁2.3操作系統(tǒng)的初始化進(jìn)行比較,記錄OSINIT都做了什么工作2。畫出OSINIT后的就緒表和就緒組,任務(wù)控制塊空閑鏈表和任務(wù)鏈表(參考書上2.1,2.2,2.3)3.記錄所有過程,說明OSINIT之后系統(tǒng)的狀況下次實(shí)驗(yàn)的準(zhǔn)備工作閱讀嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理

9、與實(shí)踐P95-97任務(wù)延時(shí)函數(shù)OSTimeDly第5學(xué)時(shí) 讓任務(wù)阻塞式延時(shí)掌握操作系統(tǒng)的初始化過程步驟1.不改動代碼,輸入?yún)?shù)1,全速運(yùn)行,打開WINDOWS任務(wù)管理器,查看,如圖注意Os_cpu.c中,確定void OSTaskIdleHook (void)Sleep(1);要改成這樣,否則空閑任務(wù)也在不同的運(yùn)行,看不到系統(tǒng)利用率的變化情況。加上這一句,將空閑任務(wù)的系統(tǒng)利用率降低第5學(xué)時(shí) 讓任務(wù)阻塞式延時(shí)2.修改代碼,使用阻塞式延時(shí),查看書上95頁3.2.3,修改延時(shí)代碼第5學(xué)時(shí) 讓任務(wù)阻塞式延時(shí)3.重新編譯,運(yùn)行。使用任務(wù)管理器查看系統(tǒng)利用率。第5學(xué)時(shí) 讓任務(wù)阻塞式延時(shí)4.記錄實(shí)驗(yàn)過程,說

10、明發(fā)生這種變化的原理。下次實(shí)驗(yàn)前準(zhǔn)備:繼續(xù)看2.1,加深對操作系統(tǒng)采用的重要數(shù)據(jù)結(jié)構(gòu)的理解第6學(xué)時(shí)兩個任務(wù)交替運(yùn)行1.編譯運(yùn)行代碼,輸入選項(xiàng)2運(yùn)行程序2.運(yùn)行查看結(jié)果第6學(xué)時(shí)兩個任務(wù)交替運(yùn)行3.查看代碼,說明為什么得到這樣的運(yùn)行結(jié)果4.修改usercode.c中E2_task2函數(shù),要求其輸出值增長速度只有E2_task1的1/2,修改后重新編譯運(yùn)行5.改變?nèi)蝿?wù)的優(yōu)先級,讓E2_task1的優(yōu)先級為6, E2_task2的優(yōu)先級為5,查看運(yùn)行結(jié)果,說明輸出的不同之處,說明原因補(bǔ)充,各個例子的運(yùn)行結(jié)果展示2下次實(shí)驗(yàn)的準(zhǔn)備預(yù)習(xí)嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐P73-80任務(wù)的調(diào)度為下次試驗(yàn)做準(zhǔn)

11、備第7學(xué)時(shí)理解任務(wù)堆棧和任務(wù)切換1.使用原始代碼2.查看在main.c,說明兩個用戶任務(wù)的堆棧都是什么,堆棧的地址是怎么傳遞給任務(wù)創(chuàng)建函數(shù)的。3.在OS_Sched函數(shù)中設(shè)置斷點(diǎn)。跟蹤調(diào)試,說明OS_Sched實(shí)現(xiàn)了哪些功能,畫出流程圖4.繼續(xù)調(diào)試OS_TASK_SW,根據(jù)書章2.1中對堆棧的描述,論述壓棧和退棧的處理過程。下次實(shí)驗(yàn)的準(zhǔn)備預(yù)習(xí)嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐P83-84多任務(wù)的啟動為下次試驗(yàn)做準(zhǔn)備第8學(xué)時(shí)理解多任務(wù)的啟動1.使用原始代碼2.查看在main.c,在OSStart();處設(shè)置斷點(diǎn)。3.調(diào)試模式運(yùn)行,跟蹤進(jìn)OSStart,然后單步運(yùn)行。參考P83-85分析代碼。5

12、.畫出OSStart流程圖4.說明OSStart的功能,說明多任務(wù)啟動的標(biāo)志是什么下次實(shí)驗(yàn)的準(zhǔn)備工作閱讀嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐P67-72任務(wù)的掛起和恢復(fù)第9學(xué)時(shí)任務(wù)的掛起和恢復(fù)1.編譯運(yùn)行代碼,輸入選項(xiàng)3繼續(xù)運(yùn)行程序2.運(yùn)行查看結(jié)果第9學(xué)時(shí)任務(wù)的掛起和恢復(fù)3.查看代碼,說明為什么得到這樣的運(yùn)行結(jié)果4.對任務(wù)代碼進(jìn)行修改,得到不同的結(jié)果5.改變?nèi)蝿?wù)的優(yōu)先級,查看運(yùn)行結(jié)果,說明輸出的不同之處,說明原因補(bǔ)充,各個例子的運(yùn)行結(jié)果展示3下次實(shí)驗(yàn)的準(zhǔn)備工作閱讀嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐P102-129事件管理的重要數(shù)據(jù)結(jié)構(gòu),事件管理程序,信號量管理第10學(xué)時(shí) 信號量管理實(shí)驗(yàn)1.例

13、子程序說明見嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐 P129,運(yùn)行結(jié)果見P133圖4.9 打開原始工程運(yùn)行代碼,輸入選項(xiàng)4繼續(xù)運(yùn)行程序2.運(yùn)行查看結(jié)果3.說明使用信號量實(shí)現(xiàn)的功能,為什么能實(shí)現(xiàn)這樣的功能,都使用了哪些數(shù)據(jù)結(jié)構(gòu)。第10學(xué)時(shí) 信號量管理實(shí)驗(yàn)4.實(shí)現(xiàn)P190,習(xí)題6(在usercode.c中編寫三個函數(shù),并修改usercode.h中的聲明,修改main.c,重新編譯查看效果)補(bǔ)充,各個例子的運(yùn)行結(jié)果展示4下次實(shí)驗(yàn)的準(zhǔn)備工作閱讀嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐P134-158 4.4互斥信號量第11學(xué)時(shí) 互斥信號量管理實(shí)驗(yàn)1.例子程序說明見嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐 P15

14、4,運(yùn)行結(jié)果見P159圖4.142. 程序運(yùn)行后,輸入5選擇例子程序53.重新編譯運(yùn)行,查看結(jié)果4.說明使用互斥信號量實(shí)現(xiàn)的功能,為什么能實(shí)現(xiàn)這樣的功能,都使用了哪些數(shù)據(jù)結(jié)構(gòu)。5.說明為什么解決了優(yōu)先級反轉(zhuǎn)的問題第11學(xué)時(shí) 互斥信號量管理實(shí)驗(yàn)5.自己設(shè)計(jì)一個使用時(shí)間標(biāo)志組的例子,編程實(shí)現(xiàn)并運(yùn)行,記錄結(jié)果。補(bǔ)充,各個例子的運(yùn)行結(jié)果展示5下次實(shí)驗(yàn)的準(zhǔn)備工作閱讀嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐P159-189 4.5事件標(biāo)志組第12學(xué)時(shí) 事件標(biāo)志組管理實(shí)驗(yàn)1.例子程序說明見嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐 P184,運(yùn)行結(jié)果見P159圖4.202. 程序運(yùn)行后,輸入6選擇例子程序63.重新編

15、譯運(yùn)行,查看結(jié)果4.說明使用事件標(biāo)志組實(shí)現(xiàn)的功能,為什么能實(shí)現(xiàn)這樣的功能,都使用了哪些數(shù)據(jù)結(jié)構(gòu)。第12學(xué)時(shí) 事件標(biāo)志組管理實(shí)驗(yàn)5.實(shí)現(xiàn)P190,習(xí)題7(在usercode.c中編寫三個函數(shù),并修改usercode.h中的聲明,修改main.c,重新編譯查看效果)補(bǔ)充,各個例子的運(yùn)行結(jié)果展示6下次實(shí)驗(yàn)的準(zhǔn)備工作閱讀嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐P191-210 5.1消息郵箱第13學(xué)時(shí) 消息郵箱管理實(shí)驗(yàn)1.例子程序說明見嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐 P208,運(yùn)行結(jié)果見P210圖5.72. 程序運(yùn)行后,輸入7選擇例子程序73.重新編譯運(yùn)行,查看結(jié)果4.說明使用消息郵箱實(shí)現(xiàn)的功能,為

16、什么能實(shí)現(xiàn)這樣的功能,都使用了哪些數(shù)據(jù)結(jié)構(gòu)。第13學(xué)時(shí) 消息郵箱管理實(shí)驗(yàn)5.實(shí)現(xiàn)P230,習(xí)題7(在usercode.c中編寫三個函數(shù),并修改usercode.h中的聲明,修改main.c,重新編譯查看效果)補(bǔ)充,各個例子的運(yùn)行結(jié)果展示7下次實(shí)驗(yàn)的準(zhǔn)備工作閱讀嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐P2111-229 5.2消息隊(duì)列第14學(xué)時(shí) 消息隊(duì)列管理實(shí)驗(yàn)1.例子程序說明見嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐 P226,運(yùn)行結(jié)果見P229圖5.122. 程序運(yùn)行后,輸入8選擇例子程序83.重新編譯運(yùn)行,查看結(jié)果4.說明使用消息隊(duì)列實(shí)現(xiàn)的功能,為什么能實(shí)現(xiàn)這樣的功能,都使用了哪些數(shù)據(jù)結(jié)構(gòu)。第14次實(shí)驗(yàn) 消息隊(duì)列管理實(shí)驗(yàn)5.實(shí)現(xiàn)P230,習(xí)題8(在usercode.c中編寫三個函數(shù),并修改usercode.h中的聲明,修改main.c,重新編譯查看效果)補(bǔ)充,各個例子的運(yùn)行結(jié)果展示8下次實(shí)驗(yàn)的準(zhǔn)備工作閱讀嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐P231-244 內(nèi)存管理第15學(xué)時(shí) 內(nèi)存管理實(shí)驗(yàn)1.例子程序說明見嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐 P241,運(yùn)行結(jié)果見P244圖6.32. 程序運(yùn)行后,輸入9選擇例子程序94.說明使用消息隊(duì)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論