嵌入式操作系統_第1頁
嵌入式操作系統_第2頁
嵌入式操作系統_第3頁
嵌入式操作系統_第4頁
嵌入式操作系統_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

3、碼實現,PC程序的界面。需求分析:將設計一個實例來驗證SD-FSL-K60-C評估板各個模塊的硬件功能,需要包含任務、中斷、驅動、輕量級事件、輕量級信號量、輕量級消息隊列、輕量級日志等基本要素。為區分不同的功能單元并確保數據的完整性,需要以組幀的方式完成數據的雙向傳輸。具體實現可通過串口發送相應的幀數據來控制具體的模塊。基于以上需求,可運用以上基本要素來實現對LED、UART、ADC、RTC、Flash等幾個模塊的測試,其中LED模塊控制板上的4盞小燈,UART模塊實現串口的發送接收,ADC模塊實現AD采樣,RTC模塊實現實時對時,Flash模塊實現Flash的讀取。2、 MQX的介紹及說明1

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

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

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

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

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

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

10、幀尾:0x55。MCU僅在把數據回發給PC時增加了轉義字符,以提高PC解析MCU數據幀的速度,程序中轉義字符約定為0xA5。幀數據中除幀頭、幀尾之外,如果遇到0xAA、0xA5、0x55,就在這幾個數據之前增加一個0x55,以區別幀頭、轉義、之外。而PC在將幀數據發給MCU時并不增加轉義字符。 五、程序代碼及分析改進后的代碼:switch(gLED_Buff4) case 0x01:light_control(Light_D1,LIGHT_OFF); / 設定為高電平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); / 設定為高電平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); / 設定為高電平light_control(Light_D2,LIGHT_ON);light_control(Light_D3,LIGHT_ON); / 設定為高電平light_control(Light_D4,LIGHT_OFF); /light_control(Light_D4,LIGHT_OFF); break; defau

13、lt:break;思想分析:LED燈開始是全亮的,首先Light_D1關閉,則其余三個小燈都打開,因為是取反,所以當關閉的時候燈是亮的,其他的小燈也一樣。1、串口4的ISR:設計串口4的ISR的目的是為了接收PC發來的數據幀,并將完整的數據幀傳遞給解幀任務。2、設計主任務的目的是完成解幀任務、LED任務、ADC任務、RTC任務、Flash任務、UART任務正常運行之前的準備工作。3、解析幀數據是發送給哪一個模塊工作,如果放在串口4的ISR中完成,會大大降低串口4的組幀函數的重用性,為把該工作獨立出來,增加一個解幀任務來完成。4、設計LED任務的目的是接收PC的命令,控制K60-C板上的4盞LE

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

溫馨提示

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

評論

0/150

提交評論