lpczcy 发表于 2009-6-4 13:56

SDL的AT91 arm linux平台交叉编译

由于需要希望能够把SDL交叉编译到我的AT91&nbsp;armlinux平台上,经过一番折腾最后成功在AT91SAM9261EK上运行了SDL步骤如下:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.下载SDL-1.2.13.tar.gz&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;&nbsp;解压缩<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;运行配置<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;./configure&nbsp;--prefix=/home/xinlian/rootfs/home/sdl&nbsp;--disable-video-qtopia&nbsp;--disable-video-dummy&nbsp;--disable-video-fbcon&nbsp;--disable-video-dga&nbsp;--disable-arts&nbsp;--disable-esd&nbsp;--disable-alsa&nbsp;--disable-cdrom&nbsp;--disable-video-x11&nbsp;--disable-nasm&nbsp;--target=arm-linux&nbsp;--host=arm-linux&nbsp;--enable-video-fbcon<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;配置中指定使用帧缓冲设备,使用arm-linux-gcc交叉编译,编译后的库和头文件安装路径是/home/xinlian/rootfs/home/sdl<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;运行make进行编译<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;5.&nbsp;&nbsp;测试,编译demo<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;进入test目录运行configue<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;修改Makefile的编译选项如下:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;arm-linux-gcc<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CFLAGS&nbsp;&nbsp;=&nbsp;-g&nbsp;-O2&nbsp;-I/home/xinlian/rootfs/home/sdl/include/SDL&nbsp;-D_GNU_SOURCE=1&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;D_REENTRANT&nbsp;-DHAVE_OPENGL&nbsp;&nbsp;&nbsp;LIBS&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;-L/home/xinlian/rootfs/home/sdl/lib&nbsp;-Wl,-rpath,/usr/local/lib&nbsp;-lSDL&nbsp;-lpthread<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.&nbsp;拷贝demo到板子运行ok<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.&nbsp;编译时还遇到一个PAGE_SIZE没有定义的错误提示,但是在内核的头文件里有定义,只是<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sdl是应用没有办法引用,我是直接&nbsp;写作&nbsp;0x1000。<br />

miclinux 发表于 2009-6-4 14:02

好,楼上的辛苦了

billen 发表于 2009-6-4 15:57

呀 SDL是什么东东啊?

armecos 发表于 2009-6-4 15:59

SDL就是这个,在2210上也早就移植好了,

**************************<br />*&nbsp;用SMARTARM2200玩魂斗罗&nbsp;*<br />**************************<br />&nbsp;&nbsp;&nbsp;&nbsp;2009/03/20&nbsp;&nbsp;asdjf@163.com&nbsp;&nbsp;www.armecos.com<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<b>图1&nbsp;魂斗罗(任天堂FC红白机游戏)</b><br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://bbs.21ic.com/upfiles/img/20093/20093202852866.gif"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<b>图2&nbsp;魂斗罗(任天堂FC红白机游戏)</b><br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://bbs.21ic.com/upfiles/img/20093/2009323182319782.gif"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<b>图3&nbsp;魂斗罗(任天堂FC红白机游戏)</b><br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://bbs.21ic.com/upfiles/img/20093/2009323182427551.gif"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<b>图4&nbsp;魂斗罗(任天堂FC红白机游戏)</b><br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://bbs.21ic.com/upfiles/img/20093/2009323182449135.gif"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<b>图5&nbsp;魂斗罗(任天堂FC红白机游戏)</b><br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://bbs.21ic.com/upfiles/img/20093/200932318255498.gif"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;键盘按键和仿真游戏手柄对应关系<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;键盘按键&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;仿真游戏手柄<br />&nbsp;&nbsp;&nbsp;&nbsp;数字小键盘&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B<br />&nbsp;&nbsp;&nbsp;&nbsp;数字小键盘&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A<br />&nbsp;&nbsp;&nbsp;&nbsp;回车/换行Enter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Start<br />&nbsp;&nbsp;&nbsp;&nbsp;Tab键&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select<br />&nbsp;&nbsp;&nbsp;&nbsp;Z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;向下<br />&nbsp;&nbsp;&nbsp;&nbsp;W&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;向上<br />&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;向左<br />&nbsp;&nbsp;&nbsp;&nbsp;S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;向右<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;嵌入式虚拟机研究<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;如果想在SMARTARM2200上玩魂斗罗,必须将SMARTARM2200虚拟成一个6502的系统,这样,游戏卡里面的bin二进制格式程序就能在异构的ARM体系上直接运行了。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;与此类似,我们完全可以仿照这个思路,在ARM上运行51虚拟机,这样,用C51编译出的二进制机器代码直接就可以在ARM上运行,此时,ARM就相当于一个超级51单片机。举一反三,可以在POWERPC上跑ARM虚拟机,我们能够用开发ARM的思路开发POWERPC系统。当然,堆叠也是可行的,在POWERPC上跑ARM虚拟机,再在ARM虚拟机上跑51虚拟机,也就是说,间接地把POWERPC变成一个51单片机。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;使用虚拟机有什么好处呢?最大的好处就是“一次编译,到处执行!”只需要编译一次,就可以在各种体系架构上运行,避免了重复劳动。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;对,这就是java的思想,而且java的安全性更加出色。我们也完全可以在ARM上实现一个java虚拟机,这样,数量众多的java程序(例如:java游戏)就可以直接在ARM上运行了。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CPU的工作原理简单说就是:取指、译码、执行。我们可以用软件模拟这个过程,由此实现的功能就是虚拟机。在虚拟机上调试可是太方便了,比任何调试仿真工具都全面,因为你可以轻易地获取任何你想要的信息,相当于把探针插入到了CPU内核,而这个虚拟CPU的任何细枝末节你都能够了如指掌,还有什么程序调试不了呢!<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;任天堂FC红白机由:音频、视频、输入设备(游戏摇杆、按键、光电枪等)、6502主CPU等构成。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;音频先不支持,因为SMARTARM2200没有现成的IIS接口,需要外扩,比较麻烦。<br />&nbsp;&nbsp;&nbsp;&nbsp;视频直接使用现成的GUI和虚拟桌面模拟。<br />&nbsp;&nbsp;&nbsp;&nbsp;输入设备使用虚拟桌面的鼠标、键盘模拟。<br />&nbsp;&nbsp;&nbsp;&nbsp;使用虚拟机执行6502指令集。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;现在就可以用SMARTARM2200玩魂斗罗了。据说任天堂FC红白机有3000多款游戏,无法一一测试,只能选择有限的几种测试一下(偶可是熬夜才打通关的,呵呵)。虽然,速度很慢,没有实际意义,但是至少证明可以在ARM上运行6502的二进制程序,对于虚拟机的实现也有了思路,其实换个快些的CPU就能实际玩了。在此基础上,可以仿照实现一个51虚拟机,进行51指令集译码,这样,本站提供的ucos51多任务操作系统就可以直接使用keil&nbsp;C51编译,然后再在ARM上运行了。

123654789 发表于 2021-4-15 23:30

顶顶顶顶顶顶顶顶

123654789 发表于 2021-4-15 23:31

这个有参考价值
页: [1]
查看完整版本: SDL的AT91 arm linux平台交叉编译