完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Tslib 移植和使用
ft5426 触摸驱动添加成功后,发现触摸可能不太准确,这时可以使用一个第三方开源库 tslib 来调试触摸屏。下面来看一下 tslib 源码如何移植。 |
|
|
|
获取 tslib 源码
tslib 源码可以从官方地址获取:https://github.com/libts/tslib,打开网址可以看到最新的版本是 1.21,可以从官网获取,也可以从网盘资料中获取,资料路径:i.MX6UL 终结者光盘资料/06_Linux 驱动例程/第三方库源码/tslib-1.21.tar.bz2。获取到 tslib 源码后,拷贝到 Ubuntu 系统下并解压,得到 tslib-1.21 文件夹。 |
|
|
|
编译 tslib
获取到 tslib 源码后,可以编译 tslib 源码,具体有下面几个步骤。 1、修改 tslib 源码所属用户 修改解压得到的 tslib-1.21 目录所属用户为当前用户,如果不修改可能会在稍后的编译中会遇到各种问题。我当前 ubuntu 的登录用户名为“topeet”,那么修改命令如下: sudo chown topeet:topeet tslib-1.21 -R修改后如图 54.5.2.1 所示: 2、Ubuntu 工具安装 编译 tslib 的时候需要先在 ubuntu 中安装一些文件,防止编译 tslib 过程中出错,命令如下所示: sudo apt-get install autoconf sudo apt-get install automake sudo apt-get install libtool 3、编译 tslib 首先创建一个 tslib 文件夹,用于存放编译结果。比如文件路径为:/home/topeet/tslib 然后使用下列命令配置并编译 tslib: cd tslib-1.21/ //进入 tslib 源码目录 。/configure --host=arm-none-linux-gnueabi --prefix=/home/topeet/tslib make //编译 make install //安装 注意,在使用。/configure 配置 tslib 的时候“--host”参数指定编译器,指定的编译器要和编译文件系统使用同一个编译器,否则在开发板下不能正常使用。“--prefix”参数指定编译完成以后的 tslib 文件安装到哪里,这里肯定是安装到我们刚刚创建的“tslib”目录下。 编译完成后 tslib 目录如图 54.5.2.2 所示: 然后将 tslib 目录下的所有文件拷贝到开发板的根文件系统下。如果直接拷贝的话会出现符号链接文件不能拷贝的现象,可以先使用 tar 命令进行打包,然后解压到根文件系统下。命令如下: tar -czvf lib.tar.gz * //打包生成 lib.tar.gz 压缩包 tar -xvf lib.tar.gz / //解压到开发板根文件目录下 |
|
|
|
测试 tslib
当把编译好的 tslib 拷贝到开发板后,进行命令测试。 1、配置 tslib 打开/etc/ts.conf 文件,找到下面这一行: module_raw input 如果上面这句前面有“#”的话就删除掉“#”。 打开/etc/profile 文件,在里面加入如下内容: 1 export TSLIB_TSDEVICE=/dev/input/event1 2 export TSLIB_CALIBFILE=/etc/pointercal 3 export TSLIB_CONFFILE=/etc/ts.conf 4 export TSLIB_PLUGINDIR=/lib/ts 5 export TSLIB_CONSOLEDEVICE=none 6 export TSLIB_FBDEVICE=/dev/fb0 第 1 行,TSLIB_TSDEVICE 表示触摸设备文件,这里设置为/dev/input/event1,这个要根据具体情况设置,如果你的触摸设备文件为 event2 那么就应该设置为/dev/input/event2,以此类推。 第 2 行,TSLIB_CALIBFILE 表示校准文件,如果进行屏幕校准的话校准结果就保存在这个文件中,这里设置校准文件为/etc/pointercal,此文件可以不存在,校准的时候会自动生成。 第 3 行,TSLIB_CONFFILE 表示触摸配置文件,文件为/etc/ts.conf,此文件在移植 tslib 的时候会生成。 第 4 行,TSLIB_PLUGINDIR 表示 tslib 插件目录位置,目录为/lib/ts。 第 5 行,TSLIB_CONSOLEDEVICE 表示控制台设置,这里不设置,因此为 none。 第 6 行,TSLIB_FBDEVICE 表示 FB 设备,也就是屏幕,根据实际情况配置,我的屏幕文件为/dev/fb0,因此这里设置为/dev/fb0。 全部配置好以后重启开发板,然后就可以进行测试了。 2、 测试 tslib 开发板重新启动后,可以先进行校准,使用下面的命令: ts_calibrate 校准完成后,会生成/etc/pointercal 文件,如果想重新校准,可以直接删除/etc/pointercal 文件,重新执行校准命令。 然后可以使用 ts_test_mt 这个命令来测试触摸屏工作是否正常,以及多点触摸是否有效,执行如下所示命令: ts_test_mt 命令执行后会打开一个测试界面,如图 54.5.3.1 所示: 上图中有三个按钮“Drag”、“Draw”和“Quit”,这三个按钮的功能如下: Drag:拖拽按钮,默认就是此功能,大家可以看到屏幕中间有一个十字光标,我们可以通过触摸屏幕来拖拽此光标。一个触摸点一个十字光标,对于 5 点电容触摸屏,如果 5 个手指都放到屏幕上,那么就有 5个光标,一个手指一个。 Draw:绘制按钮,按下此按钮我们就可以在屏幕上进行简单的绘制,可以通过此功能检测多点触摸工作是否正常。 Quit:退出按钮,退出 ts_test_mt 测试软件。 |
|
|
|
使用 Linux 内核自带的 ft5426 驱动
在 Linux 内核中集成了许多电容触摸芯片的驱动,其中就包括我们使用的 ft5426 的驱动。所以我们来使用一下 Linux 内核自带的 ft5426 驱动文件。在使用之前需要先将前面我们添加的 ft5426.c 驱动文件去除掉,只 需 要 修 改 drivers/input/touchscreen/Makefile 这个文件即可,将下面这一行删除掉: obj-y += ft54266.o 内核自带的 ft5426 的驱动文件为 drivers/input/touchscreen/edt-ft5x06.c。 1、使能内核 ft5426 驱动配置 要使用 Linux 内核自带的驱动,需要添加 Linux 内核配置。首先打开图形化配置界面,命令如下: make ARCH=arm menuconfig 配置路径如下: Device Drivers ---》 Input device support ---》 Touchscreens ---》 《*》 EDT FocalTech FT5x06 I2C Touchscreen support 配置如图 所示: 配置完成后重新编译 Linux 内核,生成 zImage 镜像。 2、 修改设备树文件 我们要根据 edt-ft5x06.c 文件中的 compatible 属性修改设备树下 ft5426 设备节点的 compatible 属性值edt-ft5x06.c 所支持的 compatible 属性列表如下所示: static const struct of_device_id edt_ft5x06_of_match[] = { { .compatible = “edt,edt-ft5206”, }, { .compatible = “edt,edt-ft5306”, }, { .compatible = “edt,edt-ft5406”, }, { /* sentinel */ } }; 可以看出,edt-ft5x06.c 文件默认支持的 compatible 属性只要三个“edt,edt-ft5206”、“edt,edt-ft5306”和“edt,edt-ft5406”。我们可以修改设备树中的 ft5426 节点,在 compatible 属性值添加一条“edt,edt-ft5406”,或者在 edt-ft5x06.c 文件中的 edt_ft5x06_of_match 表,在里面添加一条: { .compatible = “edt,edt-ft5426”, } 总之一句话,让 ft5426 这个设备和 edt-ft5x06.c 这个驱动匹配起来。这里我们修改设备树下的 ft5426设备节点,修改后如下所示; 1 ft5426: ft5426@38 { 2 compatible = “edt,edt-ft5426”,“edt,edt-ft5406”; 3 reg = 《0x38》; 4 pinctrl-names = “default”; 5 pinctrl-0 = 《&pinctrl_tsc》; 6 interrupt-parent = 《&gpio1》; 7 interrupts = 《9 0》; 8 reset-gpios = 《&gpio5 9 GPIO_ACTIVE_LOW》; 9 interrupt-gpios = 《&gpio1 9 GPIO_ACTIVE_LOW》; 10 }; 在 compatible 属性中添加“edt,edt-ft5406”兼容值。 设备树修改完成后,重新编译。然后使用新的 zImage 和 dtb 设备树文件启动开发板。驱动正常的情况,有如下启动信息: 然后可以使用下面的命令查看 input 设备的具体情况: cat /proc/bus/input/devices 结果如图: 然后可以使用 hexdump 或者 ts_test_mt 命令进行测试。 |
|
|
|
只有小组成员才能发言,加入小组>>
793 浏览 0 评论
1152 浏览 1 评论
2528 浏览 5 评论
2861 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2711 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1072浏览 3评论
195浏览 2评论
457浏览 2评论
370浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 02:35 , Processed in 1.264727 second(s), Total 88, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号