讲义文稿分析_第1页
讲义文稿分析_第2页
讲义文稿分析_第3页
讲义文稿分析_第4页
讲义文稿分析_第5页
免费预览已结束,剩余25页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Mini6410上移植SDL(本手册适用Copyright©2007-2010FriendlyARMAllrights 本手册由广州友善之臂计算机科技(简称“友善之臂”)创建和,并作为标准用户手册的可以在中反馈你所遇到的问题和疑问,在以后的更新中修正或者采纳您的建议,本手册主要以Mini6410上运行,非常适合喜欢动手的用户进行练习和参考,用户可以参考此文档,移植其它的SDL接口的游戏到Mini6410与大家,在学习的同时享受游戏所带来的乐趣。Mini6410是一款十分精致的低价高品质ARM11开发板,由广州友善之臂设计、生产和销售。它采用三星S3C6410作为主处理器,在设计上承袭了Mini2440“精于心,简于形”的风格,而且布也可适用于高校教学、嵌入式培训、个人研究学习和DIY等。Tiny6410是由友善之臂的一款以ARM11(三星S3C6410)作为主处理器的嵌入式板,它664x50mm128MDDRRAM,256M/1GBSLCNandFlash器,采用5V供电,在板实现CPU必需的各种电压转换,还带有专业复位,通过2.0mm间距的排针,引出各种常见的接口资源,以供不打算自行设计CPU板的开发者进行快捷的二次开发使用。因为Mini6410Tiny6410的硬件接口和资源都是基本相同的,所以本手册完全适用开发板为了方便用户,本手册的所用到的软件包放在光盘A的“开档和\专题03Mini6410上移SDL游戏的详细步骤\源代码”下,用户可以不需要自已去文档和\专题03Mini6410上移植SDL游戏的详细步骤\Bin”,使用方法请参考文件夹内的readme.txt说明文件,同时也提供了现成可烧写的ROM,位于光B的“Images\Games”下。(友善之臂公司:本手册由ARM9之家(

)发布,请注明出处,手册内难免有遗漏和足之处,欢迎大家提出宝贵意见,请发邮件至:qt 本手册内容参考了mini6410用户bluedrum大侠编写的关于仙剑移植的博客,文章.html更新说 .-1 录.........................................................................................................................................................-4第一章MINI6410和TINY6410开发板简介6--第二章什么是SDL9第三 准备工作.............................................................................................................................................-10-安装交叉编译器-说明-第四 移植SDL运行库到MINI6410上.........................................................................................................-12----库-第五章移植《仙剑奇侠传》到MINI641016-------《超级(SUPERMARIOWAR)》是什么游戏?................................................................-26交叉编译《超级(SUPERMARIOWAR)》........................................................................-27在MINI6410上部署《超级 .-28第七章游戏?.........................................................................................................................................-30第一章mini6410和tiny6410开发板简Mini6410开发售。它采用三星S3C6410作为主处理器,在设计上承袭了Mini2440“精于心,简于形”的风格,而且布设备;也可适用于高校教学、嵌入式培训、个人研究学习DIY等。具体而言,Mini6410具有双LCD接口、4线电阻触摸屏接口、100M标准网络接口、标准DB9五线串口、MiniUSB2.0-OTG接口、USBHost1.1、3.5mm音频输出口、在板麦克风、TV-OUT接口、弹出式SD、红外接收等常用接口;另外还引出4路TTL串口、CMOSCamera接口、40pin总线接口、30pinGPIO口(可复用为SPII2C中断等3ADC1DACSDIO2口SDWiFi)、10pinJtag接口等;在板的还有蜂鸣器、I2C-EEPROM、备份电池、AD可调电阻、8按键(可引出)、4LED等;所有这些,都极大地方便了开发者的评估和使用,再加上我们按照Mini6410尺寸专门定制的4.3"LCD模块,真正做到“一手掌握所有我们还充分地发挥了6410SD卡启动这一特性,使用我们精心研制的superboot,无需连接电脑,只要把目标文件拷贝到SD卡中(可支持大于2G速大容量卡),你就可以在开发板上极快极简单在SD卡上直接运行它们,这一切,简直太酷了!要了解Mini6410开发板的详细信息,请:Tiny6410Tiny6410是一款以ARM11(三星S3C6410)作为主处理器的嵌入式板,该CPU基于ARM1176JZF-S核设计,内部集成了强大的多处理单元,支持Mpeg4,H.264/H.263等格式的文件硬件编,可同时输出至LCD和TV显示它还并带有3D图形硬件,以实现OpenGLES1.12.0加速渲染,另外它还支持2D图形图像的平滑缩放,翻转等操作Tiny6410用高密6层板设计,尺寸为64x50mm,它集成128MDDRRAM,256M/1GBSLCNandFlash器,采用5V供电,在板实现CPU必需的各种电压转换,还带有专业复位,通过2.0mm的排针,引出各种常见的接口资源,以供不打算自行设计CPU板的开发者进行快捷的二次开标准DB9五线串口、MiniUSB2.0接口、USBHost1.1、3.5mm音频输入输出口、TV-OUT接口、SD红外接收等常用接口;另外还引出4路TTL串口,另1路TV-OUTSDIO2接口(可接SDWiFi)接口等;在板的还有蜂鸣器、I2C-EEPROM、备份电池、AD可调电阻、8个中断式按键等。在布局上安排上尽量考虑把常用尺LCD模块能够固定在底7”LCD等,这样用户在使用时不至于把各种电线搅在一起,更增加了开发套件的便携性电脑,只要把目标文件拷贝到SD中(可支32G高速大容量卡),你就可以在开发板上极快就可以在SD卡上直接运行它们!要了解Tiny6410开发板的详细信息,请:第二章什么是SDL(SimpleDirectMediaLayer)是一套开放源代码的跨平台多开发库,使用C语言写成。SDLSDL使用GNU宽通用公共证为方式,意指动态(dynamiclink)其库并不需要开放本身的源代码。因此诸如《雷神之锤4(Quake4)等商业游戏也使用SDL来开发。SDL时常被比较为‘跨平台的DirectX’,然而事实上SDL是定位成以精简的方式来完成基础的功则需搭配OpenGLOpenALAPI来达成。另外它本身也没有方便创建图形用户界面的函数。SDL在结构上是将不同操作系统的库再包装成相同的函数,例如SDL在Windows平台上其实是DirectXDirectX5,现时的版本(SDL1.2)DirectX7X11的平台上(包括Linux,SDL则是与Xlib库沟通来输出图像。SDL库分为、Audio、CD-ROM、Joystick和Timer等若干子系统,除此之外,还有一些单独的扩充函数库。这些提供,并包含在文档中,共同组成了SDL的“标准库”:SDL_image—支持时行的图像格式:BMP、PPM、XPM PCX、GIF、JPEG、PNG、TGASDL_mixer—输出函数以及格式支持SDL_net—网络支持SDL的:第三章准备工安装友善之臂提供的mini6410交叉编译器烧写Linux系统的Image到开发板安装的“安装并设置Fedora9"章节。安装交叉编译从光盘上拷贝mini6410上的交叉编译器到/opt下,目前的mini6410交叉编译器是arm-linux-gcc-v6- .tgz,如果你的mini6410A光盘中的版本比较旧,建议先从友善之#cd#tarxvzf/opt/arm-linux-gcc-v6-在光盘上找到交叉编译后,将其拷到 /opt下,#cd#tarxvzf/opt/arm-linux-gcc-v6-交叉编译器会解压到 下,现在将编译器路径添加##export#arm-linux-gcc-执行以下命令能成功显示编译器版本信息表明编译器已#arm-linux-gcc-烧写Linux系统的Image到开发写用于Linux系统的Images。不会烧写的读者,请参考友善之臂提供的光盘上的mini6410用户手册本手册所移植的两个游戏《仙剑奇侠传》和《超级(SuperMarioWar)》要进行畅玩的话,47《超级支持,但需要则需要USB键盘才能玩,而且,《超级(SuperMarioWar)》不支持4寸屏。第四 移植SDL运行库到Mini6410Mini6410上,另外还需要iconv库 下找到以下文件,并拷贝到/tmp IconvSDL-SDLSDL_image-SDL_imageSDL_ttf-SDL_ttfSDL_mixer-SDL_mixer#mkdir–p在 下创 games来作为我们本次移植工作的工#mkdir–p#cd#mkdir #cd#mkdir编译iconv#cdlibiconv-1.13.1#make#make编译SDL##cd#tarxvzf/tmp/SDL-1.2.14.tar.gz#cdSDL-1.2.14-photon---dummy---ggi---nanox--svga---------#make#make--dga--disable-arts--disable-esd--disable--fbcon--host=arm-linux--编译SDL_image##cd#cdSDL_image-1.2.8#LIBPNG_LIBS="-LDFLAGS="-L/opt/mini6410/games/output/lib-ljpeg-lts-lpng-liconv"#make#make编译SDL_ttf#cd#cd#tarxvzf/tmp/SDL_ttf-2.0.9.tar.gz#cdSDL_ttf-2.0.9#./configure--host=arm-linux--prefix=/opt/mini6410/games/output--enable-shared--enable---disable---with-freetype-prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-LDFLAGS="-L/opt/mini6410/games/output/lib-lSDL-lts-liconv-lfreetype"#vi在编译之前手工修改Makefile,去掉OpenGL相#viCFLAGS=-g-O2-I/usr/include/freetype2--D_GNU_SOURCE=1-D_REENTRANT-I/usr/include-定位到123行,将CFLAGS=-g-O2-I/usr/include/freetype2--D_GNU_SOURCE=1-D_REENTRANT-I/usr/include-GL_LIBSGL_LIBS=-L/usr/lib-再定GL_LIBSGL_LIBS=-L/usr/lib-glfont_LDADD=libSDL_ttf.la-glfont_LDADD=libSDL_ttf.laglfont_LDADD=libSDL_ttf.la-glfont_LDADD=libSDL_ttf.la-L/usr/lib-lGL-#viglfont.c清空源代码文件glfont.c中的源代码(先删除,再用#viglfont.c在vi编辑器中输入以下内容并保voidvoidmain()##make最好,输入命##make编译SDL_mixer#cd#cd#cdSDL_mixer-1.2.9 #make#make将SDL库部置到Mini6410#cd#cd#tarcvzfsdl_setup.tar.gzbinlib@#cd@#tarxvzf@#cd@#tarxvzf第五章移植《仙剑奇侠传》到《仙剑奇侠传》是RPG1995年7月出片以来,即在各种游戏的榜中名列前茅,至1996年10月为止,已蝉联14剧。如今,仙剑系列作《仙剑奇侠传五》正由软星科技()接手研发。游戏开发工具、模拟器、样本演示、多应用等。交叉编译《仙剑奇侠传 下找到以下文件,并拷贝到/tmp sdlpal-仙剑奇侠传非SDL版本的源 #cd#cd#cdsdlpal/修改 更改屏幕分辩wScreenWidth=wScreenHeight=fFullScreen?480:用文本编辑器打开wScreenWidth=wScreenHeight=fFullScreen?480:改if(wScreenWidth>640||wScreenHeight>480){wScreenWidth=wScreenHeight=}再定位到439行,在main函数前面,插入以下函数,该函数用于动态获取屏幕分辨#include<stdio.h>#include#include<stdio.h>#include<string.h>#includevoidvoidgetFBSize(int*w,intchar*w=*h=if(!file){returnintif(sscanf(buf,"%d,%d",&tmp1,&tmp2)==2)*w=*h=return;修改Makefile通过对主Makefile的分析,实际编译动作是nbproject/Makefile-Debug.mk来实现的,因此,用文本编辑器打开文件nbproject/Makefile-Debug.mk,进行如下修改:14行的RANLIB=ranlib改成RANLIB=arm-linux-15行的CC=gcc改成CC=arm-linux-16行的CCC=g++CCC=arm-linux-g++17CXX=g++改成CXX=arm-linux-g++将65行的CFLAGS=`sdl-config--cflags`改成CFLAGS="-68行的CCFLAGS=`sdl-config--cflags`改成CCFLAGS=69行的CXXFLAGS=`sdl-config--cflags`改成CXXFLAGS=82行的${LINK.cc}`sdl-configlibs`XlinkerMap=dist/Debug/GNU-Linux-x86/sdlpal.mapodist/Debug/GNU-Linux-x86/sdlpal${OBJECTFILES}${LDLIBSOPTIONS}改为${LINK.cc}-L/opt/mini6410/games/output/lib-lfreetype-liconv-lmad-lz-ljpeg-lpng--lSDL_image-lSDL_ttf-lSDL-Xlinker-Map=dist/Debug/GNU-Linux-x86/sdlpal.map-osdlpal_arm${OBJECTFILES}把所有GNU-Linux-x86替换成GNU-Linux-把所有的- 替换成-提醒:提醒:如果修改不成功,或者觉得修改太麻烦光盘A中的档 \专题修改input.c如果你是用USB键盘来操作游戏,则可直接跳过这个步修复北通神鹰 C036)手柄的按键问BOOLkeyDown={case//MovedBOOLkeyDown={case//Movedanaxison//printf("PAL_JoystickEventFilter:lpEvent->jaxis.axis:%d:jaxis.value:%d\n",lpEvent->jaxis.axis,lpEvent->jaxis.value);if(lpEvent->jaxis.axis==0)if(lpEvent->jaxis.value==32767&&g_InputState.dir!=kDirSouth&&g_InputState.dir{if(g_InputState.dir!={g_InputState.dwKeyPress|=}g_InputState.dir=kDirEast;}

{if(g_InputState.dir!={g_InputState.dwKeyPress|=}g_InputState.dir=kDirWest;}

elseif(lpEvent->jaxis.value==255&&g_InputState.dir!=kDirEast&&g_InputState.dir{if(g_InputState.dir!={g_InputState.dwKeyPress|=}g_InputState.dir=kDirSouth;}

elseif(lpEvent->jaxis.value==0&&g_InputState.dir!=kDirEast&&g_InputState.dir{if(g_InputState.dir!={g_InputState.dwKeyPress|=}}{

g_InputState.dir=kDirNorth;g_InputState.dirg_InputState.dir=}}case//Pressedthejoystickswitch(lpEvent->jbutton.button&{caseg_InputState.dwKeyPress|=kKey caseg_InputState.dwKeyPress|=}}义为操作方向,参考红色字体标出的代码,例如,当lpEvent->jaxis.value==32767时,方向是向右。可参考上一个章节对北通神鹰手柄的修改,根据lpEvent->jaxis.value传过来的键值,重新转义为游戏所==/opt/mini6410/games/SDL- 下,文件名 testjoystick.c,使用以下命令交叉编译这个程序##arm-linux-gcctestjoystick.c-otestjoystick-@#./testjoystick@#./testjoystick表示释放的,我们只取按下的值即可(如图中的32767),如下图所示:/项都选中(前面打*),然后重新编译并烧写内核试试。输入make执行#make在 下执行#make编译完成后,在 下会生成可执行文件sdlpal_arm在 上部署《仙剑奇侠传光有可执行文件还不能运行游戏,还需要《仙剑奇侠传》原版的资源文件,Mini6410光盘A中的“开档和\专题03Mini6410上移植SDL游戏的详细步骤\源代码”下找到以下文件,并拷贝到/tmp下备用:#mkdir-poutput_pal/#cdoutput_pal#tarxvzf #mkdir-poutput_pal/#cdoutput_pal#tarxvzf将会在 下生成 #cd#cp../sdlpal/sdlpal_arm接着,把我们编译出来的仙剑#cd#cp../

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论