Chinaunix首页 | 论坛 | 博客
  • 博客访问: 308860
  • 博文数量: 59
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 570
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-21 09:31
文章分类

全部博文(59)

文章存档

2011年(1)

2009年(58)

我的朋友

分类: LINUX

2009-03-22 15:18:12

 
准备工作:
1.安装arm-linux-g++编译器,并设置好环境变量,我的arm-linux-g++版本是3.4.1,qtopia-core-      4.3.3的编译需要3.4以上的arm-linux-g++
2.下载qtopia-core-opensource-src-4.3.3,并解压到用户主目录, 其最终目录     /home/lpzgbd/qtopia-core-opensource-src-4.3.3/mkspecs
3.进入/home/lpzgbd/qtopia-core-opensource-src-4.3.3/mkspecs目录,这里要创建linux-arm-g++目录,并复制linux-g++下的文件到 linux-arm-g++下,否则以下的./configure的时候会出错
cd  /home/lpzgbd/qtopia-core-opensource-src-4.3.3/mkspecs
cp -rf linux-g++ linux-arm-g++         
 
编译与安装:

./configure  -v -little-endian -embedded arm  
#这里按照有些低版本的资料所说的,开始时候加上了-qvfb选项,后来发现加不加这个选项其结果都要生成qvfb,仔细看了configure的help,发现里面根本就没有这个选项
 make
 make install
 将程序安装到/usr/local/Trolltech/QtopiaCore-4.3.3

启动:
我的NFS目录是/opt/FriendlyARM/QQ2440/root_nfs, 将/usr/local/Trolltech/QtopiaCore-4.3.3复制到root_nfs下
修改板根文件系统的/etc/init.d/rcS ,在最后加入以下命令
/bin/qtopia &
/bin/qtopia文件内容:
#!/bin/sh
export  HOME=/root
export  QTDIR=/usr/local/Trolltech/QtopiaCore-4.3.3-arm
export  QPEDIR=/usr/local/Trolltech/QtopiaCore-4.3.3-arm
export  KDEDIR=/opt/kde
export  QWS_KEYBOARD="USB:/dev/input/event1"
export  QWS_MOUSE_PROTO="TPanel:/dev/input/ts0"
export  PATH=$QPEDIR/bin:$PATH
export  LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib

然后通过NFS启动系统,export了一下,发现环境变量并不像 /bin/qtopia文件所设置的那样,暂时还没找到原因.
做以下测试:
cd /usr/local/Trolltech/QtopiaCore-4.3.3/examples/mainwindow/application
./application -qws
在开发板上出现图形画面,显示正常.但是还有个问题,触摸屏的响应不对,其点击位置和鼠标位置偏差相差多,甚至上小颠倒.有待解决..

补充知识(来自互联网):
  Qt/Embedded的底层图形引擎基于framebuffer,framebuffer出现在2.2.x以上内核的版本当中的一种驱动程序接口。这种接口采用mmap系统调用,将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映象,将其映射到进程地址空间之后,就可以直接进行读写操作了,而写操作可以立即反映在屏幕上。framebuffer驱动程序[1]是最重要的驱动程序之一,正是这个驱动程序才能使系统屏幕显示内容。其实现分为两个方面:一是对LCD及其相关部件的初始化,包括画面缓冲区的创建和对DMA通道的设置;二是对画面缓冲区的读写,具体到代码为read、write等系统调用接口。
  Qt/Embedded直接写入帧缓冲,在宿主机上则是通过qvfb(vituralframebuffer)来模拟帧缓冲。qvfb是X窗口用来运行和测试Qtopia应用程序的系统程序,允许我们在桌面及其上开发Qt嵌入式程序,而不需要在命令台和X11之间来回切换。qvfb使用了共享存储区域(虚拟的帧缓冲)来模拟帧缓冲并且在一个窗口中(qvfb)模拟一个应用来显示帧缓冲,显示的区域被周期性的改变和更新。通过指定显示设备的宽度和颜色深度,虚拟出来的缓冲帧和物理的显示设备在每个像素上保持一致。这样我们在每次调试应用时不需要总是刷新嵌入式设备的FLASH存储空间,从而加速了应用的编译、连接和运行周期。
总结:
这次用了很久的时间才弄出来,其原因主要是一开始太急躁了.参照网上低版本的方法,结果没有成功.后来自己静下心仔细研究了一下configure并思考问题所在,最终解决问题
阅读(1015) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~