GT911触摸移植

百度网站



一、添加gt911库文件

在 drivers/input/touchscreen 路径下添加gt911.c文件

在这里插入图片描述

修改Makefile 添加gt911.c的文件编译 drivers/input/touchscreen/Makefile 添加obj-y += gt911.o

在这里插入图片描述

二、添加设备树文件

修改文件路径 :arch/arm/boot/dts/suniv-f1c100s.dtsi

添加I2C属性定义 到soc节点下

i2c0: i2c@1C27000 {
	compatible = "allwinner,sun6i-a31-i2c";
	reg = <0x01C27000 0x400>;
	interrupts = <7>;
	clocks = <&ccu CLK_BUS_I2C0>;
	resets = <&ccu RST_BUS_I2C0>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins>;
	status = "disabled";
	#address-cells = <1>;
	#size-cells = <0>;
};

在这里插入图片描述

添加I2C引脚定义 到pio节点下

i2c0_pins: i2c0 {
	pins = "PD0", "PD12";
	function = "i2c0";
};

在这里插入图片描述

修改LCD的引脚定义,因为有两个脚被I2C占用了

lcd_rgb666_pins: lcd-rgb666-pins {
	pins = "PD1", "PD2", "PD3", "PD4",
	       "PD5", "PD6", "PD7", "PD8", "PD9",
	       "PD10", "PD11", "PD13", "PD14",
	       "PD15", "PD16", "PD17", "PD18", "PD19",
	       "PD20", "PD21";
	function = "lcd";
};

在这里插入图片描述

修改文件路径 :arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dts

添加头文件

#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>

添加gt911设备树配置

&i2c0 {
    pinctrl-0 = <&i2c0_pins>;
    pinctrl-names = "default";
    status = "okay";

	/*  触摸 */
	gt911:gt911@5d {

		compatible = "goodix,gt911","goodix,gt9xx";
		reg = <0x5d>;

		pinctrl-names = "default";

		interrupt-parent = <&pio>;
		interrupts = <4 12 IRQ_TYPE_EDGE_FALLING>; 

		irq-gpio = <&pio 4 12 GPIO_ACTIVE_HIGH>; 
		rst-gpio = <&pio 0 0 GPIO_ACTIVE_HIGH>; 
		status = "okay";

	};
};

编译烧录

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j12

编译文件放到SD卡的boot分区之后开机,可看到驱动已经挂上。

在这里插入图片描述

ls /dev/input/

在这里插入图片描述

cat proc/interrupts

在这里插入图片描述

三、添加ts-lib触摸测试软件

触摸驱动移植成功后需要判断是否可用,可以用ts-lib 这个软件直观的测试触摸驱动

buildroot配置安装ts-lib软件

make menuconfig

打开ts-lib功能 位置:Target packages > Libraries > Hardware handling > tslib

在这里插入图片描述
编译软件

make -j12

在这里插入图片描述
编译完成 烧录根目录文件系统后启动开发板,在 /usr/bin 路径下会发现多了很多可执行文件

在这里插入图片描述
接下来要设置tslib的配置文件

打开 /etc/ts.conf 文件 查看是否有 module_raw input 如果被注解解开注解 如果没有自己添加一句

在这里插入图片描述
打开/etc/profile 文件,在里面加入如下内容:

export TSLIB_TSDEVICE=/dev/input/event0		#触摸驱动文件路径
export TSLIB_CALIBFILE=/etc/pointercal		
export TSLIB_CONFFILE=/etc/ts.conf			#触摸配置文件路径
export TSLIB_PLUGINDIR=/usr/lib/ts			#触摸库文件路径   input.so 文件的所在路径
export TSLIB_CONSOLEDEVICE=none	
export TSLIB_FBDEVICE=/dev/fb0 				#软件显示在那个fb上

具体配置方法可参考tslib移植小问题这篇博客

保存后重启开发板,输入ts_test启动测试软件,可以直观的测试触摸情况了。

在这里插入图片描述

参考

https://blog.csdn.net/Ternence_zq/article/details/109778136
链接

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐