I.MX6开发板移植Linux4.1.15内核之TSC2007触摸屏设备树信息的添加
发布日期:2021-07-01 00:05:05 浏览次数:3 分类:技术文章

本文共 2446 字,大约阅读时间需要 8 分钟。

之前写过一篇3.0.35内核移植关于TSC2007触摸屏驱动移植的文章。里面对TSC2007.c驱动程序的分析比较清晰,点击链接查看:

本篇文章,主要记录在4.1.15内核移植的过程中,对于TSC2007设备的添加,需要如何添加设备树信息。

1、TSC2007硬件原理图分析

先看相关原理图:

tsc2007控制器芯片的原理图。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

由tsc2007芯片原图与核心板相关连接的引脚知:

  • 触摸屏与CPU通过I2C总线进行数据传输,且为I2C3
  • I2C3有两条线,SCL与SDA,分别于核心板的GPIO_3与GPIO_6连接
  • 中断引脚为GPIO6_IO7,与核心板的连接为NAND_CLE系列引脚

2、TSC2007设备树的添加

本次主要修改imx6qdl-sabresd.dtsi文件,该文件是与具体外设相关的文件

在i2c3节点下:

&i2c3 {
clock-frequency = <100000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c3>; status = "okay"; //添加 tsc2007@48 {
compatible = "ti,tsc2007"; reg = <0x48>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c1_tsc2007_int>; interrupt-parent = <&gpio6>; interrupts = <0x7 0x8>; gpios = <&gpio6 7 0>; ti,x-plate-ohms = <180>; };};

在iomuxc节点下的imx6qdl-sabresd节点下:

&iomuxc {
pinctrl-names = "default"; pinctrl-0 = <&pinctrl_hog>; imx6qdl-sabresd {
........ ........ pinctrl_i2c3: i2c3grp {
fsl,pins = < MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1 MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1 >; }; pinctrl_i2c1_tsc2007_int: i2c1_tsc2007_int {
fsl,pins = < MX6QDL_PAD_NANDF_CLE__GPIO6_IO07 0x80000000 >; }; ........ ........ };};

3、触摸屏的校准

校准的目的:为了与显示屏的坐标一一对应。我们一般采用软件校准,使用Tslib库里的校准软件进行校准们首先需要移植Tslib库。

  • 将Tslib库编译安装到文件系统中
编译tslib(放到rootfs/tslib/tslib):$ tar xzf tslib-1.4.tar.gz$ cd tslib$ ./autogen.sh $ mkdir tmp$ echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache$ ./configure --host=arm-linux --cache-file=arm-linux.cache --prefix=$(pwd)/tmp$ make$ make install

我的这一步骤是放到开发的环境中做的,其实可以直接在单板上搞,如果单板上是有编译器的话。

  • 然后将系统烧写到单板,在单板上操作:
$ cd /tslib/tslib/tmp$ cp * / -rfd1.修改 /etc/ts.conf第1行(去掉#号和第一个空格):# module_raw input改为:module_raw input2.添加环境变量$ export TSLIB_TSDEVICE=/dev/input/event1$ export TSLIB_CALIBFILE=/etc/pointercal$ export TSLIB_CONFFILE=/etc/ts.conf$ export TSLIB_PLUGINDIR=/lib/ts$ export TSLIB_CONSOLEDEVICE=none$ export TSLIB_FBDEVICE=/dev/fb0
  • 测试
$ ts_calibrate
$ ts_test

备注:如果出现段错误,解决办法如下:

1、ts.conf文件中的各个设置选项之前不能有空格,否则会出现: Segmentation fault 错误

2、不要在pointercal对应的目录下,建立一个空的pointercal文件,否则在运行ts_calibrate时,

也可能会出现Segmentation fault

4、总结

不要放弃,下一次就会成功!!!

学习探讨加:

qq:1126137994
微信:liu1126137994

转载地址:https://lyy-0217.blog.csdn.net/article/details/83318024 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指offer - C++/Java】1、二维数组中的查找
下一篇:IMX6移植Linux4.1.15内核时需要添加矩阵按键的设备树信息

发表评论

最新留言

很好
[***.229.124.182]2024年04月11日 04时07分05秒