2007年11月22日星期四

Qtopia-Core4.3.2总算基本上搞定了

和师弟前后忙乎了大概有一个月(嘿嘿,具体工作是他在做,遇到问题我们共同讨论),总算把Qtopia-Core4.3.2移植到优龙的FS2410的板子上,触摸屏的显示、鼠标移动点击等都没问题了。
回过头来看这一系列的工作,最重要的是概念要清楚,还有就是遇到问题时要沉下心来仔细分析,有错误提示的就认真分析错误提示,不行就上网查;没有错误提示的就在输出中加ehco语句,看是在哪一步出的问题,对问题的迅速定位是解决问题的第一步!另外一个重要的经验就是千万不要忽视Qtopia-Core自带的文档,这是最权威的东东了~
下面简单回顾一下整个过程。
首先是设置参数,使得Qtopia-Core4.3.2能在Ubuntu上跑起来。这就首先需要装Qt4.3.2,因为里面有qvfb,有了qvfb才能在PC上模拟frame buffer的小窗口。这些工作算是比较简单的,前面有文章讲过了,这里就不赘述了。
然后是用linux-arm-编译Qtopia-Core4.3.2的库,这是要放在FS2410里用的,参数设置就尤为重要了。要尽量去掉不需要的特性,这样生成的库才能又快又小~编译完了之后,将编译生成的目录中的lib目录copy到目标板中,再copy一个例子程序过去,作为检验是否成功的测试程序。需要注意的是,当使用不同的参数编译时,生成的lib文件及例子的二进制文件是不同的,每次要copy相同参数的lib和例子程序,不然会出现undefined symbol这样的错误~
在目标板的文件系统中要设置一系列的变量,并export出来,才能保证Qtopia-Core的正常运行。这些工作最好是放在rc.local中完成,当然了,想要启动后自动运行的程序最好也是在这里启动起来。
测试成功后,下面就是触摸屏的显示和触摸了,有个校准程序,是Qtopia-Core自带的例子中的一个,运行后由于我们使用的是只读的文件系统,因此无法写入/etc/pointercal,不过不要紧,用cat /etc/pointercal显示出内容(就几个数字而已),记下来,在做文件系统的时候写入/etc/pointercal就可以了~有点要注意,该文件的owner和owner group要和/etc中的其他文件相同,不然也会出问题,嘿嘿,也许不相同也行,不过相同肯定是没问题的~

1 条评论:

刀巴虫子 说...

这其中最让我感到意外的就是qvfb参数了!
原来我的理解是下载到板子的Qtopia-Core必须是用no-qvfb参数的,没想到师弟告诉我唯一成功的那次是用qvfb参数的,这着实让我吃惊不小,一度认为他肯定是记错了,让他再试试用no-qvfb来编译。他的答复是只有用qvfb是对的,其他都不对!
当然,后来证明其他都不对的原因是应用程序与lib库没有对应好,但qvfb可以,no-qvfb不可以这仍然让我想不通。在我的督促下师弟又试了no-qvfb参数,结果证明是可以的。两者的不同是no-qvfb比qvfb要快得多!
这样的结果才让我释然,原来两个参数是可以的,qvfb模拟自然要比真实的要慢了~~