Chinaunix首页 | 论坛 | 博客
  • 博客访问: 353413
  • 博文数量: 49
  • 博客积分: 3229
  • 博客等级: 中校
  • 技术积分: 616
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-26 21:46
文章分类

全部博文(49)

文章存档

2011年(8)

2010年(2)

2009年(3)

2008年(36)

我的朋友

分类: LINUX

2008-03-05 13:49:58

准备工作:
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并思考问题所在,最终解决问题
阅读(3720) | 评论(7) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-09-07 21:32:15

修改 src/gui/embedded/qmouselinuxtp_qws.cpp 添加 #define QT_QWS_IPAQ 注释掉qmouselinuxtp_qws.cpp中的一些代码,以免触摸屏上下和左右颠倒 //#ifdef QT_QWS_SHARP // samples[currSample] = QPoint(1000 - data->x, data->y); //#else samples[currSample] = QPoint(data->x, data->y); //#endif 以及 //#if defined(QT_QWS_SCREEN_COORDINATES) mousePos = handler->transform(mousePos); //#endif

chinaunix网友2008-08-16 18:53:26

没有哈

chinaunix网友2008-08-15 15:36:22

请问你的触摸屏上下颠倒的问题解决了么?

chinaunix网友2008-05-04 16:52:36

问题解决了,网上搜到的! 需要保持编译安装的路径和开发板上使用的路径一样。 比如安装的路径为/Qtopia/QtopiaCore-4.3.3-arm 那么运行环境中也要有/Qtopia/QtopiaCore-4.3.3-arm,并且必须是一样的路径。 还是是开源的力量大! 在此多谢有名无名的大侠

chinaunix网友2008-04-30 16:39:15

cd /usr/local/Trolltech/QtopiaCore-4.3.3/examples/mainwindow/application ./application -qws 请问上面的这些命令,你是在嵌入式的板子上运行的吗? 我按照你的编译通过了,可是启动板子后显示 /rootfs1/Qtopia/QtopiaC ore-4.3.3-arm//lib/fonts - is Qt installed correctly 找不到fonts, 可是明明那里有啊?