欢迎来到天天文库
浏览记录
ID:11043688
大小:200.50 KB
页数:21页
时间:2018-07-09
《touchpanel驱动介绍》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、目录1.驱动的位置及加载2.input子系统介绍3.Framework中对input系统数据的提取4TouchPanel驱动的实现过程1.驱动的位置及加载TP的驱动在linux平台上都是放在目录kerneldriversinputtouchscreen不同的硬件平台一般已经都集成了许多不同ic的驱动添加新的TP驱动可以通过配置该目录下的Kconfig,及Makefile,两个文件来讲驱动添加到kernel中来.以我们现在Demo板中的TP为例.在Kconfg中添加configTOUCHSCREEN_ELANbool"ELAN
2、Touchscreeninterfacesupport"dependsonI2C&&I2C_PXAdefaultyhelpSayYheretoenablesupportfortheELANtouchscreencontroller.对应的Makefile中obj-$(CONFIG_TOUCHSCREEN_ELAN)+=elan_touch.o这样elan_touch.o就会被编译连接进入vmlinux为了debug方便我们可以将驱动编译为KO文件,然后通过adbpush传入系统然后,Insmod来加载驱动,这样可以通过rmmod,i
3、nsmod反复加载删除驱动,提高调试效率.编译生成模块的makefile如下CROSS_COMPILE:=/home/feixun/android_marvell/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-ARCH_TYPE:=armobj-m:=tp.otp-objs:=sitronix_ts.oKERNELDIR:=/home/feixun/android_marvell/kernel/kernelCC:=$(CROSS_COMPILE)gccLD:=$(C
4、ROSS_COMPILE)ldPWD:=$(shellpwd)modules:$(MAKE)ARCH=$(ARCH_TYPE)-C$(KERNELDIR)M=$(PWD)modulesmodules_install:$(MAKE)ARCH=$(ARCH_TYPE)-C$(KERNELDIR)M=$(PWD)modules_installclean:rm-f$(PWD)/*.o$(PWD)/*.ko$(PWD)/*.symvers$(PWD)/*.mod.c$(PWD)/*.orderKERNELDIR:=/home/feixun/a
5、ndroid_marvell/kernel/kernel这个对应的是我们dkb代码对应的kernel,这个如果不一样编译出来的模块ismod会出错,编译模块之前还需要对kernel进行编译,makemodules,将内核模块编译完成./home/feixun/android_marvell/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-这个是我们的toolchain路径2.input子系统介绍我们结合elan_touch.c这个驱动讲解一下input子系统的工作el
6、an_ts_input_dev=input_allocate_device();if(elan_ts_input_dev==NULL){printk(KERN_ERR"%s:failedtoallocateinputdev",__FUNCTION__);return-ENOMEM;}elan_ts_input_dev->name="elan-ts";elan_ts_input_dev->phys="elan-ts/input0";elan_ts_input_dev->open=elan_touch_open;elan_ts_in
7、put_dev->close=elan_touch_close;__set_bit(EV_ABS,elan_ts_input_dev->evbit);__set_bit(ABS_X,elan_ts_input_dev->absbit);__set_bit(ABS_Y,elan_ts_input_dev->absbit);__set_bit(ABS_MT_POSITION_X,elan_ts_input_dev->absbit);__set_bit(ABS_MT_POSITION_Y,elan_ts_input_dev->absbit
8、);__set_bit(ABS_PRESSURE,elan_ts_input_dev->absbit);__set_bit(EV_SYN,elan_ts_input_dev->evbit);__set_bit(EV_KEY,elan_
此文档下载收益归作者所有