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

下載本文檔

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

文檔簡(jiǎn)介

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

2、的視頻!實(shí)驗(yàn)前言實(shí)驗(yàn)參考書:嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐2012 電子工業(yè)出版社實(shí)驗(yàn)前需學(xué)習(xí)對(duì)應(yīng)部分實(shí)驗(yàn)中對(duì)得到的結(jié)論需進(jìn)行分析并交報(bào)告,做到知其然而知其所以然對(duì)VC開(kāi)發(fā)環(huán)境部熟悉的同學(xué)在實(shí)驗(yàn)中逐步掌握所有資料請(qǐng)?jiān)诓┛拖螺d實(shí)驗(yàn)列表第1學(xué)時(shí)跑第一個(gè)任務(wù)第2學(xué)時(shí)調(diào)試模式跑第一個(gè)任務(wù)第3學(xué)時(shí)任務(wù)的創(chuàng)建第4學(xué)時(shí)操作系統(tǒng)初始化第5學(xué)時(shí)讓任務(wù)阻塞式延時(shí)第6學(xué)時(shí)兩個(gè)任務(wù)交替運(yùn)行第7學(xué)時(shí)理解任務(wù)堆棧和任務(wù)切換第8學(xué)時(shí)理解多任務(wù)的啟動(dòng)第9學(xué)時(shí)任務(wù)的掛起和恢復(fù)第10學(xué)時(shí) 信號(hào)量管理實(shí)驗(yàn)第11學(xué)時(shí) 互斥信號(hào)量管理實(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í)跑第一個(gè)任務(wù)本實(shí)驗(yàn)的目的是了解嵌入式實(shí)時(shí)操作系統(tǒng)COS代碼結(jié)構(gòu),將其跑起來(lái)得到直觀的認(rèn)識(shí)。實(shí)驗(yàn)步驟1.將包含全部實(shí)驗(yàn)代碼的壓縮文件解壓縮2.將VC6開(kāi)發(fā)環(huán)境打開(kāi)3.打開(kāi)ucosexperiment目錄下的ucos_vc.dsw 4.用全部編譯(rebuild all)編譯程序,運(yùn)行程序,根據(jù)窗口提示輸出,獲得感性認(rèn)識(shí)!5.根據(jù)教材P246頁(yè)圖7.1及7.1.1和7.1.2的內(nèi)容,寫出文件目錄結(jié)構(gòu)的說(shuō)明,說(shuō)明嵌入式實(shí)時(shí)操作系統(tǒng)COS都由哪些部分組成第1學(xué)時(shí)跑第一個(gè)任務(wù)6.VC環(huán)境下,在工程上點(diǎn)鼠標(biāo)右鍵,查看工程的設(shè)計(jì)7.打開(kāi)main.c,編輯使#define Experi

4、ment 1,使用REBUILD ALL 進(jìn)行編譯,找到可執(zhí)行文件的輸出目錄,記錄下來(lái)8.使用菜單或快捷按鈕再次執(zhí)行編譯好的程序。查看運(yùn)行結(jié)果并記錄,查看main.c及usercode.c,分析main.c及usercode.c代碼。9.說(shuō)明任務(wù)堆棧的定義位置,任務(wù)在什么時(shí)候被創(chuàng)建,任務(wù)在什么時(shí)候獲得運(yùn)行。10.自己修改代碼,減少延時(shí)時(shí)間,或?qū)⒚看渭?改為其他算法,查看效果!補(bǔ)充,各個(gè)例子的運(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)試模式跑第一個(gè)任務(wù)本實(shí)驗(yàn)的目的在于學(xué)會(huì)使用VC的調(diào)試模式運(yùn)行和調(diào)試操作

5、系統(tǒng)。步驟1.在上次實(shí)驗(yàn)的基礎(chǔ)上不改動(dòng)代碼,打開(kāi)工程2.在usercode.c中的printf(“welcome to embeded systemn”);處設(shè)置斷點(diǎn)。第2學(xué)時(shí) 調(diào)試模式跑第一個(gè)任務(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)整輸出的窗口使兩個(gè)窗口同時(shí)顯示在屏幕上8.按F10單步執(zhí)行,查看輸出9. 發(fā)現(xiàn)在延時(shí)

6、代碼循環(huán)中無(wú)法調(diào)試,在printf(“j=%dn”,j+);加斷點(diǎn),按F5第2學(xué)時(shí) 調(diào)試模式跑第一個(gè)任務(wù)10.在觀察窗口watch window輸入j, 連續(xù)按F5查看j的變化和屏幕的輸出。11.按SHIFT+F5或使用菜單結(jié)束調(diào)試,記錄12說(shuō)明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)建的過(guò)程步驟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頁(yè)進(jìn)行比較。2。畫出該函數(shù)運(yùn)行完成后的就緒表和就緒組,任務(wù)控制塊空閑鏈表和任務(wù)鏈表。第3學(xué)時(shí)任務(wù)創(chuàng)建的過(guò)程3.記錄所有過(guò)程,說(shuō)明OSTaskCreate都做了哪些工作,任務(wù)FirstTask的任務(wù)控制塊實(shí)體是什么,在創(chuàng)建結(jié)束時(shí)其任務(wù)控制塊的內(nèi)容又是什么。記錄下來(lái)。4.試著自己編寫一個(gè)帶輸出的簡(jiǎn)單的函數(shù),然后使用OSTaskCreate創(chuàng)建這個(gè)函數(shù),修改MAIN.c,在輸入1的時(shí)候創(chuàng)建這個(gè)函數(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í)行的過(guò)程,與書上44頁(yè)2.3操作系統(tǒng)的初始化進(jìn)行比較,記錄OSINIT都做了什么工作2。畫出OSINIT后的就緒表和就緒組,任務(wù)控制塊空閑鏈表和任務(wù)鏈表(參考書上2.1,2.2,2.3)3.記錄所有過(guò)程,說(shuō)明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)的初始化過(guò)程步驟1.不改動(dòng)代碼,輸入?yún)?shù)1,全速運(yùn)行,打開(kāi)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頁(yè)3.2.3,修改延時(shí)代碼第5學(xué)時(shí) 讓任務(wù)阻塞式延時(shí)3.重新編譯,運(yùn)行。使用任務(wù)管理器查看系統(tǒng)利用率。第5學(xué)時(shí) 讓任務(wù)阻塞式延時(shí)4.記錄實(shí)驗(yàn)過(guò)程,說(shuō)

10、明發(fā)生這種變化的原理。下次實(shí)驗(yàn)前準(zhǔn)備:繼續(xù)看2.1,加深對(duì)操作系統(tǒng)采用的重要數(shù)據(jù)結(jié)構(gòu)的理解第6學(xué)時(shí)兩個(gè)任務(wù)交替運(yùn)行1.編譯運(yùn)行代碼,輸入選項(xiàng)2運(yùn)行程序2.運(yùn)行查看結(jié)果第6學(xué)時(shí)兩個(gè)任務(wù)交替運(yùn)行3.查看代碼,說(shuō)明為什么得到這樣的運(yùn)行結(jié)果4.修改usercode.c中E2_task2函數(shù),要求其輸出值增長(zhǎng)速度只有E2_task1的1/2,修改后重新編譯運(yùn)行5.改變?nèi)蝿?wù)的優(yōu)先級(jí),讓E2_task1的優(yōu)先級(jí)為6, E2_task2的優(yōu)先級(jí)為5,查看運(yùn)行結(jié)果,說(shuō)明輸出的不同之處,說(shuō)明原因補(bǔ)充,各個(gè)例子的運(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,說(shuō)明兩個(gè)用戶任務(wù)的堆棧都是什么,堆棧的地址是怎么傳遞給任務(wù)創(chuàng)建函數(shù)的。3.在OS_Sched函數(shù)中設(shè)置斷點(diǎn)。跟蹤調(diào)試,說(shuō)明OS_Sched實(shí)現(xiàn)了哪些功能,畫出流程圖4.繼續(xù)調(diào)試OS_TASK_SW,根據(jù)書章2.1中對(duì)堆棧的描述,論述壓棧和退棧的處理過(guò)程。下次實(shí)驗(yàn)的準(zhǔn)備預(yù)習(xí)嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐P83-84多任務(wù)的啟動(dòng)為下次試驗(yàn)做準(zhǔn)備第8學(xué)時(shí)理解多任務(wù)的啟動(dòng)1.使用原始代碼2.查看在main.c,在OSStart();處設(shè)置斷點(diǎn)。3.調(diào)試模式運(yùn)行,跟蹤進(jìn)OSStart,然后單步運(yùn)行。參考P83-85分析代碼。5

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

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

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

15、譯運(yùn)行,查看結(jié)果4.說(shuō)明使用事件標(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中編寫三個(gè)函數(shù),并修改usercode.h中的聲明,修改main.c,重新編譯查看效果)補(bǔ)充,各個(gè)例子的運(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.例子程序說(shuō)明見(jiàn)嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐 P208,運(yùn)行結(jié)果見(jiàn)P210圖5.72. 程序運(yùn)行后,輸入7選擇例子程序73.重新編譯運(yùn)行,查看結(jié)果4.說(shuō)明使用消息郵箱實(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中編寫三個(gè)函數(shù),并修改usercode.h中的聲明,修改main.c,重新編譯查看效果)補(bǔ)充,各個(gè)例子的運(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.例子程序說(shuō)明見(jiàn)嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐 P226,運(yùn)行結(jié)果見(jiàn)P229圖5.122. 程序運(yùn)行后,輸入8選擇例子程序83.重新編譯運(yùn)行,查看結(jié)果4.說(shuō)明使用消息隊(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中編寫三個(gè)函數(shù),并修改usercode.h中的聲明,修改main.c,重新編譯查看效果)補(bǔ)充,各個(gè)例子的運(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.例子程序說(shuō)明見(jiàn)嵌入式實(shí)時(shí)操作系統(tǒng)C/OS原理與實(shí)踐 P241,運(yùn)行結(jié)果見(jiàn)P244圖6.32. 程序運(yùn)行后,輸入9選擇例子程序94.說(shuō)明使用消息隊(duì)

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論