ARM的移植和游戲設(shè)計(jì)_第1頁(yè)
ARM的移植和游戲設(shè)計(jì)_第2頁(yè)
ARM的移植和游戲設(shè)計(jì)_第3頁(yè)
ARM的移植和游戲設(shè)計(jì)_第4頁(yè)
ARM的移植和游戲設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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、ARM7的移植和游戲設(shè)計(jì)俞建定 葉軍 嚴(yán)潔卿【摘要】實(shí)時(shí)操作系統(tǒng)的使用,能夠簡(jiǎn)化嵌入式系統(tǒng)的應(yīng)用開(kāi)發(fā),有效地確保穩(wěn)定性和可靠性,便于維護(hù)和二次開(kāi)發(fā)。C/OS-II是一個(gè)基于搶占式的實(shí)時(shí)多任務(wù)內(nèi)核,可固化、可剪裁、具有高穩(wěn)定性和可靠性,除此以外,C/OS-II的鮮明特點(diǎn)就是源碼公開(kāi),便于移植和維護(hù)。本文介紹如何將µC/OS-II操作系統(tǒng)移植到LPC2210,同時(shí)運(yùn)用一種適用于uC/OS-II的圖形界面ZLG/GUI來(lái)實(shí)現(xiàn)貪食蛇游戲?!娟P(guān)鍵字】實(shí)時(shí)操作系統(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一引言 當(dāng)談到進(jìn)行嵌入式系統(tǒng)開(kāi)發(fā)時(shí),開(kāi)發(fā)平臺(tái)也是不可缺少的。開(kāi)發(fā)平臺(tái)通常具有多種功能和豐富的接口,用戶只需要在上面進(jìn)行應(yīng)用程序開(kāi)發(fā)就可以了,這樣可以大大節(jié)約項(xiàng)目的開(kāi)發(fā)周期, ARM7微處理器處理速度快、超低功耗、應(yīng)用前景廣泛、價(jià)格低廉,又由于µC/OSII采用C語(yǔ)言和匯編語(yǔ)言,其中絕大部分用C語(yǔ)言,結(jié)構(gòu)非常簡(jiǎn)潔,同時(shí)µC/OSI

5、I可移植性非常好,很容易就能被移植到各種微處理器上,而且在移植過(guò)程中,用戶只需要做少量的工作即可,以及µC/OSII具備了實(shí)時(shí)操作系統(tǒng)的全部性能,非常適合初次接觸嵌入式技術(shù)的初學(xué)者和工作人員作為學(xué)習(xí)嵌入式技術(shù)使用。ZLG/GUI是一款嵌入式系統(tǒng)簡(jiǎn)易的圖形用戶界面,它提供了最基本的畫(huà)點(diǎn)、線、圓形、圓弧、橢圓形、矩形、正方形和填充等功能,較高級(jí)的接口功能,由ASCII顯示、漢字顯示、圖形顯示、窗口和菜單等,支持單色、灰度、偽彩和真彩等圖形顯示設(shè)備。二移植µC/OSII要移植一個(gè)操作系統(tǒng)到一個(gè)特定的CPU體系結(jié)構(gòu)上并不是一件很容易的事情,它對(duì)移植者有以下要求:1. 對(duì)目標(biāo)體系機(jī)構(gòu)

6、要有很深的了解;2. 對(duì)OS原理要有較深入的了解;3. 對(duì)所使用的編譯器要有較深入的了解;4. 對(duì)需要移植的操作系統(tǒng)要有相當(dāng)?shù)牧私猓?. 對(duì)具體適用的芯片也要有一定的了解;根據(jù)µC/OSII的要求,移植µC/OSII到一個(gè)新的體系結(jié)構(gòu)上需要提供2個(gè)或3個(gè)文件:OS_CPU.H(C語(yǔ)言頭文件)、OS_CPU_C.C(C程序源文件)及OS_CPU_A.ASM(匯編程序源文件)。21 編寫(xiě)應(yīng)用程序 移植µC/OSII是為了在自己的系統(tǒng)使用µC/OSII。要在自己的系統(tǒng)中使用µC/OSII編寫(xiě)自己的應(yīng)用程序,就必須遵守µC/OSII的編程規(guī)范

7、。下面的程序清單為應(yīng)用程序的main()函數(shù)以及相關(guān)的代碼,應(yīng)用程序主函數(shù):int main(void) OSInit (); OSTaskCreate (Task0,(void *)0, &TaskStk0TaskStkLengh - 1, 3); /創(chuàng)建任務(wù)0 KeyMbox = OSMboxCreate(NULL); / 建立一個(gè)郵箱,用于傳遞按鍵消息 OSStart (); return 0;在使用µC/OSII提供的任何功能之前,必須調(diào)用函數(shù)OSInit (),它完成µC/OSII的初始化并建立空閑任務(wù),在開(kāi)始多任務(wù)之前,必須建立至少一個(gè)用戶任務(wù)(不包括&

8、#181;C/OSII的空閑任務(wù)),這是通過(guò)調(diào)用函數(shù)OSTaskCreate()或函數(shù)OSTaskCreateExt()實(shí)現(xiàn)。最后函數(shù)main()調(diào)用函數(shù)OSStart()將控制權(quán)交給µC/OSII內(nèi)核,main()函數(shù)也就結(jié)束了。 然后編寫(xiě)任務(wù)的代碼,µC/OSII規(guī)定任務(wù)是不允許返回的,不過(guò)程序一般通過(guò)死循環(huán)實(shí)現(xiàn),或者通過(guò)調(diào)用函數(shù)OSRaskDel()來(lái)實(shí)現(xiàn)。任務(wù)代碼框架如下: Void Task0(void *pdata) Pdata=pdata; /避免編譯警告 TargetInit(); /目標(biāo)板初始化 For(;) 程序代碼; 2.2 實(shí)現(xiàn)目標(biāo)簡(jiǎn)介將µ

9、C/OSII移植到LPC2210上,利用µC/OSII的任務(wù)管理系統(tǒng)對(duì)于所有的任務(wù)進(jìn)行管理調(diào)度。建立三個(gè)任務(wù)(不包括空閑任務(wù)),其中一個(gè)高優(yōu)先級(jí)的任務(wù)一直實(shí)現(xiàn)液晶初始化,顯示開(kāi)機(jī)畫(huà)面和定義游戲的暫停開(kāi)始及退出按鍵;另外兩個(gè)低優(yōu)先級(jí)的任,分別實(shí)現(xiàn)游戲方向鍵定義和游戲運(yùn)動(dòng)畫(huà)面等功能。 任務(wù)0一開(kāi)始初始化液晶,顯示游戲的開(kāi)機(jī)畫(huà)面,然后創(chuàng)建任務(wù)1和任務(wù)2并將任務(wù)2掛起,處于待開(kāi)始階段,然后建立一個(gè)死循環(huán),用來(lái)不停地掃描鍵盤,實(shí)現(xiàn)游戲的退出、暫停、恢復(fù)游戲等功能。任務(wù)1則定義開(kāi)始游戲后的方向鍵,其中掃描鍵盤之前建立一個(gè)郵箱,當(dāng)有按鍵時(shí)將按鍵信息發(fā)送到郵箱,然后根據(jù)要實(shí)現(xiàn)的功能從郵箱中取回按鍵值

10、實(shí)現(xiàn)游戲的控制功能,然后將郵箱清空。 任務(wù)2則創(chuàng)建貪食蛇游戲的運(yùn)動(dòng)軌跡,定義游戲中的邊界,繪制貪食蛇游戲中的豆子,和定義游戲是否結(jié)束。游蛇運(yùn)動(dòng)采用了連續(xù)賦值的思路,首先開(kāi)始游戲的時(shí)候繪制蛇頭、蛇身、和蛇尾,其中將蛇尾定義成結(jié)構(gòu)體,并定義蛇尾的坐標(biāo)為snake.a0和snake.b0,分別為蛇尾的橫坐標(biāo)和縱坐標(biāo)。然后游蛇蛇頭向前運(yùn)動(dòng),并將原先的蛇頭坐標(biāo)賦給蛇身,蛇身原先的坐標(biāo)賦給蛇尾,如果蛇身增長(zhǎng)則把蛇尾原先坐標(biāo)賦給增加的蛇身,然后擦除游蛇左右一節(jié)圖形。在任務(wù)2執(zhí)行的時(shí)候任務(wù)0和任務(wù)1都同在執(zhí)行,同時(shí)為了保證按鍵的準(zhǔn)確,按鍵的延時(shí)時(shí)間小于繪制游蛇的延時(shí)時(shí)間。三系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)3.1 硬件系統(tǒng)構(gòu)架

11、硬件部分的主要是由外部Flash存儲(chǔ)器、按鍵電路、JTAG接口、液晶接口。采用的液晶模塊為RT240128A作為圖形界面的輸出顯示。RT240128A 點(diǎn)陣圖形液晶模塊的點(diǎn)像素為240 ×128 點(diǎn)白色字/藍(lán)色底STN 液晶屏,視角為6:00 內(nèi)嵌控制器為東芝公司的T6963C 外部顯示存儲(chǔ)器為32K 字節(jié)模塊的電路原理框圖如下圖所示圖3.1 液晶原理圖EasyARM2200 開(kāi)發(fā)板可以直接支持RT240128A點(diǎn)陣圖形液晶模塊或相兼容的液晶模塊應(yīng)用連接電路如圖5. 23 所示采用8 位總線方式連接RT240128A點(diǎn)陣圖形液晶模塊的沒(méi)有地址總線顯示地址和顯示數(shù)據(jù)均通過(guò)DB0 DB7

12、 接口實(shí)現(xiàn)由于模塊工作電源是5V而LPC2210 的I/O 電壓為3.3V 所以在總線上串接470 保護(hù)電阻圖形液晶模塊的C/D 與A1 連接用于控制模塊處理數(shù)據(jù)/命令將C/D 與A1連接有一個(gè)好處就是LPC2210可以使用16 位總線方式操作該圖形液晶模塊(高8 位數(shù)據(jù)被忽略) 模塊的片選信號(hào)由LPC2210 的A22 和外部存儲(chǔ)器BANK3 片選CS3 相或后得到當(dāng)A22 和nCS3 同時(shí)為0 時(shí)模塊被選中所以其數(shù)據(jù)操作地址為0x83000000 命令操作地址為0x83000002,使用LPC2210 的總線對(duì)RT240128A 點(diǎn)陣圖形液晶模塊操作控制前先要設(shè)置芯片的外部存儲(chǔ)器控制器(E

13、MC) 。液晶與ARM7連接電路圖如下圖所示:圖3.2 液晶連接電路圖設(shè)計(jì)中的圖形用到了GUI_ClearSCR()、GUI_RectangleFill()、GUI_LoadPic()個(gè)函數(shù),其中貪食蛇的蛇和食物是通過(guò)用字模工具將用圖像處理工具處理好的圖片轉(zhuǎn)換成字模得到,用GUI_RectangleFill()實(shí)現(xiàn)繪制游蛇邊界和擦除圖片的功能,用GUI_LoadPic()則調(diào)用字模生成的圖片顯示在液晶上。下面介紹這幾個(gè)函數(shù)的使用。 1GUI_ClearSCR() 功能是清屏,入口參數(shù)和出口參數(shù)均無(wú)void GUI_ClearSCR(void) GUI_FillSCR(0x00); 其中GUI_

14、FillSCR()是全屏填充,直接使用數(shù)據(jù)填充顯示緩沖區(qū) ,入口參數(shù):dat填充的數(shù)據(jù)(對(duì)于黑白色LCM,為0的點(diǎn)滅,為1的點(diǎn)顯示) ,出口參數(shù):無(wú)。 2GUI_RectangleFill() 功能是填充矩形。畫(huà)一個(gè)填充的矩形,填充色與邊框色一樣。入口參數(shù): x0矩形左上角的x坐標(biāo)值 y0矩形左上角的y坐標(biāo)值 x1 矩形右下角的x坐標(biāo)值 y1 矩形右下角的y坐標(biāo)值 color 填充顏色出口參數(shù):無(wú)當(dāng)color為1時(shí)則起到了填充的作用,當(dāng)為0時(shí)起到了在一定范圍內(nèi)擦除圖形的作用。3.3 按鍵控制 按鍵控制通過(guò)消息郵箱機(jī)制實(shí)現(xiàn)的。消息郵箱(簡(jiǎn)稱郵箱)是µC/OSII中的另一種通信機(jī)制,可以

15、使一個(gè)任務(wù)或者中斷服務(wù)子程序向另一個(gè)任務(wù)發(fā)送一個(gè)指針型的變量。通常該指針指向一個(gè)包含了“消息”的特定數(shù)據(jù)結(jié)構(gòu)。 3.4 游戲設(shè)計(jì)在游戲程序中,主任務(wù)0主要完成一些初始化的工作,開(kāi)機(jī)畫(huà)面的顯示。在任務(wù)2種一開(kāi)始將屏幕清屏,然后繪制貪食蛇游戲的邊界和計(jì)分狀態(tài),最后進(jìn)入一個(gè)無(wú)限循環(huán),在循環(huán)體中根據(jù)游戲者的按鍵進(jìn)行相應(yīng)的處理,詳細(xì)流程圖如下圖所示:繪制游蛇的邊界圖案顯示游戲界面右邊的靜態(tài)圖片和計(jì)分清零初始化蛇的位置以及蛇的游動(dòng)方向等待鍵盤掃描任務(wù)發(fā)來(lái)的消息判斷按鍵的值 Reset鍵 暫停鍵 方向鍵 把任務(wù)2掛起,使游戲暫停重新創(chuàng)建任務(wù)2,重新開(kāi)始游戲改變蛇游動(dòng)的方向延時(shí) 圖3.3 貪食蛇吃豆的任務(wù)流程

16、圖 蛇的動(dòng)態(tài)顯示建立在任務(wù)2,主要是不停的更新蛇的位置,另外每更新一次還需要判斷蛇是否碰到邊界,是否碰到自己身子,是否吃到豆子等。其流程圖如下圖所示: 游戲 結(jié)束否? 是 否更新蛇的位置,將蛇頭原來(lái)坐標(biāo)賦給蛇身,蛇身原來(lái)坐標(biāo)賦給蛇尾。是否碰到邊界或自己身體 是游戲結(jié)束是否吃到豆子 否 是增加蛇身的長(zhǎng)度更新豆子蛇身各坐標(biāo)賦值延時(shí)圖3.4 蛇的動(dòng)態(tài)顯示結(jié)束語(yǔ)本文提出了一個(gè)應(yīng)用來(lái)介紹了ARM7的移植研究。在深刻研究µC/OSII的任務(wù)管理的前提下,利用uC/OS-II的圖形界面ZLG/GUI來(lái)實(shí)現(xiàn)貪食蛇游戲。這套應(yīng)用于多任務(wù)控制的特點(diǎn),從而進(jìn)一步簡(jiǎn)化系統(tǒng)開(kāi)發(fā)的可操作性、可修改,維護(hù)性。整個(gè)

17、系統(tǒng)功能實(shí)現(xiàn)、演示操作方面,都已取得了較好的成果。本課題獲得省教委藍(lán)牙技術(shù)在氣壓檢測(cè)中的應(yīng)用資助項(xiàng)目,課題編號(hào)2004340。參考文獻(xiàn)1Jean J.Labrosse著,邵貝貝譯.嵌入式實(shí)時(shí)操作系統(tǒng)µC/OSII(第2版) 北京航空航天大學(xué)出版社 北京 2003年5月第1版2王田苗.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開(kāi)發(fā)基于ARM微處理器與µC/OSII實(shí)時(shí)操作系統(tǒng)(第二版) 清華大學(xué)出版社 北京 2003年10月第2版3 嵌入式應(yīng)用程序開(kāi)發(fā)綜合實(shí)驗(yàn)9例基于博創(chuàng)ARM300教學(xué)平臺(tái)和各類手持設(shè)備清華大學(xué)出版社 2004年6月第1版 4 LPC2210/2220 16/32-bit ARM microcontrollers; flashless with 64 kB,with

溫馨提示

  • 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)論