• 向tiny6410移植tslib(tslib-1.4)


    环境:RedHat

    已安装交叉编译器

    tslib版本:1.4

    首先在redhat文件系统的/usr/local/tslib 创建目录

    拷贝源代码tslib-1.4.tar.gz到/usr/local/tslib/ 下并解压

    进入到刚刚解压的文件夹

    执行以下命令:

    # ./autogen.sh
    # ./configure --host=arm-linux  ac_cv_func_malloc_0_nonnull=yes  -–cache-file=arm-linux.cache -prefix=/usr/local/tslib/__install
    

     -prefix=/usr/local/tslib/__install代表的是安装的位置 我这里把编译后的文件生成在/usr/local/tslib/__install目录下。如没有相应的文件夹则需要自己手动创建。

    如果执行sh脚本出现错误  则需要安装库  执行下面的语句即可

    sudo apt-get install autoconf automake libtool

    如果在配置时报错提示

          C++ compiler cannot create executables

    则安装GCC库即可

          sudo apt-get install gcc-multilib

    # make
    # make install
    

    然后将会在__install目录下生产bin etc include lib这几个文件夹。

    将__install/lib/ 下的所有文件包括子目录拷贝到文件系统的/lib/目录下

    将__install/etc/ 下的所有文件包括子目录拷贝到文件系统的/etc/目录

    设置环境变量脚本tslib.sh

    创建一个文件tslib.sh  文件内容如下:

    #!/bin/sh  
    export TSLIB_ROOT=/opt/tslib  
    export TSLIB_TSDEVICE=/dev/touchscreen-1wire  
    export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal  
    export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf  
    export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  
    export TSLIB_CONSOLEDEVICE=/dev/tty  
    export TSLIB_FBDEVICE=/dev/fb0 
    

    然后启动开发板

    # source tslib.sh
    

      

    在之前的__install/bin/ts_calibrate拷贝到开发板

    # 。/ts_calibrate
    

     这时我们将会在屏幕上看到要求触目校准的画面信息。

    这时发现根本就无法进行屏幕校准。可能 跟友善的一线触摸有关系,故我在网上搜索了相关的资料

    在网上的某个帖子解决了问题

    http://blog.csdn.net/yf210yf/article/details/7352470

    由于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
    ");  
        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;  
      
        if (ret==-1) return 0;  
      
        samp->pressure=(jjts>>31)& 0x01;  
        samp->x=(jjts>>16)& 0xffff;  
        samp->y=jjts & 0xffff;  
      
        samp++;  
        total++;  
        }  
      
     ret=total;  
      return ret;  
      
    }  
    

    特别注意:

    参照网上许多资料,上面讲的都是if (ret==-1) continue;做了以后,发现触摸屏能校准,但是运行qt程序时,光标能移动,但是点击无效。所以改成

    if (ret==-1) return 0;问题解决。

    # export PREFIX=/opt/tslib                  设置目标位置
    # ./autogen.sh                                     用于生成configure脚本
    # echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache          产生一个cache文件arm-linux.cache,欺骗configure
    # CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PREFIX --cache-file=arm-linux.cache
    # make
    # make install
    

    编译成功后在目标位置产生/bin、/etc、/include、/lib 4个文件夹 (11)修改/opt/tslib/etc/ts.conf 文件,删除其中内容,改为

              

     module_raw input
    module pthres pmin=1
    module variance delta=30
    module dejitter delta=100
    module linear
    

    第一行是tslib从linux的输入设备读取数据时需要用到的模块,这里指定的模块为input,具体需要用到哪个模块,需要参考其他数据。 第二行的pthres为Tslib提供的触摸屏灵敏度门槛插件。 第三行的variance为Tslib提供的触摸屏滤波算法插件。 第四行的dejitter为Tslib 提供的触摸屏去噪算法插件。 第五行linear为Tslib提供的触摸屏坐标变换插件。

    将/opt下的tslib文件夹拷贝到arm文件系统的/opt下

    再将tslib/lib/* 复制一份到开发板的lib目录下

    # cp /opt/tslib/lib/* /lib/ -rf

    设置环境变量脚本tslib.sh

    #!/bin/sh  
    export TSLIB_ROOT=/opt/tslib  
    export TSLIB_TSDEVICE=/dev/touchscreen-1wire  
    export TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal  
    export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf  
    export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  
    export TSLIB_CONSOLEDEVICE=/dev/tty  
    export TSLIB_FBDEVICE=/dev/fb0
    

    在开发板的/etc/profile文件后面加上

    source  /tslib.sh

    启动arm板,命令行下执行脚本

    校准触摸屏

               cd /opt/tslib/bin

               ./ts_calibrate

     

              会出现校准画面,完成后生成pointercal 文件

     

    链接

              ln -s /opt/tslib/etc/pointercal /etc/pointercal

     

     至此,tslib1.4移植完成

  • 相关阅读:
    WPF、UWP以及其他类型项目的csproj文件的迁移(SDK-Style)
    文书生成笔录预设保存按钮Mq中间转传服务
    卷宗添加争议焦点数据制造脚本(卷宗部分)
    案件信息同步之后,文书系统案件名称显示不正确问题
    DISTINCT----mysql移除返回的重复值
    Nginx系列教程(6)Nginx location 匹配规则详细解说
    转载 chrony 详解
    dmesg 时间转换
    axios---get和post用法详解
    通过递归来封装sessionStorage---set/get/delete
  • 原文地址:https://www.cnblogs.com/ynxf/p/5392476.html
Copyright © 2020-2023  润新知