嵌入式操作系統(tǒng)_第1頁(yè)
嵌入式操作系統(tǒng)_第2頁(yè)
嵌入式操作系統(tǒng)_第3頁(yè)
嵌入式操作系統(tǒng)_第4頁(yè)
嵌入式操作系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 課程設(shè)計(jì)(大作業(yè))報(bào)告課程名稱:嵌入式操作系統(tǒng) 設(shè)計(jì)題目:MQX基本要素綜合項(xiàng)目 院 系: 設(shè) 計(jì) 者昆明學(xué)院信息技術(shù)學(xué)院課程設(shè)計(jì)(大作業(yè))報(bào)告摘要 MQX已經(jīng)走過了20多年的發(fā)展歷程,基于MQX的產(chǎn)品已達(dá)數(shù)百萬(wàn)。飛思卡爾于2009年收購(gòu)MQX,并推出第一個(gè)版本MQX-RTOS3.0.1后,對(duì)其功能進(jìn)行了不斷加強(qiáng),MQX是一款免費(fèi)、開源、有技術(shù)支持,面向工業(yè)控制、醫(yī)療電子、家用電器等領(lǐng)域的嵌入式實(shí)時(shí)操作系統(tǒng)。MQX具有學(xué)習(xí)難度低,開發(fā)工具強(qiáng),外設(shè)驅(qū)動(dòng)豐富,內(nèi)核精簡(jiǎn)、架構(gòu)清晰、實(shí)時(shí)性強(qiáng)、應(yīng)用范圍廣等特點(diǎn)。與Linux相比,Linux的MMU、OpenGL功能強(qiáng)大,占用資源多,而MQX內(nèi)核精簡(jiǎn)、

2、效率高、實(shí)時(shí)性強(qiáng),更適合工業(yè)控制、醫(yī)療電子、家用電器等領(lǐng)域。因此,選用MQX作為RTOS的學(xué)習(xí)藍(lán)本,不僅入門難度小,且實(shí)際應(yīng)用的可行性大。關(guān)鍵詞: MQX、內(nèi)核精簡(jiǎn)、實(shí)時(shí)性強(qiáng)、效率高。目錄一、題目分析1二、MQX的介紹及說明1三、各任務(wù)的主要功能介紹2四、系統(tǒng)框圖3五、程序代碼及分析4六、運(yùn)行結(jié)果5七、總結(jié)5七、參考文獻(xiàn)5課程設(shè)計(jì)(大作業(yè))報(bào)告1、 題目分析MQX基本要素綜合項(xiàng)目,主要介紹一個(gè)包含MQX基本要素綜合項(xiàng)目的設(shè)計(jì)過程,主要分為幾個(gè)部分,介紹對(duì)模塊引腳做統(tǒng)一說明,介紹中斷服務(wù)例程ISR的功能設(shè)計(jì)與任務(wù)的功能設(shè)計(jì),介紹PC與MCU通信幀協(xié)議,包含幀格式和幀命令,給出MCU方主要任務(wù)的代

3、碼實(shí)現(xiàn),PC程序的界面。需求分析:將設(shè)計(jì)一個(gè)實(shí)例來(lái)驗(yàn)證SD-FSL-K60-C評(píng)估板各個(gè)模塊的硬件功能,需要包含任務(wù)、中斷、驅(qū)動(dòng)、輕量級(jí)事件、輕量級(jí)信號(hào)量、輕量級(jí)消息隊(duì)列、輕量級(jí)日志等基本要素。為區(qū)分不同的功能單元并確保數(shù)據(jù)的完整性,需要以組幀的方式完成數(shù)據(jù)的雙向傳輸。具體實(shí)現(xiàn)可通過串口發(fā)送相應(yīng)的幀數(shù)據(jù)來(lái)控制具體的模塊?;谝陨闲枨?,可運(yùn)用以上基本要素來(lái)實(shí)現(xiàn)對(duì)LED、UART、ADC、RTC、Flash等幾個(gè)模塊的測(cè)試,其中LED模塊控制板上的4盞小燈,UART模塊實(shí)現(xiàn)串口的發(fā)送接收,ADC模塊實(shí)現(xiàn)AD采樣,RTC模塊實(shí)現(xiàn)實(shí)時(shí)對(duì)時(shí),F(xiàn)lash模塊實(shí)現(xiàn)Flash的讀取。2、 MQX的介紹及說明1

4、、介紹:本部分對(duì)程序中所使用的LED,ADC,RTC,Flash,UART幾個(gè)模塊的引腳做統(tǒng)一說明。2、MQX的特點(diǎn):(1)實(shí)時(shí)性高。MQX提供高效的任務(wù)調(diào)度、內(nèi)存管理等功能。MQX采用基于優(yōu)先級(jí)的、搶占式調(diào)度策略。帶有最優(yōu)化上下文切換和中斷處理,用于實(shí)現(xiàn)快速、高效的預(yù)測(cè)響應(yīng)時(shí)間,具有高實(shí)時(shí)性。(2)內(nèi)核精簡(jiǎn)。MQX采用微內(nèi)核結(jié)構(gòu),代碼最小為16KB,RAM最小開銷為2KB,對(duì)硬件系統(tǒng)開銷較??;可以根據(jù)需要添加可定制組件,具有直接應(yīng)用編程接口API、高度模塊化架構(gòu),能夠很好地滿足各種不同應(yīng)用需求。(3)內(nèi)核免費(fèi)且有技術(shù)支持。MQX內(nèi)核完全免費(fèi),開放源碼,成本低,軟件資源豐富。(4)開發(fā)工具成熟

5、、外設(shè)驅(qū)動(dòng)豐富。(5)性價(jià)比高。3、硬件說明: LED:LED1的外接引腳為PTB6,LED2的外接引腳為PTB7,LED3的外接引腳為PTB8,LED4的外接引腳為PTB9。 ADC:因外接引腳較多,ADC0模塊的14通道為PTC0,ADC1模塊的17通道為PTA17,K60芯片溫度傳感器內(nèi)接ADC0模塊的26通道。 RTC:要使RTC模塊能夠正確運(yùn)行,首先要把K60_C型板反面上的32.768kHz晶振旁邊的R8電阻去掉。 Flash:在默認(rèn)情況下,程序中有關(guān) Flash讀寫操作的 Flash區(qū)域是在 Flash的塊0的最后若干字節(jié),使用的長(zhǎng)度取決于 Flash模塊的幀數(shù)據(jù)內(nèi)容。 Flas

6、h分為塊0和塊1,均為256KB,塊0的范圍是0x00000000-0x0003FFFF。 UART:發(fā)送引腳為PTE24,接收引腳為PTE25。3、 各任務(wù)的主要功能介紹1、主任務(wù)(task_main):完成全局變量初始化(如輕量級(jí)信號(hào)量)、外設(shè)初始化、創(chuàng)建其他任務(wù)、安裝用戶ISR。2、LED任務(wù)(task_run_LED)主要功能是用以控制K60-C板上的4盞LED燈。首先解析發(fā)給LED模塊的幀命令,控制K60-C板上的4盞LED燈的某一盞。本任務(wù)中運(yùn)用了輕量級(jí)日志,先將這6個(gè)32位的數(shù)據(jù)逐一寫入一則日志條目中,再?gòu)脑撊罩局袑?shù)據(jù)讀取出來(lái)放入一個(gè)局部變量的數(shù)組中,最后將數(shù)據(jù)放入輕量級(jí)發(fā)送消

7、息隊(duì)列中。3、解幀任務(wù)(task_decode):將由串口4接收到的完整幀數(shù)據(jù)分別復(fù)制到LED模塊、ADC模塊、RTC模塊和Flash模塊各自的緩沖區(qū),并設(shè)置各個(gè)模塊任務(wù)的事件位。4、UART任務(wù)(task_run_UART):為了防止幀數(shù)據(jù)包含幀尾類型的數(shù)據(jù),要對(duì)幀數(shù)據(jù)增加轉(zhuǎn)義字符。本任務(wù)從輕量級(jí)發(fā)送消息隊(duì)列中取出數(shù)據(jù),然后調(diào)用轉(zhuǎn)義函數(shù)對(duì)其增加轉(zhuǎn)義字符。把各個(gè)任務(wù)的存放數(shù)據(jù)的全局?jǐn)?shù)組元素定義為32位,是因?yàn)镸QX提供的輕量級(jí)消息隊(duì)列操作的數(shù)據(jù)單位為32位。5、ADC任務(wù)(task_run_ADC):主要功能是通道初始化和AD數(shù)據(jù)采集。根據(jù)幀數(shù)據(jù)中與ADC模塊相關(guān)的命令字段來(lái)區(qū)分是通道初始化操

8、作還是AD數(shù)據(jù)采集操作。通道初始化操作的模塊號(hào)與通道號(hào)來(lái)自PC界面的選項(xiàng),在默認(rèn)情況下,采樣位數(shù)定為16位,采樣次數(shù)為10次。AD數(shù)據(jù)采集操作將從最新初始化過的AD通道中采樣數(shù)據(jù),并在該操作的最后,將采樣數(shù)據(jù)放入輕量級(jí)發(fā)送消息隊(duì)列中。6、RTC任務(wù)(task_run_RTC):主要功能是時(shí)間對(duì)表和回發(fā)當(dāng)前RTC時(shí)間。這兩種操作實(shí)際上操縱的都是相對(duì)于公共參考時(shí)間的相對(duì)秒數(shù),只是PC把相對(duì)秒數(shù)轉(zhuǎn)換過后顯示絕對(duì)時(shí)間,時(shí)間對(duì)表也不回發(fā)數(shù)據(jù),對(duì)表正確性與否可通過回發(fā)當(dāng)前RTC時(shí)間操作在PC的顯示的時(shí)間信息來(lái)判斷。在該任務(wù)最后,將實(shí)時(shí)時(shí)鐘的相關(guān)幀數(shù)據(jù)放入輕量級(jí)發(fā)送消息隊(duì)列中。7、Flash任務(wù)(task_

9、run_FLASH):主要功能是向Flash讀取數(shù)據(jù),在該例子中Flash功能較為簡(jiǎn)單,不提供Flash隨機(jī)讀寫。讀寫操作的Flash區(qū)域是在Flash的塊0的最后若干字節(jié),長(zhǎng)度取決于Flash模塊的幀數(shù)據(jù)內(nèi)容。四、系統(tǒng)框圖系統(tǒng)框圖12. 幀格式:幀頭幀長(zhǎng)模塊編碼有效數(shù)據(jù)幀尾命令編碼命令參數(shù)1B1B1B1BNB1B各字段的含義現(xiàn)介紹如下:幀頭:0xAA。幀長(zhǎng):包括幀頭、幀長(zhǎng)、模塊編號(hào)、有效數(shù)據(jù)、幀尾五個(gè)部分在內(nèi)的所有字節(jié)總數(shù)。模塊編號(hào):0x01、0x02、0x03、0x04分別對(duì)應(yīng)LED、ADC、RTC、Flash。有效數(shù)據(jù):每一個(gè)模塊以不同的操作來(lái)區(qū)分不同的命令,長(zhǎng)度根據(jù)模塊的使用情況而定。

10、幀尾:0x55。MCU僅在把數(shù)據(jù)回發(fā)給PC時(shí)增加了轉(zhuǎn)義字符,以提高PC解析MCU數(shù)據(jù)幀的速度,程序中轉(zhuǎn)義字符約定為0xA5。幀數(shù)據(jù)中除幀頭、幀尾之外,如果遇到0xAA、0xA5、0x55,就在這幾個(gè)數(shù)據(jù)之前增加一個(gè)0x55,以區(qū)別幀頭、轉(zhuǎn)義、之外。而PC在將幀數(shù)據(jù)發(fā)給MCU時(shí)并不增加轉(zhuǎn)義字符。 五、程序代碼及分析改進(jìn)后的代碼:switch(gLED_Buff4) case 0x01:light_control(Light_D1,LIGHT_OFF); / 設(shè)定為高電平light_control(Light_D2,LIGHT_ON);light_control(Light_D3,LIGHT_ON

11、);light_control(Light_D4,LIGHT_ON);break;case 0x02:light_control(Light_D1,LIGHT_ON);light_control(Light_D2,LIGHT_OFF); / 設(shè)定為高電平light_control(Light_D3,LIGHT_ON); light_control(Light_D4,LIGHT_ON); break; case 0x03: light_control(Light_D1,LIGHT_ON); light_control(Light_D2,LIGHT_ON);light_control(Light_

12、D3,LIGHT_OFF); light_control(Light_D4,LIGHT_ON);/light_control(Light_D3,LIGHT_OFF);break;case 0x04: light_control(Light_D1,LIGHT_ON); / 設(shè)定為高電平light_control(Light_D2,LIGHT_ON);light_control(Light_D3,LIGHT_ON); / 設(shè)定為高電平light_control(Light_D4,LIGHT_OFF); /light_control(Light_D4,LIGHT_OFF); break; defau

13、lt:break;思想分析:LED燈開始是全亮的,首先Light_D1關(guān)閉,則其余三個(gè)小燈都打開,因?yàn)槭侨》?,所以?dāng)關(guān)閉的時(shí)候燈是亮的,其他的小燈也一樣。1、串口4的ISR:設(shè)計(jì)串口4的ISR的目的是為了接收PC發(fā)來(lái)的數(shù)據(jù)幀,并將完整的數(shù)據(jù)幀傳遞給解幀任務(wù)。2、設(shè)計(jì)主任務(wù)的目的是完成解幀任務(wù)、LED任務(wù)、ADC任務(wù)、RTC任務(wù)、Flash任務(wù)、UART任務(wù)正常運(yùn)行之前的準(zhǔn)備工作。3、解析幀數(shù)據(jù)是發(fā)送給哪一個(gè)模塊工作,如果放在串口4的ISR中完成,會(huì)大大降低串口4的組幀函數(shù)的重用性,為把該工作獨(dú)立出來(lái),增加一個(gè)解幀任務(wù)來(lái)完成。4、設(shè)計(jì)LED任務(wù)的目的是接收PC的命令,控制K60-C板上的4盞LE

14、D燈的亮暗。5、設(shè)計(jì)ADC任務(wù)的目的是為了控制ADC通道進(jìn)行AD數(shù)據(jù)采集。6、設(shè)計(jì)RTC任務(wù)的目的是為了控制RTC模塊計(jì)時(shí)。7、設(shè)計(jì)Flash任務(wù)的目的是為了控制Flash模塊完成數(shù)據(jù)的寫操作與讀操作。8、設(shè)計(jì)UART任務(wù)的目的是為了測(cè)試UART4模塊,同時(shí)完成將數(shù)據(jù)幀傳遞到輕量級(jí)消息隊(duì)列的工作。六、運(yùn)行結(jié)果七、總結(jié) 通過此次嵌入式操作系統(tǒng)課程設(shè)計(jì),在課程設(shè)計(jì)期間,編寫程序代碼并進(jìn)行修改。編寫完成程序代碼運(yùn)行中出現(xiàn)了好多個(gè)錯(cuò)誤和警告,與同學(xué)討論之后改正了幾個(gè)錯(cuò)誤但是還存在錯(cuò)誤沒有修改完,后面又問了其他同學(xué)加上自己查閱資料,找出了錯(cuò)誤的出處。在這次課程設(shè)計(jì)中讓我更加的掌握了這門課程中平時(shí)所沒有掌握的知識(shí),并且能夠把嵌入式操作系統(tǒng)很好的運(yùn)用,也提高了我的知識(shí)領(lǐng)域。結(jié)束了兩周的課程設(shè)計(jì),也讓我從課

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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)論