版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、ARM7的移植和游戲設計俞建定 葉軍 嚴潔卿【摘要】實時操作系統(tǒng)的使用,能夠簡化嵌入式系統(tǒng)的應用開發(fā),有效地確保穩(wěn)定性和可靠性,便于維護和二次開發(fā)。C/OS-II是一個基于搶占式的實時多任務內核,可固化、可剪裁、具有高穩(wěn)定性和可靠性,除此以外,C/OS-II的鮮明特點就是源碼公開,便于移植和維護。本文介紹如何將µC/OS-II操作系統(tǒng)移植到LPC2210,同時運用一種適用于uC/OS-II的圖形界面ZLG/GUI來實現(xiàn)貪食蛇游戲?!娟P鍵字】實時操作系統(tǒng)µC/OS-II,ZLG/GUI,LPC2100,移植【Abstract】The application of the re
2、al-time operation system could predigest the development process of Embedded system, and guarantee the stability and reliability of it, as well as make it easy to maintain and re-develop the embedded system. C/OS-II is a real- time and multitask kernel based on a so called ”anticipated way”, it coul
3、d be solidified and cut, with very high stability and reliability. Besides, C/OS-II publishes its original code, and this very trait make it convenient for migrating and maintaining. this article describes how to Migrating on LPC2210 singlechip processors and introduces the process of programming th
4、e gluttony snake with ZLG/GUI, one of GUIs for uC/OS-II.【Keyword】 The Real-Time operation system, ZLG/GUI, LPC2100, Migrating一引言 當談到進行嵌入式系統(tǒng)開發(fā)時,開發(fā)平臺也是不可缺少的。開發(fā)平臺通常具有多種功能和豐富的接口,用戶只需要在上面進行應用程序開發(fā)就可以了,這樣可以大大節(jié)約項目的開發(fā)周期, ARM7微處理器處理速度快、超低功耗、應用前景廣泛、價格低廉,又由于µC/OSII采用C語言和匯編語言,其中絕大部分用C語言,結構非常簡潔,同時µC/OSI
5、I可移植性非常好,很容易就能被移植到各種微處理器上,而且在移植過程中,用戶只需要做少量的工作即可,以及µC/OSII具備了實時操作系統(tǒng)的全部性能,非常適合初次接觸嵌入式技術的初學者和工作人員作為學習嵌入式技術使用。ZLG/GUI是一款嵌入式系統(tǒng)簡易的圖形用戶界面,它提供了最基本的畫點、線、圓形、圓弧、橢圓形、矩形、正方形和填充等功能,較高級的接口功能,由ASCII顯示、漢字顯示、圖形顯示、窗口和菜單等,支持單色、灰度、偽彩和真彩等圖形顯示設備。二移植µC/OSII要移植一個操作系統(tǒng)到一個特定的CPU體系結構上并不是一件很容易的事情,它對移植者有以下要求:1. 對目標體系機構
6、要有很深的了解;2. 對OS原理要有較深入的了解;3. 對所使用的編譯器要有較深入的了解;4. 對需要移植的操作系統(tǒng)要有相當?shù)牧私猓?. 對具體適用的芯片也要有一定的了解;根據µC/OSII的要求,移植µC/OSII到一個新的體系結構上需要提供2個或3個文件:OS_CPU.H(C語言頭文件)、OS_CPU_C.C(C程序源文件)及OS_CPU_A.ASM(匯編程序源文件)。21 編寫應用程序 移植µC/OSII是為了在自己的系統(tǒng)使用µC/OSII。要在自己的系統(tǒng)中使用µC/OSII編寫自己的應用程序,就必須遵守µC/OSII的編程規(guī)范
7、。下面的程序清單為應用程序的main()函數(shù)以及相關的代碼,應用程序主函數(shù):int main(void) OSInit (); OSTaskCreate (Task0,(void *)0, &TaskStk0TaskStkLengh - 1, 3); /創(chuàng)建任務0 KeyMbox = OSMboxCreate(NULL); / 建立一個郵箱,用于傳遞按鍵消息 OSStart (); return 0;在使用µC/OSII提供的任何功能之前,必須調用函數(shù)OSInit (),它完成µC/OSII的初始化并建立空閑任務,在開始多任務之前,必須建立至少一個用戶任務(不包括&
8、#181;C/OSII的空閑任務),這是通過調用函數(shù)OSTaskCreate()或函數(shù)OSTaskCreateExt()實現(xiàn)。最后函數(shù)main()調用函數(shù)OSStart()將控制權交給µC/OSII內核,main()函數(shù)也就結束了。 然后編寫任務的代碼,µC/OSII規(guī)定任務是不允許返回的,不過程序一般通過死循環(huán)實現(xiàn),或者通過調用函數(shù)OSRaskDel()來實現(xiàn)。任務代碼框架如下: Void Task0(void *pdata) Pdata=pdata; /避免編譯警告 TargetInit(); /目標板初始化 For(;) 程序代碼; 2.2 實現(xiàn)目標簡介將µ
9、C/OSII移植到LPC2210上,利用µC/OSII的任務管理系統(tǒng)對于所有的任務進行管理調度。建立三個任務(不包括空閑任務),其中一個高優(yōu)先級的任務一直實現(xiàn)液晶初始化,顯示開機畫面和定義游戲的暫停開始及退出按鍵;另外兩個低優(yōu)先級的任,分別實現(xiàn)游戲方向鍵定義和游戲運動畫面等功能。 任務0一開始初始化液晶,顯示游戲的開機畫面,然后創(chuàng)建任務1和任務2并將任務2掛起,處于待開始階段,然后建立一個死循環(huán),用來不停地掃描鍵盤,實現(xiàn)游戲的退出、暫停、恢復游戲等功能。任務1則定義開始游戲后的方向鍵,其中掃描鍵盤之前建立一個郵箱,當有按鍵時將按鍵信息發(fā)送到郵箱,然后根據要實現(xiàn)的功能從郵箱中取回按鍵值
10、實現(xiàn)游戲的控制功能,然后將郵箱清空。 任務2則創(chuàng)建貪食蛇游戲的運動軌跡,定義游戲中的邊界,繪制貪食蛇游戲中的豆子,和定義游戲是否結束。游蛇運動采用了連續(xù)賦值的思路,首先開始游戲的時候繪制蛇頭、蛇身、和蛇尾,其中將蛇尾定義成結構體,并定義蛇尾的坐標為snake.a0和snake.b0,分別為蛇尾的橫坐標和縱坐標。然后游蛇蛇頭向前運動,并將原先的蛇頭坐標賦給蛇身,蛇身原先的坐標賦給蛇尾,如果蛇身增長則把蛇尾原先坐標賦給增加的蛇身,然后擦除游蛇左右一節(jié)圖形。在任務2執(zhí)行的時候任務0和任務1都同在執(zhí)行,同時為了保證按鍵的準確,按鍵的延時時間小于繪制游蛇的延時時間。三系統(tǒng)的設計與實現(xiàn)3.1 硬件系統(tǒng)構架
11、硬件部分的主要是由外部Flash存儲器、按鍵電路、JTAG接口、液晶接口。采用的液晶模塊為RT240128A作為圖形界面的輸出顯示。RT240128A 點陣圖形液晶模塊的點像素為240 ×128 點白色字/藍色底STN 液晶屏,視角為6:00 內嵌控制器為東芝公司的T6963C 外部顯示存儲器為32K 字節(jié)模塊的電路原理框圖如下圖所示圖3.1 液晶原理圖EasyARM2200 開發(fā)板可以直接支持RT240128A點陣圖形液晶模塊或相兼容的液晶模塊應用連接電路如圖5. 23 所示采用8 位總線方式連接RT240128A點陣圖形液晶模塊的沒有地址總線顯示地址和顯示數(shù)據均通過DB0 DB7
12、 接口實現(xiàn)由于模塊工作電源是5V而LPC2210 的I/O 電壓為3.3V 所以在總線上串接470 保護電阻圖形液晶模塊的C/D 與A1 連接用于控制模塊處理數(shù)據/命令將C/D 與A1連接有一個好處就是LPC2210可以使用16 位總線方式操作該圖形液晶模塊(高8 位數(shù)據被忽略) 模塊的片選信號由LPC2210 的A22 和外部存儲器BANK3 片選CS3 相或后得到當A22 和nCS3 同時為0 時模塊被選中所以其數(shù)據操作地址為0x83000000 命令操作地址為0x83000002,使用LPC2210 的總線對RT240128A 點陣圖形液晶模塊操作控制前先要設置芯片的外部存儲器控制器(E
13、MC) 。液晶與ARM7連接電路圖如下圖所示:圖3.2 液晶連接電路圖設計中的圖形用到了GUI_ClearSCR()、GUI_RectangleFill()、GUI_LoadPic()個函數(shù),其中貪食蛇的蛇和食物是通過用字模工具將用圖像處理工具處理好的圖片轉換成字模得到,用GUI_RectangleFill()實現(xiàn)繪制游蛇邊界和擦除圖片的功能,用GUI_LoadPic()則調用字模生成的圖片顯示在液晶上。下面介紹這幾個函數(shù)的使用。 1GUI_ClearSCR() 功能是清屏,入口參數(shù)和出口參數(shù)均無void GUI_ClearSCR(void) GUI_FillSCR(0x00); 其中GUI_
14、FillSCR()是全屏填充,直接使用數(shù)據填充顯示緩沖區(qū) ,入口參數(shù):dat填充的數(shù)據(對于黑白色LCM,為0的點滅,為1的點顯示) ,出口參數(shù):無。 2GUI_RectangleFill() 功能是填充矩形。畫一個填充的矩形,填充色與邊框色一樣。入口參數(shù): x0矩形左上角的x坐標值 y0矩形左上角的y坐標值 x1 矩形右下角的x坐標值 y1 矩形右下角的y坐標值 color 填充顏色出口參數(shù):無當color為1時則起到了填充的作用,當為0時起到了在一定范圍內擦除圖形的作用。3.3 按鍵控制 按鍵控制通過消息郵箱機制實現(xiàn)的。消息郵箱(簡稱郵箱)是µC/OSII中的另一種通信機制,可以
15、使一個任務或者中斷服務子程序向另一個任務發(fā)送一個指針型的變量。通常該指針指向一個包含了“消息”的特定數(shù)據結構。 3.4 游戲設計在游戲程序中,主任務0主要完成一些初始化的工作,開機畫面的顯示。在任務2種一開始將屏幕清屏,然后繪制貪食蛇游戲的邊界和計分狀態(tài),最后進入一個無限循環(huán),在循環(huán)體中根據游戲者的按鍵進行相應的處理,詳細流程圖如下圖所示:繪制游蛇的邊界圖案顯示游戲界面右邊的靜態(tài)圖片和計分清零初始化蛇的位置以及蛇的游動方向等待鍵盤掃描任務發(fā)來的消息判斷按鍵的值 Reset鍵 暫停鍵 方向鍵 把任務2掛起,使游戲暫停重新創(chuàng)建任務2,重新開始游戲改變蛇游動的方向延時 圖3.3 貪食蛇吃豆的任務流程
16、圖 蛇的動態(tài)顯示建立在任務2,主要是不停的更新蛇的位置,另外每更新一次還需要判斷蛇是否碰到邊界,是否碰到自己身子,是否吃到豆子等。其流程圖如下圖所示: 游戲 結束否? 是 否更新蛇的位置,將蛇頭原來坐標賦給蛇身,蛇身原來坐標賦給蛇尾。是否碰到邊界或自己身體 是游戲結束是否吃到豆子 否 是增加蛇身的長度更新豆子蛇身各坐標賦值延時圖3.4 蛇的動態(tài)顯示結束語本文提出了一個應用來介紹了ARM7的移植研究。在深刻研究µC/OSII的任務管理的前提下,利用uC/OS-II的圖形界面ZLG/GUI來實現(xiàn)貪食蛇游戲。這套應用于多任務控制的特點,從而進一步簡化系統(tǒng)開發(fā)的可操作性、可修改,維護性。整個
17、系統(tǒng)功能實現(xiàn)、演示操作方面,都已取得了較好的成果。本課題獲得省教委藍牙技術在氣壓檢測中的應用資助項目,課題編號2004340。參考文獻1Jean J.Labrosse著,邵貝貝譯.嵌入式實時操作系統(tǒng)µC/OSII(第2版) 北京航空航天大學出版社 北京 2003年5月第1版2王田苗.嵌入式系統(tǒng)設計與實例開發(fā)基于ARM微處理器與µC/OSII實時操作系統(tǒng)(第二版) 清華大學出版社 北京 2003年10月第2版3 嵌入式應用程序開發(fā)綜合實驗9例基于博創(chuàng)ARM300教學平臺和各類手持設備清華大學出版社 2004年6月第1版 4 LPC2210/2220 16/32-bit ARM microcontrollers; flashless with 64 kB,with
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五校聯(lián)考九年級上學期語文開學考試卷
- 菠蘿幼兒課件教學課件
- 過渡合同范本(2篇)
- 股份協(xié)議書(2篇)
- 學生會培訓演講外聯(lián)部
- 四川機電高級技工學校災后恢復重建項目施工組織設計
- 南京工業(yè)大學浦江學院《路由交換技術》2023-2024學年期末試卷
- 簡單專業(yè)分包合同(2篇)
- 南京工業(yè)大學《影視與影像(視聽語言與創(chuàng)意表達)》2021-2022學年第一學期期末試卷
- 南京工業(yè)大學《土質學與土力學》2023-2024學年第一學期期末試卷
- 重慶市社會保險登記表
- GB/T 17396-2022液壓支柱用熱軋無縫鋼管
- 國家開放大學《植物生理學》形考作業(yè)1-3+話題討論1-3參考答案
- GB/T 39415.1-2020包裝袋特征性能規(guī)范方法第1部分:紙袋
- GB 26512-2021商用車駕駛室乘員保護
- Tio2材料的性質及應用-課件
- 教育科研專題講座課件
- 建筑工程常用英語詞匯
- 熱工基礎第一章
- 2022版小學英語新課標詳細解讀中小學英語教師培訓PPT模板
- 塔式起重機安裝、使用、拆卸專項方案
評論
0/150
提交評論