http://xianzilu.spaces.live.com/blog/cns!4201FDC93932DDAF!274.entry
除了链接,我也把他写的内容转到这里来:
在ARM Linux上使用OpenGL
不过在这里想强调一点:上面提到的大牛的博客中,有些地方写的不够详细,可能你开始看的时候会有点迷糊,我们一开始也不明白,后来做到后面遇到问题了才会反过来重新思考,在此就相关的地方我提前打个招呼。
“修改backends/vesafb/tk.c中,initialize_fbdev函数有关VarInfo的设置,改为适合你的LCD的” 这句话,是要把你的opengl里面程序的关于frambuffer 和开发板的LCD配置相符:
要修改点代码,但是我们老师把这段代码直接注释掉了也是可以的,所以你可以两种方法都试一下。
具体的代码所在文件路径我也附上
root/embeded-dev/linux-2.6.20.1-xmu-skyeye/arch/arm/mach-pxa
[root@localhost mach-pxa]# vi xmu255.c
[root@localhost mach-pxa]#
??????;/usr/PicoGL/backends/vesafb/tk.c
tatic struct pxafb_mode_info xmu255_fb_mode = {
};
/root/embeded-dev/linux-2.6.20.1-xmu-skyeye/include/asm/arch
#define LCD_PIXCLOCK
#define LCD_BPP
#define LCD_XRES
#define LCD_YRES
#define LCD_HORIZONTAL_SYNC_PULSE_WIDTH
#define LCD_VERTICAL_SYNC_PULSE_WIDTH
#define LCD_BEGIN_OF_LINE_WAIT_COUNT
#define LCD_BEGIN_FRAME_WAIT_COUNT
#define LCD_END_OF_LINE_WAIT_COUNT
#define LCD_END_OF_FRAME_WAIT_COUNT
#define LCD_SYNC
#define LCD_LCCR0
#define LCD_LCCR3
我们继续。
中间还出现了找不到fb0 fd 等类似错误,解决的方法也在网盘上,下次加上去。
到这里opengl应该没有问题了,然后开始sdl
拿我们自己来说,我们添加的代码为:
PATH=/usr/local/arm/3.4.1/arm-linux-gcc
下面就开始交叉编译了。
:首先下载 SDL-1.2.3.tar.gz
#tar zxvf SDL-1.2.3.tar.gz
#cd SDL-1.2.3
下面配置文件:
#./configure --prefix=/opt/libSDL --host=arm-linux --disable-video --disable-arts --disable-nasm --disable-video-x11 --disable-nas
或者是
#./configure --prefix=/tftpboot/root/usr --enable-video-fbcon --disable-video-qtopia --disable-video-photon --disable-video-direct --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 --disable-debug --disable-joystick-amigaos --disable-joystick-beos --disable-joystick-bsd --disable-joystick-darwin --disable-joystick-dc --disable-joystick-linux --disable-joystick-macos --disable-joystick-mint --disable-joystick-win32 --disable-joystick --host=arm-linux --build=i386
这个命令的多少取决与你自己的情况,上面有很多disable or enable,是根据你自己的需要设置的,具体的每个东东的含义我也不清楚,只是看这有些自己认识需要的就enable了,其他的就参考人家的了。
#make
#make install
当前目录下应该有个test文件夹,里面是自带的测试程序,要把这些东东也编译一下。
#cd test
在test的程序中,会用到mouse。但是开发板没有该设备,故如果直接对test进行编译的话,在开发板上运行的时候会出现以下错误:
“can not open mouse"
这个问题有两种解决方案,我们采取的是第二种,方法如下:
1090* ./configure CC=arm-linux-gcc --target=arm-linux --host=arm-linux --enable-threads --enable-timers --enable-endian --enable-file --enable-oss --disable-alsa --disable-esd --disable-arts --disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest --disable-mintaudio --disable-nasm --disable-video-x11 --disable-video-dga --enable-video-fbcon --enable-video-directfb --enable-video-ps2gs --disable-video-xbios --disable-video-gem --disable-video-dummy --enable-video-opengl --enable-input-events --enable-pthreads --enable-video-picogui --enable-video-qtopia
其中enable和disable的选择需要根据个人情况而定
#make
#cp * /root/embeded-dev/fs/test/(在开发板的根目录下)
运行开发板,我们用的是NFS系统,进入根目录之后
#cd test
export SDL_NOMOUSE=1
#./testwin
应该就可以看到结果了
解决“can not open mouse”的第二种方法,就是直接将代码屏蔽掉。这段代码所在的文件是你所要测试的程序的源文件
然后从头开始交叉编译,那么就不需要上面红色那个export命令了