A40i使用笔记:2401源码环境添加7寸触摸屏驱动

一、前言

自动使用了飞凌嵌入式的2401开发环境之后,就在也没有用过触摸屏了,突然有新的需求,需求鼠标键盘,触摸屏,但是发现一个都不好使,头大,自己琢磨了两天没搞定,然后和飞凌技术沟通,还是专业的人解决专业的事情,一上午就解决了,这里感谢一下652同志,辛苦啦。

本文主要用于记录自己的调试方式,和总结,提供需求的人去参考使用

二、环境

开发环境Ubuntu16.04

目标机系统linux3.10

window10

lichee文件由2401源码包获取

显示屏7寸800x480电阻屏

三、正文

本文需求资源如下:需要的可自行下载

 接下来总接一下调试说明,并附上相关内容

此方法与2021.11.03调试完毕,移植7寸电阻触摸到2401的开发环境中

具体步骤如下:
1.
首先查看驱动是否正常编译配置,查看路径/root/Desktop/lichee/linux-3.10/arch/arm/configs的sun8iw11p1smp_oka40i_c_defconfig文件
搜索CONFIG_INPUT_SUNXI_RTP是否为y,y是自动加载驱动到内核,m是手动加载,是y即可
2.关键*
修改上面的驱动配置文件后,实际编译不一定跟随改变,需要删除/root/Desktop/lichee/linux-3.10的.config文件
因为执行build.sh都是使用.config文件进行编译的,而.config文件是由sun8iw11p1smp_oka40i_c_defconfig生成的,但不是每次编译都更新.config文件,所以需要删除.config重新生成新的
3.关键*
执行完毕前两部正常是可以支持触摸的了,但是实际还不行,是因为/root/Desktop/lichee/buildroot-201611/target/user_rootfs_extra/etc/udev/rules.d的10_a40i_input.rules少东西
打开文件,添加SUBSYSTEM=="input" KERNEL=="event*" ATTRS{name}=="all_key",    SYMLINK+="input/ts0"
4.fex文件的rtp也要进行相关配置,如下
[rtp_para]
rtp_used      = 1
rtp_screen_size = 7
rtp_regidity_level = 3
rtp_press_threshold_enable = 0
rtp_press_threshold = 0x1f40
rtp_sensitive_level = 0xf
rtp_exchange_x_y_flag = 0
5.关键*
然后就是rcS文件和qt5.9.sh这两个文件的关键性了,这两个文件添加到指定路径,其中rcS分为带触摸和不带触摸
带触摸的就是第一次烧写完毕镜像需要校准,之后就不需要了,但是如果不接屏幕就进不到系统,最好不要作为常驻文件
不带触摸的就是开机不需要执行自动校准,如果需要校准,进入到/usr/bin文件路径执行ts_calibrate文件,然后点击左上,右上,右下,左下,中心,之后sync保存重启即可
环境变量就是这么配置能够支持鼠标键盘热插拔,根据插拔状态自动创建根节点

完结

环境变量如下配置

TOUCHSCREEN=/dev/input/ts2
if [ -e /dev/input/ts2 ]; then
        TOUCHSCREEN=/dev/input/ts2
elif [ -e /dev/input/ts1 ]; then
        TOUCHSCREEN=/dev/input/ts1
elif [ -e /dev/input/ts0 ]; then
        TOUCHSCREEN=/dev/input/ts0
fi

export  QTDIR=/usr/local/Qt-5.9.0/
export  QT_ROOT=$QTDIR
export  PATH=$QTDIR/bin:$PATH

export  LD_LIBRARY_PATH=$QTDIR/lib:/usr/lib/cedarx/:$LD_LIBRARY_PATH

export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
#export LD_PRELOAD=/usr/lib/libts.so
#/usr/lib/preloadable_libiconv.so:
#       export QWS_MOUSE_PROTO="Tslib:/dev/input/event4"
export TSLIB_TSDEVICE=$TOUCHSCREEN
#       export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event4
export QT_LOGGING_RULES=qt.qpa.input=false
export QT_QPA_EVDEV_DEBUG=0
export QT_QPA_PLATFORM=eglfs
#tslib
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export QT_QPA_EGLFS_TSLIB=1
#tslib
export QT_QPA_GENERIC_PLUGINS=tslib:$TOUCHSCREEN,evdevmouse,evdevkeyboard
export QT_QPA_PLUGINS=1
export QT_QPA_EGLFS_DISABLE_INPUT=1
export QT_QPA_EGLFS_INTEGRATION=eglfs_mali
#export QT_QPA_FB_HIDECURSOR=1
#export QT_QPA_EGLFS_HIDECURSOR=1
#export QT_QPA_EGLFS_ROTATION=90

#export QWS_MOUSE_PROTO=
export DBUS_SESSION_BUS_ADDRESS=`cat /tmp/dbusaddr`

rcS配置说明,一共有两个rcS文件,一个是开机需要校准,一个是不带校准的,相关代码如下

不带校准的

/etc/autorun.sh &

带校准的


#/etc/autorun.sh &

if [ -d /usr/local/Qt-5.9.0 ];then
	echo "find qt5 installed"

	source /dbusrun.sh
	dbus-uuidgen > /etc/machine-id
	. /qt5.9.sh
	export DBUS_SESSION_BUS_ADDRESS=`cat /tmp/dbusaddr`

	ulimit -c unlimited
    #echo "/mnt/sdcard/mmcblk1p1/core" > /proc/sys/kernel/core_pattern
	#/bin/fbinit
	#cd /usr/local/Qt-5.9.0/lib/fonts/
        if [[ ! -e "/etc/pointercal" ]]; then     
           /usr/bin/ts_calibrate          
           sync                
          # /etc/init.d/runqt                     
           echo "find qt5 installed done first run"                              
        else                            
	#   /etc/init.d/runqt
	   echo "find qt5 installed done" 
        fi
else
	echo "find qt5 NOT installed"
#sleep 1
fi

可以看见多了一大段函数,这段函数的作用就是判断有没有校准点文件,没有的化执行一次校准,但是这个不建议放在那做常驻文件,因为有的新镜像新工程不一定需要触摸屏,如果不触摸校准进不到系统中,所以可以选择手动校准的方式,如果确定一定要用电阻屏,那么就用带自动驱动校准函数的rcS文件,手动校准上面也有介绍,就是打开校准程序后盲校准,然后保存,重启。

四、结语

猜你喜欢

转载自blog.csdn.net/qq_37603131/article/details/121119342
今日推荐