ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:175.67KB ,
资源ID:4018705      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4018705.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SDL系列游戏在ARM上移植的实现.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

SDL系列游戏在ARM上移植的实现.docx

1、SDL系列游戏在ARM上移植的实现课程考核大作业课程名称:嵌入式技术任课教师:学期:2016-2017学年第1学期成绩SDL系列游戏在ARM上移植的实现院 系 专 业 班 级 提交时间: 2016年 11月 12日SDL系列游戏在ARM上移植的实现湖北省武汉,430070摘要:在现在,年轻人喜欢通过玩游戏来放松自己,娱乐自己。许多人会选择到电玩厅游戏厅放松自己。因此,我研究并使用FriendlyARM实现一个简易的SDL系列仙剑奇侠传一的移植,使其能够通过键盘运行游戏。完成这个游戏移植同时需要嵌入式硬件知识和软件知识。硬件方面主要是烧写SD卡,将linux镜像文件安装到嵌入式设备上,修改分辨率

2、;软件方面主要是移植游戏和SDL游戏库,设置开机自启动。并且,因为移植原理简单方便,可以以此为模板移植到一些大型设备上,比如电玩厅的游戏机,以此获得商业利益。关键词:SDL系列游戏;ARM移植The Realization of SDL Series Game Porting on ARMAbstract: In the present, young people like to play through the game to relax and entertain themselves. Many people choose to relax in the arcade game room

3、. Therefore, I study and use FriendlyARM to achieve a simple SDL series Paladin transplant, so that it can run the game through the keyboard. Completing this game migration requires both embedded hardware knowledge and software knowledge. Hardware is the main programming SD card, the linux image fil

4、e installed on the embedded device, modify the resolution; software is mainly transplant games and SDL game library, set the boot from the start. And, because the transplant principle is simple and convenient, you can use this as a template to transplant to some large equipment, such as video game c

5、onsole, in order to obtain commercial interests.Keywords: SDL series of games; ARM transplantation1 实验的主要工作1. 了解linux操作系统,熟悉各种基础指令代码;了解SDL游戏移植基本原理,熟悉移植过程;了解ARM硬件软件操作。通过之前的学习,我基本上学会了所有linux基本代码,能够独立编写出移植过程中的全部代码;我了解到SDL游戏有SDL_mixer声音库、SDL_net网络库、SDL_ttf字体库、SDL_rtf图像库,移植游戏的时候必须也移植进去;我了解到ARM上没有运行操作系统、屏

6、幕是A70长640宽480、cpu为512MHZ、内存为256M,我选择了满足硬件要求的仙剑奇侠传一作为本次移植对象,我选择烧写linux到开发板中。2. 进行硬件相关操作,烧写SD卡;再烧写linux的镜像文件到开发板中;修改游戏分辨率。我使用superboot工具烧写SD卡,使其能够进行SD-BOOT,再修改烧写linux的ini配置文件,比如烧写的系统名称,ARM屏幕是A70,烧写格式是ubfi,使其适合FriendlyARM,再烧写linux的镜像文件到开发板中,方便之后软件更容易移植;我了解到FriendlyARM屏幕分辨率为640*480,并修改main.c中的游戏分辨率参数,并且

7、编写函数让游戏动态获取分辨率。3. 进行软件操作,对SDL库以及游戏进行交叉编译;再将可执行文件连同游戏一起倒入ARM之中;建立一个开机自启动的脚本文件。我将五个游戏库以及游戏下载,在电脑linux交叉编译并打包,然后使用U盘将打包文件拷入开发板中,游戏不能直接运行,必须建立开机自启动shell脚本,并在脚本中引导游戏启动。2 FriendlyARM与SDL游戏的介绍1FriendlyARM概念FriendlyARM是一款以ARM11芯片(三星S3C6410)作为主处理器的嵌入式核心板,该CPU 基于 ARM1176JZF-S 核设计,内部集成了强大的多媒体处理单元,支持Mpeg4, H.26

8、4/H.263等格式的视频文件硬件编解码,可同时输出至LCD和TV显示;它还并带有 3D 图形硬件加速器,以实现 OpenGL ES 1.1 & 2.0 加速渲染,另外它还支持 2D 图形图像的平滑缩放,翻转等操作。FriendlyARM采用高密度 6 层板设计,尺寸为64 x 50mm,它集成了 128M/256M DDR RAM,SLC NAND Flash(256M/1GB)或 MLC NAND Flash(2GB)存储器,采用 5V 供电,在板 实现 CPU 必需的各种核心电压转换,还带有专业复位芯片,通过 2.0mm 间距的排针,引出各种常见的接口资源,以供不打算自行设计 CPU 板

9、的开发者进行快捷的二次开发使用。Tiny6410SDK 是采用FriendlyARM核心板的一款参考设计底板,它主要帮助开发者以此 为参考进行核心板的功能验证以及扩展开发。该底板具有三 LCD 接口、 4 线电阻触摸屏接口、 100M 标准网络接口、标准 DB9 五线串口、Mini USB 2.0 接口、USB Host 1.1、3.5mm 音频输 入输出口、标准 TV-OUT 接口、SD 卡座、红外接收等常用接口;另外还引出 4 路 TTL 串口, 另 1 路 TV-OUT、SDIO2 接口(可接 SD WiFi)接口等;在板的还有蜂鸣器、I2C-EEPROM、备 份电池、AD 可调电阻、8

10、 个中断式按键等。2SDL系列游戏的基本介绍SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用 C 语言写成。SDL 提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平 台(Linux、Windows、Mac OS X 等)的应用软件。目前 SDL 多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。SDL 在结构上是将不同操作系统的库再包装成相同的函数,例如 SDL 在 Windows 平台上其实是 DirectX 的再包装,旧版本包装的是 DirectX 5,现时的版本(SDL 1.2)则是 Dir

11、ectX 7。而在使用 X11 的 平台上(包括 Linux), SDL 则是与 Xlib 库沟通来输出图像。 SDL 库分为 Video、Audio、CD-ROM、Joystick 和 Timer 等若干子系统,除此之外,还有一些单独 的官方扩充函数库。这些库由官方网站提供,并包含在官方文档中,共同组成了 SDL 的“标准库”: * SDL_image支持时下流行的图像格式:BMP、PPM、XPM、 PCX、GIF、JPEG、PNG、TGA。 * SDL_mixer更多的声音输出函数以及更多的声音格式支持。 * SDL_net网络支持。 * SDL_ttfTrueType 字体渲染支持。 *

12、 SDL_rtf简单的 RTF 渲染支持。3 硬件部分实验内容1. 阅读产品说明书,了解FriendlyARM的CPU速率,内存大小,屏幕分辨率,预装系统。2. 因为之前是没有任何系统,不符合软件要求,故烧写适合FriendlyARM的Linux系统的镜像文件到开发板中,在其中,我采用的是制作SD卡启动盘的方式。3. 制作SD卡启动,通过superboot软件将SD卡转换为特殊的SD卡启动。4. 将要烧写的linux系统导入SD卡的Image目录之下。5. 修改linux配置文件,编写ini文件,找到”OS=”,并改为”OS=Linux”,保存修改,取出 SD 卡插到开发板上。6. 上电开机,

13、将S1开关设置为“SD-BOOT“启动,同样的“滴”一声开始,同样的“滴滴”两声后更新完毕,因为我们制作的 Linu映像文件比较大,烧写时间比较长,整个过程 1 分钟左右。7. 把开发板 S2 开关设置为”NAND”启动,这时重启系统就可以看到 Linux 已经被安装好,并且出现了校正界面。 8. 开机出现以下画面,则烧写linux成功,硬件部分基本完成。9. 修改游戏的main.c文件,更改屏幕分辩率,修改为长640,宽480大小,使其适合FriendlyARM大小;用文本编辑器打开main.c文件,定位到 535/536 行,将内容:wScreenWidth = 640; wScreenH

14、eight = fFullScreen ? 480 : 400;改成getFBSize(&wScreenWidth,&wScreenHeight); if(wScreenWidth640|wScreenHeight480) wScreenWidth=640; wScreenHeight = 480; 10. 再定位到main.c函数第439行,在main函数前面,插入以下函数,这个函数用于动态获取屏幕分辨率;#include #include #include #include void getFBSize(int *w, int *h) char buf256; *w = 480; *h =

15、 272; FILE *file=fopen(/sys/class/graphics/fb0/virtual_size,r); if (!file) return ; int tmp1=0,tmp2=0; if (fgets(buf, sizeof(buf), file) if (sscanf(buf, %d,%d, &tmp1, &tmp2) = 2) *w = tmp1; *h = tmp2; fclose(file); return ; 11. 接下来应该需要修改其他配置文件,比如对手柄的支持,但是我使用键盘,故不展示细节;4 软件部分实验内容1. 我们首先需要在网上下载Fedora9,

16、因为所有开发工作都是在Fedora9的Linux环境下进行的,所以在开始之前,需要先在 PC 上安装 Fedora9。2. 建立交叉编译环境,安装好Friendly提供的mini6410交叉编译器。3. 我们还需要在网上下载SDL/SDL_mixer/SDL_ttf/SDL_image以及iconv五个库,再将这五个库放入linux/tmp目录之下,在/opt/FriendlyARM/mini6410 目录下创建目录games来作为移植工作的工作目录,再在 games 目录下创建一个output目录,用来存放编译生成的可执行文件或者类库。4. 接下来编译iconv/SDL/SDL_mixer/

17、SDL_ttf/SDL_image库,因为这四个库编译方法类此,故以其中SDL库为例。# cd /opt/FriendlyARM/mini6410/games # tar xvzf /tmp/SDL-1.2.14.tar.gz # cd SDL-1.2.14 # ./configure -prefix=/opt/FriendlyARM/mini6410/games/output -disable-video-nanox -disable-video-qtopia -disable-video-photon -disable-video-ggi -disable-video-svga -disa

18、ble-video-aalib -disable-video-dummy -disable-video-dga -disable-arts -disable-esd -disable-alsa -disable-video-x11 -disable-nasm -enable-joystick -enable-input-tslib -enable-video-fbcon -host=arm-linux -build=i386 # make # make install 5. 将SDL库打包,为接下来操作做准备,打包SDL类库和其它相关的类:6. 从网上下载仙剑奇侠传SDL版本源代码,并将其拷贝

19、到/tmp目录下。7. 解压其源代码,并且定位到源代码的目录,执行编译操作,在编译完成后,会在sdlpal目录下会生成可执行文件sdlpal_arm。 8. 光有可执行文件还不能直接运行游戏,还需要上网找到相应的仙剑奇侠传原版的资源文件,比如声音、图片等等,并拷贝到 /tmp 目录下备用,我创建一个目录output_pal用于存放仙剑的执行文件和资源,然后将资源解压到该目录下,这将会在/opt/FriendlyARM/mini6410/games/output_pal 目录下生成 xianjian 目录。9. 接下来,把编译出来的仙剑可执行文件拷到/opt/FriendlyARM/mini64

20、10/games/output_pal/bin/目录下,并打包10. 将 xianjian_setup.tar.gz和sdl_setup.tar.gz拷贝到 u盘中,然后将u盘拷贝到 FriendlyARM 开发板上,在根目录进行解压:11. 修改启动项内容,使其开机运行run_xianjian.sh脚本将/etc/init.d/rcS中以下内容:/bin/qtopia &修改为/bin/run_xianjian.sh &12. 编写run_xianjian.sh脚本在/bin 下创建一个脚本run_xianjian.sh# vi /bin/run_xianjian.sh在其中输入:#!/bi

21、n/shexport SDL_NOMOUSE=1export LD_LIBRARY_PATH=/lib:/usr/lib:/xianjian/lib:$LD_LIBRARY_PATH cd /xianjian sdlpal_arm给脚本 run_xianjian.sh 加上可执行权限:13. 重启FriendlyARM就可以进入游戏,看到以下界面,则说明进入游戏成功。5 心得体会其实,我自己是第一次使用嵌入式,之前只简单学习过单片机,对ARM可以说在研究生生涯之前完全没有任何概念,许多ARM常见知识都不知道。当初选择它作为题目,一方面是因为对游戏的喜爱,另一方面是因为缺少wifi等其他硬件,是

22、在只有一块嵌入式板子的情况下做出来选择。为了完成这一份实验报告,找了许多资料,虽然我自己做的以软件为主,比较简单,但是我仍然感受到了它的复杂深奥。在实际操作中也遇到了各种不懂的难题,比如烧写镜像文件到开发板之中,我曾经花费几个下午一无所获,全都烧写失败,后来才发现是我自己编写ini配置文件错误,每一次ARM开机都因为屏幕读取失败,导致一直没有开机画面。并且实验的最后一步,经常出错,开机之后没有任何提示,后来才发现是修改开机启动项时,由于linux系统保护,复制命令没有添加-f强制复制,不允许我修改开机启动项,每次开机都是原来的启动项而失败。虽然过程很漫长,但是当我看到仙剑这一款游戏启动时,还是

23、觉得物有所值。6 结论通过查看学习资料以及相关的文献,我对嵌入式学习的应用有了一定程度上的了解。在此基础之上,我设计开发了这个SDL游戏移植。具体来说,我在开发时使用的是烧录linux系统到开发板之中,编写SDL代码,生成可执行文件。通过一段时间的学习和研究后,我终于完成了仙剑奇侠传游戏能够在FriendlyARM上运行。在设计和实现这个游戏移植的过程中,我学习到了很多的关于嵌入式的知识。大致上了解了它的特点,功能以及如何实现我深刻体会到了开发必须要建立在认真分析的前提下,以规范化的研究为依托。完整的SDL游戏移植应该是一个庞大而复杂的系统,但是,我所设计的这个移植只能实现一些简单的功能,想要

24、进一步扩展完善它的功能,还需要进一步的学习和研究。总而言之本文设计的SDL系列游戏在ARM上的移植:1.烧写了linux到嵌入式开发板之上。2.实现了仙剑奇侠传一在FriendlyARM上的运行。3.用户界面友好,界面清晰易懂,系统操作起来十分简单,玩起来会很容易。虽然本系统实现了游戏移植的一些基本功能,但还有很多想要改进和扩展的地方。比如:游戏不能存档。若进一步开发该移植,可以在此基础上提供更多的信息。参考文献1. 嵌入式系统 ,eeworld网,2012-09-212. 嵌入式 ,开发网,2012-09-213. 嵌入式技术介绍 ,5联网,2012-12-164. 嵌入式技术特点 ,偶然物联网,2013-01-75. 嵌入式开发工程师的未来在哪里? ,OFweek工控网,2015-08-136. 经济型闪存将为嵌入式市场带来生机 ,TechTarget,2015-06-77. 嵌入式就业人才创新华清远见总裁倡导“兴趣学习” ,北方网,2015-12-148. SDL ,中文维基百科,2012-09-7

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1