基于嵌入式系统的开源游戏模拟器的设计.docx
《基于嵌入式系统的开源游戏模拟器的设计.docx》由会员分享,可在线阅读,更多相关《基于嵌入式系统的开源游戏模拟器的设计.docx(9页珍藏版)》请在冰豆网上搜索。
基于嵌入式系统的开源游戏模拟器的设计
郑州航空工业管理学院
嵌入式系统课程设计报告
题目:
基于嵌入式系统的开源游戏模拟器的设计
2013–2014第2学期
院 系:
电子通信工程系
***** **
专 业:
通信工程
学 号:
*********
指导老师:
赵成 张松炜
电子通信工程系
2014年4月制
一、
引言
随着微处理器性能的提升,现在的微处理器已经可以支撑游戏模拟器的运行,用户可以选择在非PC平台下操作街机游戏以及20世纪90年代需要PC才能运行的游戏节目,这无疑提升了游戏硬件平台的移动性。
电子游戏业将是这一技术的最大收益者。
目前,在一个配有LCD图形界面和32位ARM微处理器的移动平台上,甚至可以实现最早出现在PC上的3D游戏,本文介绍利用ARM嵌入式系统平台(内置S3C2410A核心微处理器),将开源游戏模拟器VisualBoyAdvance(VBA)的代码移植到微处理器上的方法。
二、设计目的
了解嵌入式微处理器的运算能力,进一步熟悉ARMS3C2410微处理器在多媒体娱乐平台中的应用。
该设计的目标是在一个配有LCD图形界面和32位ARM微处理器的嵌入式系统平台(内置S3C2410A核心微处理器)上,将开源游戏模拟器VisualBoyAdvance(VBA)的代码移植到微处理器上运行。
在设计过程中,熟悉Linux系统中常用的压缩解缩工具包、图形工具包、多媒体函数库等的使用方法,从而为基于嵌入式系统平台的多媒体开发任务打下更深厚的应用实践基础。
三、设计要求
1.任务要求
要求能独立地分析题目意义、设计实现步骤、画出硬件原理图及软件流程图、调试驱动模块。
该设计的具体要求如下:
(1)掌握ZLIB数据压缩库的功能以及编译与安装方法。
(2)掌握libpng图像库的功能以及编译与安装方法。
(3)掌握SDL多媒体函数库的功能以及编译与安装方法。
(4)掌握开源模拟器VBA的编译与安装方法。
(5)掌握开源模拟器VBA的调试与运行。
(6)理解VBA程序的设计(选做)。
2.设计所需的软硬件设备
(1)硬件环境配置
计算机:
Intel(R)Pentium(R)及以上
内存:
1GB及以上
实验设备:
UP-NETARM2410-S嵌入式开发平台
(2)软件环境配置
操作系统:
MicrosoftWindowsXPProfessionalServicePack2
虚拟机:
VMwareWorkStation7
Linux系统:
RedHatEnterpriseLinuxAS4(2.6.9-5.EL)
嵌入式交叉编译器:
arm-linux-gcc3.4.4版本
Linux内核版本:
Linux-2.6.14
SKYEYE版本:
skyeye-1.2.4
U-Boot版本:
U-Boot-1.3.2
BusyBox版本:
BusyBox-1.2.0
ZLIB数据压缩库:
ZLIB-1.2.3
Libpng图像库:
Libpng-1.4.0
SDL多媒体函数库:
sdl-1.2.13
VBA模拟器:
VisualBoyAdvance-src-1.7.2
3.课程设计报告内容
按该设计报告要求的模式格式提交课程设计报告书。
四、总体设计
1.VisualBoyAdvance模拟器简介
开源游戏模拟器VBA是一个根据GUNGeneralPublicLicense发布的免费软件。
VBA能够在不同的硬件平台上模拟Nintendo公司发行的手提游戏机,包括GameBoy、SuperGameBoy、GameBoyColor、GameBoyAdvance以及GameBoyAdvanceROMS。
2.安装交叉编译工具
交叉开发方式解决了目标硬件资源有限,无法在本机运行编译和调试工具的问题,并且还得使开发者可以在熟悉的宿主机环境下进行程序开发,对于ARM嵌入式系统的开发,需要安装交叉版本的GCC工具包来搭建嵌入式交叉编译环境,在此,使用arm-linux-gcc-3.4.1.tgz软件包。
(1)下载arm-linux-gcc-3.4.1.tgz软件压缩包,将其存放在Linux系统中的/tmp目录下,然后进入/tmp目录,执行如下命令进行文件解压缩:
[root@localhost~]#cd/tmp
[root@localhosttmp]#tar-xzvfarm-linux-gcc-3.4.1.tgz-C/
运行上述命令后把arm-linux-gcc安装到/usr/local/arm/3.4.1目录。
(2)运行下面命令修改/root/.bashrc文件的内容:
[root@localhost~]#vi/root/.bashrc编辑/root/.bashrc文件,将最后一行改为如图1划线标示所示,修改后保存退出。
图1修改/root/.bashrc文件的内容
(3)重新登录系统,使上述设置生效,用以下命令行测试:
[root@localhost~]#arm-linux-gcc–v
若出现如图2所示gccversion3.4.1则说明交叉编译环境已经安装完毕且3.4.1版本的交叉编译环境可以正常运行了。
图2交叉编译工具的版本信息
3.ZLIB数据压缩库的安装、编译
ZLIB是一个免费、通用的开源代码,提供数据的压缩与解压缩开发库,而且还支持跨平台的应用。
ZLIB具有同winzip和winrar等商业软件相比毫不逊色的压缩率,已经成功应用到诸如MySQL、Java、3DMax、甚至是微软的DirectX等大型的系统中。
ZLIB虽然支持文件的压缩、解压缩、删除与查看等功能,但主要是对Linux/Unix下的GZ文件进行相应的操作,对于Windows系统下的ZIP文件并不提供直接的支持,这里使用ZLIB的版本是1.3.2。
(1)在命令终端窗口中,切换路径到/home/ilovechina/GBA/下,解压缩zlib-1.2.3.tar.gz软件包,运行下面的命令:
[root@localhost~]#cd/home/ilovechina/GBA/
[root@localhostGBA]#tar-xzvfzlib-1.2.3.tar.gz
(2)在zlib-1.2.3目录中,运行如下的配置命令,可以得到Makefile文件:
[root@localhostGBA]#cdzlib-1.2.3
[root@localhostzlib-1.2.3]#./configure
--prefix=/usr/local/arm/3.4.1/arm-linux
(3)使用编辑器修改产生的Makefile文件,从而达到能够利用交叉编译工具对zlib的源代码进行编译与安装,修改参数如下:
Ø第19行修改为:
CC=arm-linux-gcc
Ø第36行修改为:
AR=arm-linux-arrc
Ø第37行修改为:
RANLIB=arm-linux-ranlib
(4)在前面的步骤中已经将预先处理的各项都进行了设置,现在可以运行下列命令开始编译、安装zlib软件包:
[root@localhostzlib-1.2.3]#make;makeinstall
4.编译、安装Libpng图像库
Libpng提供多种应用程序解析PNG格式图像时使用的开发库,该软件包含png库和libpng-configlib文件,其中,PNG库是用来创立和操作PNG格式的图像文件。
PNG格式是设计来替代的GIF的,PNG对于更小范围的TIFF来说,有了非常多的进步和拓展。
libpng-configlib文件为libpng提供了设置信息。
(1)解压缩libpng-1.4.0.tar.gz软件包,在命令终端窗口切换路径到/home/ilovechina/GBA/下,运行的命令如下:
[root@localhostzlib-1.2.3]#cd..
[root@localhostGBA]#tar-xzvflibpng-1.4.0.tar.gz
(2)在libpng-1.4.0目录中,运行如下配置命令,可以得到Makefile文件:
[root@localhostGBA]#cdlibpng-1.4.0
[root@localhostlibpng-1.4.0]#
exportLDFLAGS=-L/usr/arm/3.4.1/arm-linux/lib
[root@localhostlibpng-1.4.0]#
exportCFLAGS=-I/usr/local/arm/3.4.1/arm-linux/include
[root@localhostlibpng-1.4.0]#./configure
--prefix=/usr/local/arm/3.4.1/arm-linux
--host=arm-linux
(3)Makefile文件生成之后,在前面预先处理的各项的相应设置后,下面就可以编译安装libpng软件包了,所需要运行的命令如下:
[root@localhostzlib-1.2.3]#make;makeinstall
5.SDL多媒体函数库
SDL(SimpleDirectMediaLayer)现在广泛应用与游戏、游戏SDK、模拟器、MPEG播放器和其他众多的软件设计领域。
特别是,SDL在游戏开发领域已经得到了广泛的认可,许多著名的游戏都用到了SDL开发包。
SDL是一个跨平台的多媒体函数库,支持对底层的音频,鼠标,键盘,游戏杆,基于OPENGL的3D硬件以及2D图像帧缓冲区的访问。
另外,SDL几乎支持现在所有的平台:
Linux、Windows、WindowsCE、BeOS、MacOS、MacOSX、FreeBSD、NetBSD、OpenBSD、BSD/OS、Solaris、IRIX以及QNX等。
SDL在音频处理、视频处理、事件响应、线程管理、数据流处理、定时器等方面都有比较突出的功能。
(1)在终端命令窗口中,切换到/home/ilovechina/GBA/路径下,解压缩SDL-1.2.13.tar.gz软件包,运行如下命令:
[root@localhostlibpng-1.4.0]#cd..
[root@localhostGBA]#tar–xzvfSDL-1.2.13.tar.gz得到SDL-1.2.13文件夹;
(2)在生成的SDL-1.2.13目录中,运行如下配置命令,就可以得到Makefile文件:
[root@localhostGBA]#cdSDL-1.2.13
[root@localhostSDL-1.2.13]#./configure
--prefix=/usr/local/arm/3.4.1/arm-linux--disable-video-qtopia--disable-video-dummy--disable-video-fbcon--disable-video-dga--disable-arts--disable-esd--disable-alsa--disable-cdrom
--disable-video-x11--disable-nasm--target=arm-linux--host=arm-linux
--enable-video-fbcon
(3)在前面的步骤中已经将需要预处理的各项都进行了相应的设置处理,现在可以编译、安装SDL软件包了,运行如下命令即可:
[root@localhostSDL-1.2.13]#make;makeinstall
6.编译与安装VBA模拟器
(1)切换路径到/home/ilovechina/GBA/目录下,开始运行如下命令解压缩游戏模拟器VisualBoyAdvance-src-1.7.2.tar.gz软件包:
[root@localhostSDL-1.2.13]#cd..
[root@localhostGBA]#tar–xzvfVisualBoyAdvance-1.7.2.tar.gz
这样在/home/ilovechina/GBA/下得到VisualBoyAdvance-1.7.2文件夹。
(2)VisualBoyAdvance-1.7.2目录下,运行如下配置命令,可以得到Makefile文件:
[root@localhostGBA]#cdVisualBoyAdvance-1.7.2
[root@localhostVisualBoyAdvance-1.7.2]#./configure--host=arm-linux
--target=arm-linux
--with-sdl-prefix=/usr/local/arm/3.4.1/arm-linux
--with-sdl-exec-prefix=/usr/local/arm/3.4.1/arm-linux
(3)在/home/ilovechina/GBA/VisualBoyAdvance-1.7.2/src/sdl/SDL.cpp文件中分别从第2323行、第3381行开始,有如下的相同代码:
surface=SDL_SetVideoMode(destWidth,destHeight,16,
SDL_ANYFORMAT|SDL_HWSURFACE|SDL_DOUBLEBUF|
(fullscreen?
SDL_FULLSCREEN:
0));
将其修改为surface=SDL_SetVideoMode(640,480,16,1),其中640*480表示LCD的分辨率,如果不修改这段代码,在ARM9开发板上运行VBA时将可能会提示video模式无法设置,也可能出现屏幕不正常显示的情况。
保存上述修改,并退出对SDL.cpp文件的编辑。
(4)在前面的步骤中已经将需要的预处理的各项都进行了相应的设置,现在可以开始编译、安装VisualBoyAdvance软件包了,运行如下命令:
[root@localhostVisualBoyAdvance-1.7.2]#make;makeinstall
在编译、安装VisualBoyAdvance软件包之后,可以在VisualBoyAdvance-1.7.2/src/sdl/目录下看到在arm平台运行的两个文件:
TestEmu,VisualBoyAdvance,如图3所示,
图3编译得到的VisualBoyAdvance文件
另外,在其上一级目录下有一个VisualBoyAdvance.cfg配置文件,如图4所示
图4VisualBoyAdvance.cfg配置文件
7.VisualBoyAdvance的调试与运行
(1)首先,将TestEmu、VisualBoyAdvance及VisualBoyAdvance.cfg这3个文件同时下载到ARM9开发板根文件系统的/home/ziapc/目录下,然后编写或下载一个GBA游戏,同样下载到开发板的根文件系统的/home/ziapc/目录下;
(2)接着添加vba-over.ini文件,将其下载到开发板中根文件系统的/home/ziapc/目录内,再次运行模拟器程序,注意开发板网串口中断上输出的信息;
(3)上一步提示VBA运行时缺少libSDL-1.2.so.0共享库文件,该文件是一个指向libSDL-1.2.so.011.2共享库文件的链接文件,它们都位于/usr/local/arm/3.4.1/arm-linux/lib目录下,将它们下载到开发板根文件系统中的/home/ziapc/目录里;
(4)最后,再次在ARM9开发板上运行VBA游戏模拟器即可运行起来。
在LCD显示屏上出现游戏画面。
五、总结
整个课程设计过程中,需要用到arm-linux-gcc-3.4.1版本的嵌入式交叉编译环境,ZLIB数据压缩库、libpng图像库、SDL多媒体函数库以及主要的VisualBoyAdvance-src-1.7.2开源代码包,上述软件包有一定的版本匹配关系,交叉编译环境必须使用3.4.1版本的交叉编译器,且不能与3.4.4版本的同时运行,在开始安装VBA模拟器之前一定要确认版本是否正确。
下面列出在设计过程中遇到的问题:
1.由于虚拟机中的Linux系统之前已经配置了3.4.4版本的交叉编译环境,在上机做课程设计时,要删除其配置环境,具体做法:
删除/usr/local/bin/目录下的所有文件,再次参照上述步骤配置交叉编译环境;
2.进行过ZLIB数据压缩库,libpng图像库,SDL多媒体函数库之后,在编译与安装VBA模拟器时,按照书中配置命令无法生成Makefile文件,需要按照:
[root@localhostVisualBoyAdvance-1.7.2]#./configure--host=arm-linux
--target=arm-linux
--with-sdl-prefix=/usr/local/arm/3.4.1/arm-linux
--with-sdl-exec-prefix=/usr/local/arm/3.4.1/arm-linux
命令,使运行过程能够找到SDL配置文件,另外,编译过程可能不能找到SDL.h文件,需要在SDL.cpp文件中修改SDL.h的绝对路径;
3.编译、安装VBA软件包时过程较长,在命令终端中有长时间的停顿,这是正常情况,直至生成所需要的三个目标文件。
通过嵌入式实验和游戏模拟器的设计,我更深刻地认识了Linux操作系统在嵌入式设计方面的强大功能,初步认识了嵌入式在人们日常娱乐生活中的作用,而这只是最基础的内容,之后还有更为深入的内容要学习,例如嵌入式Linux设备驱动程序的开发、用户图形界面的设计等高深知识。
最后感谢赵成老师在此期间对我们小组团队人员的悉心指导,使课程设计结果能够最终顺利达到目标,过程的实际操作发现了很多问题,这是平时理论学习无法遇到的,解决的过程也让我学到了很多东西。
六、参考文献
【1】嵌入式系统应用基础:
基于S3C2410A的SKYEYE的仿真与实践.赵成主编.国防工业出版社.2012.2
【2】Linux基础及应用.谢蓉/巢爱棠.中国铁道出版社.2005