打印
[ZLG-ARM]

SDL的AT91 arm linux平台交叉编译

[复制链接]
2814|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lpczcy|  楼主 | 2009-6-4 13:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
由于需要希望能够把SDL交叉编译到我的AT91 armlinux平台上,经过一番折腾最后成功在AT91SAM9261EK上运行了SDL步骤如下:

        1.下载SDL-1.2.13.tar.gz 

       2.  解压缩

       3. 运行配置

          ./configure --prefix=/home/xinlian/rootfs/home/sdl --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

          配置中指定使用帧缓冲设备,使用arm-linux-gcc交叉编译,编译后的库和头文件安装路径是/home/xinlian/rootfs/home/sdl

     4. 运行make进行编译

    5.  测试,编译demo

        进入test目录运行configue

       修改Makefile的编译选项如下:

       CC      = arm-linux-gcc
       EXE     =
      CFLAGS  = -g -O2 -I/home/xinlian/rootfs/home/sdl/include/SDL -D_GNU_SOURCE=1 -       D_REENTRANT -DHAVE_OPENGL   LIBS    =  -L/home/xinlian/rootfs/home/sdl/lib -Wl,-rpath,/usr/local/lib -lSDL -lpthread

       6. 拷贝demo到板子运行ok

       7. 编译时还遇到一个PAGE_SIZE没有定义的错误提示,但是在内核的头文件里有定义,只是

            sdl是应用没有办法引用,我是直接 写作 0x1000。

相关帖子

沙发
miclinux| | 2009-6-4 14:02 | 只看该作者

好,楼上的辛苦了

使用特权

评论回复
板凳
billen| | 2009-6-4 15:57 | 只看该作者

呀 SDL是什么东东啊?

使用特权

评论回复
地板
armecos| | 2009-6-4 15:59 | 只看该作者

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

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

使用特权

评论回复
5
123654789| | 2021-4-15 23:30 | 只看该作者
顶顶顶顶顶顶顶顶

使用特权

评论回复
6
123654789| | 2021-4-15 23:31 | 只看该作者
这个有参考价值

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

77

帖子

0

粉丝