tslib+qt4移植(整理版)

              本来想着花半个星期的时间把QT及TSLIB的移植搞定,但结果出现了一些令我一时半会无法解

决的问题。第一,移植完QT,在QT上面跑了一个hello world程序,结果提示缺两个库,我弄了两个

假库骗了过去,结果也出来了HELLOWORLD。但让我疑惑的是,动态编译中,编译连接的库应该

和运行库一样,为什么我把编译时的库全拷过去,还提示缺库呢?(这个问题是Makefiel在作怪)
第二,移植tslib的时候,换了几个tslib,最终算是成功了半个,半个的意思是,测试文件ts_calulate运
行没问题,可ts_test运行的是,光标一摸就飞了,再也找不到了。我用友善的一线触摸。(这个是

下载的tslib有问题,需要改程序)。但又出现两个问题,第一,运行QT程序的时候,光标只能点到

点之间跳转,不能滑动。第二,光标点击QT按钮没反应。
       这件事情到此也够一段落,用了我一周的时间,整理一下文档。。毕竟,这次移植是我按照原

理去移植的,而不是完全照抄网上的步骤做的,所以在此过程中我也学会了不少东西。
一,到 http://qt.nokia.com/下载qt-embedded-linux-opensource-src-4.5.3.tar.gz和qt-x11-opensource-src-4.5.3.tar.gz,还有
        tslib-1.4.tar.gz,解压到相应目录。
二,安装tslib1.4
        下载,解压进目录。大家都会。
         我用的是tiny6410的一线触摸,所以需要改程序,照别人的:
        打开tslib/plugins/input-raw.c

        把其中的ts_input_read 函数改成如下:

static int ts_input_read(struct tslib_module_info *inf,
    struct ts_sample *samp, int nr)
{
    printf ("HEAD=== ts_input_read in INPUT-RAW.C\n");
 struct tslib_input *i = (struct tslib_input*)inf;
 struct tsdev *ts = inf->dev;
 struct input_event ev;
 int ret = nr;
 int total = 0;
 unsigned long jjts;
    while(total<nr)
     {
        ret =read(ts->fd, &jjts,sizeof(jjts));

       if (ret==-1) continue;

    samp->pressure=(jjts>>31)& 0x01;
    samp->x=(jjts>>16)& 0xffff;
    samp->y=jjts & 0xffff;
        
    samp++;
    total++;
     }

 ret=total;
 return ret;

}
 然后找到 tslib/plugins/input-raw.c

把其中的ts_input_read 函数改成如下:

static int ts_input_read(struct tslib_module_info *inf,
    structts_sample *samp, int nr)
{
    printf ("HEAD=== ts_input_read in INPUT-RAW.C\n");
 struct tslib_input *i = (struct tslib_input*)inf;
 struct tsdev *ts = inf->dev;
 struct input_event ev;
 int ret = nr;
 int total = 0;
 unsigned long jjts;
    while(total<nr)
     {
        ret =read(ts->fd, &jjts,sizeof(jjts));

       if (ret==-1) continue;

    samp->pressure=(jjts>>31)& 0x01;
    samp->x=(jjts>>16)& 0xffff;
    samp->y=jjts & 0xffff;
        
    samp++;
    total++;
     }

 ret=total;
 return ret;

}
然后找到 tslib/plugins/input-raw.c

把其中的ts_input_read 函数改成如下:

static int ts_input_read(struct tslib_module_info *inf,
    structts_sample *samp, int nr)
{
    printf ("HEAD=== ts_input_read in INPUT-RAW.C\n");
 struct tslib_input *i = (struct tslib_input*)inf;
 struct tsdev *ts = inf->dev;
 struct input_event ev;
 int ret = nr;
 int total = 0;
 unsigned long jjts;
    while(total<nr)
     {
        ret =read(ts->fd, &jjts,sizeof(jjts));

       if (ret==-1) continue;

    samp->pressure=(jjts>>31)& 0x01;
    samp->x=(jjts>>16)& 0xffff;
    samp->y=jjts & 0xffff;
        
    samp++;
    total++;
     }

 ret=total;
 return ret;

}
./autogen.sh
./configure --host=arm-linux  –cache-file=arm-linux.cache --prefix=/自己的目录
 make
 make install
然后把安装后的目录拷到开发板
打开/tslib/etc/ts.conf  开释这个module_raw_input
新建/etc/profile,设置环境变量,我的如下:
export TSLIB_ROOT=/tslib
export TSLIB_TSDEVICE=/dev/touchscreen-1wire
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export QWS_MOUSE_PROTO=tslib:/dev/touchscreen-1wire
export QWS_SIZE=800x480
export TSLIB_FBDEVICE=/dev/fb0
export QT_QWS_FONTDIR=/tiny6410/lib/fonts
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib:/tiny6410/lib
然后source /etc/profie就好了。
运行/tslib/bin/下的文件,没问题。

三,安装qt-x11-opensource-src-4.5.3
       # tar -zxvf qt-x11-opensource-src-4.5.3.tar.gz
       # cd qt-x11-opensource-src-4.5.3
       # ./configure
       # make
       # make install
       qt-x11 被安装到此目录下/usr/local/Trolltech/
       编译qvfb:
       # cd qt-x11-opensource-src-4.5.3/tools/qvfb
       # make
       这样就好了,这个没什么好说的。
四,安装qt-embedded-linux-opensource-src-4.5.3
       # tar -zxvf qt-embedded-linux-opensource-src-4.5.3.tar.gz
       # cd qt-embedded-linux-opensource-src-4.5.3
       #./configure ./configure -prefix /tiny6410 -release -shared -fast -pch -no-qt3support -qt-sql-         

      sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -nomake tools -nomake          

      examples -nomake demos -optimized- qmake -no-nis -no-opengl -no-cups -no-xcursor -no-         

      xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape -no-separate-                   

      debug-info -xplatform qws/linux-arm-g++ - embedded arm -depths 16 -no-qvfb -no-gfx-qvfb -no   

      -kbd-qvfb -no-mouse-qvfb -qt-gfx-linuxfb   -qt-kbd-usb -confirm-license -qt-mouse-tslib -I             

      /tslib安装目录/include -L /tslib安装目录/lib
    (我自己的设置,你可以通过查看./configure -help来设置)
      #make
      #make install
      因为每次用是都用设qmake环境变量,所以借鉴网友的做法,在这个根目录下建一个脚本文件,

     进去的时候执行一下.  
      然后进安装目录,把lib拷到开发板,设置开发板相应目录就行了。
     关于字体,lib下面是有的,只要设环境变量就行了,我不知道网上为什么有下面这一说法,或许  

    是我还没用到吧。反正摘录下来,万一以后用到)
   (接下来事字体(在lib目录的fonts),字体比较麻烦,
     根据文档说明,Qtopia默认查找字体的目录是/usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts
     我们有两种方式来挂载字体库。
    第一种:
    #mount -t ramfs ramfs /usr
    #cd /usr
    #mkdir local && mkdir local/Trolltech
    #ln -s /mnt local/Trolltech/QtEmbedded-4.5.3-arm
    #ls /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib/fonts
    这样我们就配置好了。
    如果上一种方法不行,看下面这种,一定可以!
    第二种:
     首先用到刚才的备用的nfs目录 fonts(看名字就晓得用来挂载字体库的)
    #cp -arf /usr/local/Trolltect/QtEmbedded-4.5.3-arm/lib/fonts /fonts
   在开发板里
   #mkdir /usr/local && mkidr /usr/local/Trolltech &&mkdir /usr/local/Trolltech/QtEmbedded-4.5.3-arm
   &&/usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib
   #mount -t nfs 192.168.0.10:/fonts /usr/local/Trolltech/QtEmbedded-4.5.3-arm/lib  -o nolock
   这样就把字体库链接到 /usr/local/Trolltech/QtEmbedded-4.5.3/lib/fonts目录来了)
   然后弄一个QT程序进去试试就好了。




就有一套完全属于自己的嵌入式开发的基本的东西了。
(欢迎转载,欢迎交流994796397)




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值