Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24031
  • 博文数量: 13
  • 博客积分: 535
  • 博客等级: 中士
  • 技术积分: 120
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-18 15:50
文章分类

全部博文(13)

文章存档

2011年(1)

2009年(12)

我的朋友

分类: 嵌入式

2009-12-04 23:09:06

郁闷了几天,QTOPIA4在板子上终于跑起来了,看到了phone的界面

 

可是自我感觉跟qtopia-1.7.0pda比起来,界面没那么好看,不过新版本应该还是有它的好处的。

 

移植过程中遇到的最大问题就是库文件的问题。

 

在编译好Qtopia-opensource-4.2.1之后,参考http://blog.csdn.net/hongjiujing/archive/2007/08/09/1733126.aspx继续以下工作:

 

 

五.编译后的处理

完成上面的步骤后,所有软件包已编译完成。下面建立环境变量,进行后期处理,建立开发环境。

1)将designer,qmake 等工具拷贝到$QTOPIATARG/bin/目录下。

# cp $QTOPIAINST/qtopiacore/host/bin/* $QTOPIATARG/bin/
2
)建立环境变量:
# vi /etc/profile
添加如下内容:
QTOPIA="/mnt/nfs/qtopia4/qtopiatslibtarget"
LD_LIBRARY_PATH="/usr/lib:/usr/local/lib:/usr/X11R6/lib"
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$QTOPIA/lib"
PATH="$PATH:$QTOPIA/bin"
QMAKESPEC=/mnt/nfs/qtopia4/qtopiatslibinstall/qtopiacore/qt/mkspecs/qws/linux-arm-g++
export QTOPIA PATH LD_LIBRARY_PATH QMAKESPEC
保存退出。
#source /etc/profile
3
)修改ts.conf
# cd /mnt/nfs/tslib1.3-install/etc
# vi ts.conf
原文件内容如下:
#module mousebuts
module variance xlimit=50 ylimit=50 pthreshold=3
module dejitter xdelta=1 ydelta=1 pthreshold=3
module linear
将第一行的“#”去掉,让触摸屏起作用。
到此为止,开发环境建立完毕。
 3
移植成果演示
在这里,我们以Qtopia自带的例子程序为例,来演示应用程序运行步骤。首先在/mnt/nfs/qtopia4/目录下用VI编辑器建立qtopiatslib.sh文件:
export TSLIB_TSEVENTTYPE=event0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CONFFILE=/mnt/nfs/tslib1.3-install/etc/ts.conf
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CALIBFILE=/mnt/yaffs/tmp/pointercal
export TSLIB_PLUGINDIR=/mnt/nfs/tslib1.3-install/share/ts/plugins
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/nfs
/tslib1.3-install/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/nfs
/qtopia4/qtopiatslibtarget/lib
export QWS_SIZE=640x480
export QWS_MOUSE_PROTO="Tslib:/dev/input/event0"
export POINTERCAL_FILE=/mnt/yaffs/tmp/pointercal

insmod /mnt/yaffs/touchscreen/ts-uptech.o
cd /mnt/nfs/tslib1.3-install/bin
./ts_calibrate

cd /mnt/nfs/qtopia4/qtopiatslibtarget/bin
if [ -f "$TSLIB_CALIBFILE" ]; then
./qpe -qws
else
/mnt/nfs/tslib1.3-install/bin/ts_calibrate
./qpe -qws
fi
保存退出,修改用户使用权限:
# chmod 777 qtopiatslib.sh
然后启动目标平台,打开minicom终端,进入目标平台的系统。在主机上启动NFS服务,将主机的/mnt/nfs目录挂载到目标机的/mnt/nfs目录。
在终端里执行:

# ifconfig eth0 192.168.0.1
# mount -t nfs (
主机IP地址):/mnt/nfs /mnt/nfs
# cd /mnt/yaffs
# mkdir tmp
# cd /mnt/nfs/qtopia4
# ./qtopiatslib.sh

执行qtopiatslib.sh文件,首先校准触摸屏,依次点击屏幕上出现的五个点,完成后,会在/mnt/yaffs/tmp目录下生成pointercal校准文件。接下来就会启动qpe应用程序,进入Qtopia Phone的界面。
在实验的过程中可能会出现下面的错误:
make的时候,遇到了一个错误。/usr/bin/ld .....debug-shared/moc.o提示could't read symbols :File in wrong format”
只要重新用新的源代码来做才能通过。

 

 

首先是tslib部分出问题了,当然经过一段时间之后还是解决了。(详见另一篇关于tslib的文章)

 

校验好触摸屏之后,就运行qpe &,先是提示有些库找不到,从交叉编译库里面copy过来后,倒是没提示库找不到,但是出现了segmental falut,有点束手无策了。

 

后来冷静的思考了一下,我正在用的nfs根文件系统是用cross-2.95.3交叉编译的,而qtopia4是用cross-3.4.1交叉编译的。难道我需要重做根文件系统?那我得重新编译busybox,建立文件系统,那样的工程量好大啊。

 

后来又仔细地想了想,交叉编译器的不同带来的主要的区别应该是库文件的不同,而其他的一些系统文件应该

 

跟交叉编译器没有关系的。那么我是不是可以直接将开发板上的库文件替换成3.4.1的版本呢?想了就做,于

 

是我就很快的将开发板/lib目录下的一些库文件更新成了3.4.1版本,然后接着运行qpe,提示NO IRAQ devices found! 然后在那儿没反应,郁闷了,倒杯水喝先,回来时竟然欣喜的发现,板子上出现了界面,

 

真是太爽了!

 

现在回过头来想想,编译qtopia4的时候我们确实应该注意使用的交叉编译器的版本,最好要保证板子上的filesystem,kernel的交叉编译器的版本的一致性,不然可能会出些令人很郁闷的问题。

 

不过还有一点疑问就是,我交叉编译tslib使用的是2.95.3的编译器,可是板子上照样可以运行ts_calibrate程序呢,难道3.4.1能向下兼容2.95.3的版本?姑且这样认为吧。

 

阅读(497) | 评论(0) | 转发(0) |
0

上一篇:Qt, QT/E, Qtopia 的区别

下一篇:求职笑话

给主人留下些什么吧!~~