I.MX6 Linux eGTouch TouchScreen porting

时间:2022-09-29 09:24:55
                    I.MX6 Linux eGTouch TouchScreen porting


一、Download Driver:
    http://www.eeti.com.tw/drivers_Linux.html

二、阅读:EETI eGTouch Linux Programming Guide

三、系统启动配置:
    ......
    # 本人直接将驱动放在内核里了,并没有做成模块
    # insmod /module/hid-multitouch.ko
    # 使用eGTouch_v2.5.4330.L-ma/eGTouchARM/eGTouchARMnonX里面的文件
    /usr/bin/eGTouchD &

    # sleep 1      # 我是通过这个sleep 1发现是设备节点不存在造成的
    while [ ! -e /dev/input/event4 ]
    do
        echo "please hang up USB TOUCH !"
        usleep 10  # 自己写的C延时程序当shell命令用
    done

    export TSLIB_ROOT=/usr/local/tslib-instal                                
    export TSLIB_TSDEVICE=/dev/input/event4                                  
    export TSLIB_CALIBFILE=/etc/pointercal                                   
    export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf                            
    export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts                                
    export TSLIB_FBDEVICE=/dev/fb0                                           
    export PATH=/usr/local/tslib-instal:$PATH                      
    export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib
    export QT_QWS_FONTDIR=/usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib/fonts
    export QWS_MOUSE_PROTO=tslib:/dev/input/event4 
    ......

四、问题集锦:
    1. 问题1:不确定那个input输入:
        解决方法:
            1. 运行:cat /proc/bus/input/devices;
                root@freescale /etc$ cat /proc/bus/input/devices 
                ......
                
                I: Bus=0006 Vendor=0eef Product=0020 Version=0001
                N: Name="eGalaxTouch Virtual Device for Multi"
                P: Phys=
                S: Sysfs=/devices/virtual/input/input5
                U: Uniq=
                H: Handlers=cpufreq_interactive event4 
                B: PROP=2
                B: EV=b
                B: KEY=400 0 0 0 0 0 0 0 0 0 0
                B: ABS=6608000 1000003
                
                I: Bus=0006 Vendor=0eef Product=0010 Version=0001
                N: Name="eGalaxTouch Virtual Device for Single"
                P: Phys=
                S: Sysfs=/devices/virtual/input/input6
                U: Uniq=
                H: Handlers=event5 
                B: PROP=2
                B: EV=b
                B: KEY=30000 0 0 0 0 0 0 0 0
                B: ABS=3
                
                root@freescale /etc$ 
            2. 通过H:Handlers确定eGTouch对应的是/dev/input/event4、/dev/input/event5,
                两个都试一下就知道哪个能用了。

    2. 问题2:系统第一次开机时执行ts_calibrate闪退(经常连闪都看不到),导致无法正常校正:
        解决方法:
            在/usr/bin/eGTouchD &设备插入检测机制,原因是,生成上面的event4、 event5
            是需要一点时间的,这样后面的tslib才能正确的识别。
            while [ ! -e /dev/input/event4 ]
            do
                echo "please hang up USB TOUCH !"
                usleep 10
            done
            
    3. 问题3:tslib: Selected device is not a touchscreen (must support ABS and KEY event types)
        解决方法:
            1. 可能是因为驱动不支持,更换标准的驱动,因为有些驱动是别人在标准驱动上
                修改的驱动,所以最好换成官方标准的驱动;
            2. export TSLIB_TSDEVICE=/dev/input/event4指向的input设备不正确,注意
                修改成正确的input设备;