




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程考核大作业课程名称:嵌入式技术任课教师:学期:2016-2017学年第1学期成绩«SDL系列游戏在ARM上移植的实现院 系专 业班 级提交时间:2016年 11月 12日SDL系列游戏在ARMk移植的实现湖北省武汉,430070摘要:在现在,年轻人喜欢通过玩游戏来放松自己,娱乐自己。许多人会选择到电玩厅游戏厅放松 自己。因此,我研究并使用 FriendlyARM实现一个简易的SDL系列仙剑奇侠传一的移植,使其 能够通过键盘运行游戏。完成这个游戏移植同时需要嵌入式硬件知识和软件知识。硬件方面主要是烧写SD卡,将linux镜像文件安装到嵌入式设备上,修改分辨率;软件方面主要是移植游戏
2、和SDL游戏库,设置开机自启动。并且,因为移植原理简单方便,可以以此为模板移植到一些大型设备上,比如电玩厅的游戏机,以此获得商业利益。关键词:SDL系列游戏;ARMS植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. Therefore,
3、 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实验的主要工作SDL游戏移植基本原理,1 . 了解linux操作系统,熟悉各种基础指令代码;了解熟悉移植过程;了解 ARMM件软件操作。通过之前的学习,我基本上学会了所有linux基本代码,能够独立编写出移植过程中的 全部代码;我了解至iJ 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 配置文件,比如烧写的系统名称,ARMf幕是A70,烧写格式是ubfi,使其适合FriendlyARM , 再烧写linux 的镜像文件到开发板中,方便之后软件更容易移植;我了解到FriendlyARM屏幕分辨率为 640*480 ,并修改mai
7、n.c中的游戏分辨率参数,并且编写函数让游戏动态获 取分辨率。3 .进行软件操作,对 SDL库以及游戏进行交叉编译;再将可执行文件连同游戏一 起倒入ARMfc中;建立一个开机自启动的脚本文件。软件相关 操作我将五个游戏库以及游戏下载,在电脑linux交叉编译并打包,然后使用U盘将打包文件拷入开发板中,游戏不能直接运行, 必须建立开机自启动 shell脚本,并在脚本中引导游 戏启动。2 FriendlyARM与SDL游戏的介绍1. FriendlyARM 概念FriendlyARM是一款以ARM11芯片(三星S3c6410)作为主处理器的嵌入式核心板,该 CPU基于 ARM1176JZF-S核设
8、计,内部集成了强大的多媒体处理单元,支持Mpeg4,H.264/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间距的排
9、针,引出各种常见的接口资源,以供不打算自行设计CPU板的开发者进行快捷的二次开发使用。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、备份
10、电池、AD可调电阻、8个中断式按键等。 2. SDL系列游戏的基本介绍SDL ( Simple DirectMedia Layer )是一套开放源代码的跨平台多媒体开发库,使用 C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似 的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。SDL在结构上是将不同操作系统的库再包装成相同的函数,例如SDL在 Windows平台上其实是 DirectX的再包装,旧版本包装的是DirectX 5,现时的版本(SDL 1.2)则
11、是DirectX 7。而在使用 X11的平台上(包括 Linux), SDL则是与 Xlib 库沟通来输出图 像。SDL库分为 Video、Audio、CD-ROM、Joystick和Timer等若干子系统,除此之外, 还有一些单独 的官方扩充函数库。这些库由官方网站提供,并包含在官方文档中,共同组 成了 SDL的“标准库”:* SDL_image一支持时下流行的图像格式:BMP、PPM、XPM、 PCX、GIF、JPEG、PNG、TGAo* SDL_mixer 一更多的声音输出函数以及更多的声音格式支持。* SDL_net 一网络支持。* SDL_ttf -TrueType字体渲染支持。*
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&quo
13、t;,保存 修改,取出SD卡插到开发板上。6 .上电开机,将S1开关设置为“SD-BOOT启动,同样的“滴” 一声开始,同样的“滴 滴”两声后更新完毕,因为我们制作的Linu映像文件比较大,烧写时间比较长,整个过程1分钟左右。7 .把开发板S2开关设置为“ NAND启动,这时重启系统就可以看到Linux 已经被 安装好,并且出现了校正界面。8.开机出现以下画面,则烧写linux成功,硬件部分基本完成。9.修改游戏的main.c文件,更改屏幕分其湾修改为长640,宽480大小,使其适合 FriendlyARM 大小;用文本编辑器打开 main.c文件,定位到 535/536行,将内容: wScr
14、eenWidth = 640;wScreenHeight = fFullScreen ? 480 : 400;改成getFBSize(&wScreenWidth,&wScreenHeight);if(wScreenWidth>640|wScreenHeight>480) wScreenWidth=640; wScreenHeight = 480; 10.再定位到 main.c函数第439行,在main函数前面,插入以下函数, 这个函数用于 动态获取屏幕分辨率;#include <stdio.h>#include <string.h>#incl
15、ude <unistd.h>#include <stdlib.h>void getFBSize(int *w, int *h) char buf256;*w = 480;*h = 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", &tm
16、p1, &tmp2) = 2) *w = tmp1;*h = tmp2; fclose(file);return ;11.接下来应该需要修改其他配置文件,比如对手柄的支持,但是我使用键盘,故不展示细节;4软件部分实验内容1 .我们首先需要在网上下载Fedora9,因为所有开发工作都是在Fedora9的Linux环境下进行的,所以在开始之前,需要先在PC上安装Fedora9o2 .建立交叉编译环境,安装好 Friendly 提供的mini6410交叉编译器。3 .我们还需要在网上下载SDL/SDL_mixer/SDL_ttf/SDL_image 以及iconv五个库,再将这五个库放入 l
17、inux/tmp目录之下,在/opt/FriendlyARM/mini6410目录下创建目录 games来作为移植工作的工作目录,再在games目录下创建一个 output目录,用来存放编译生成的可执行文件或者类库。4 .接下来编译iconv/SDL/SDL_mixer/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/FriendlyAR
18、M/mini6410/games/output -disable-video-nanox -disable-video-qtopia -disable-video-photon -disable-video-ggi -disable-video-svga -disable-video-aalib -disable-video-dummy -disable-video-dga -disable-arts -disable-esd -disable-alsa -disable-video-x11 -disable-nasm -enable-joystick -enable-input-tslib
19、-enable-video-fbcon -host=arm-linux -build=i386 # make# make install5 .将SDL库打包,为接下来操作做准备,打包 SDL类库和其它相关的类:6 .从网上下载仙剑奇侠传SDL版本源代码,并将其拷贝到 /tmp目录下。7 .解压其源代码,并且定位到源代码的目录,执行编译操作,在编译完成后,会在 sdlpal目录下会生成可执行文件sdlpal_arm。8 .光有可执行文件还不能直接运行游戏,还需要上网找到相应的仙剑奇侠传原版的资源文件,比如声音、图片等等,并拷贝到/tmp目录下备用,我创建一个目录output_pal 用于存放仙剑
20、的执行文件和资源,然后将资源解压到该目录下,这将会在 /opt/FriendlyARM/mini6410/games/output_pal 目录下生成 xianjian 目录。9 .接下来,把编译出来的仙剑可执行文件拷到 /opt/FriendlyARM/mini6410/games/output_pal/bin/目录下,并打包10 .将 xianjian_setup.tar.gz 和 sdl_setup.tar.gz 拷贝到 u 盘中,然后将 u 盘拷贝到 FriendlyARM 开发板上,在根目录进行解压:11 .修改启动项内容,使其开机运行run_xianjian.sh脚本将/etc/i
21、nit.d/rcS中以下内容:/bin/qtopia & 修改为 /bin/run_xianjian.sh &12 .编写 run_xianjian.sh 脚本在/bin下创建一个脚本 run_xianjian.sh# vi /bin/run_xianjian.sh在其中输入:#!/bin/shexport SDL_NOMOUSE=1export LD_LIBRARY_PATH=/lib:/usr/lib:/xianjian/lib:$LD_LIBRARY_PATH cd /xianjian sdlpal_arm给脚本run_xianjian.sh加上可执行权限:13 .重启F
22、riendlyARM就可以进入游戏,看到以下界面,则说明进入游戏成功。5心得体会其实,我自己是第一次使用嵌入式,之前只简单学习过单片机,对 ARM可以说在研究 生生涯之前完全没有任何概念,许多ARM常见知识都不知道。当初选择它作为题目,一方面是因为对游戏的喜爱,另一方面是因为缺少wifi等其他硬件,是在只有一块嵌入式板子的情况下做出来选择。为了完成这一份实验报告, 找了许多资料,虽然我自己做的以软件为主, 比较简单,但是我仍然感受到了它的复杂深奥。在实际操作中也遇到了各种不懂的难题,比如烧写镜像文件到开发板之中,我曾经花费几个下午一无所获,全都烧写失败,后来才发现是我自己编写ini配置文件错误,每一次 ARM开机都因为屏幕读取失败,导致一直没有开 机画面。并且实验的最后一步,经常出错,开机之后没有任何提示,后来才发现是修改开机启动项时,由于linux系统保护,复制命令没有添加-f强制复制,不允许我修改开机启动项, 每次开机都是原来的启动项而失败。虽然过程很漫长,但是当我看到仙剑这一款游戏启动时, 还是觉得物有所值。6 结论通过查看学
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度电子商务企业监事长聘用合同范本
- 二零二五年度旅行社与旅行社签订的二零二五年度旅游人才输送合作合同
- 2025年度高速公路巡检驾驶员安全责任协议书模板
- 二零二五年度土地储备中心拆迁安置协议
- 2025辽宁能源控股集团所属抚矿集团招聘90人笔试参考题库附带答案详解
- 空分知识培训课件
- 常见急救知识培训课件
- 江南音乐文化之美知到智慧树章节测试课后答案2024年秋苏州大学
- 2025年国网新疆电力有限公司招聘1300人(第一批)笔试参考题库附带答案详解
- 2025四川科瑞软件有限责任公司北京分公司招聘销售代表1人笔试参考题库附带答案详解
- 2025年度智能仓储管理系统软件开发合同6篇
- 2024版数据中心建设与运维服务合同协议书3篇
- 2025年村三会一课工作计划表
- 网络游戏游戏运营及营销策略规划方案
- 警察着装管理规定
- 海底捞 餐厅管理手册
- 土石方运输中介三方合同协议书
- 建筑垃圾粉碎合同范例
- 2024年四川省公务员考试《行测》真题及答案解析
- ANCA相关性血管炎-3
- 上海市幼儿园幼小衔接活动指导意见(修订稿)
评论
0/150
提交评论