- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TouchPanel驱动介绍
目录 1.驱动的位置及加载 2 .input子系统介绍 3.Framework中对input系统数据的提取 4 TouchPanel驱动的实现过程 1.驱动的位置及加载 TP的驱动在linux平台上都是放在目录 \kernel\drivers\input\touchscreen 不同的硬件平台一般 已经都集成了许多不同ic的驱动 添加新的TP驱动可以通过配置该目录下的Kconfig,及Makefile,两个文件来讲驱动添加到kernel中来. 以我们现在Demo板中的TP为例. 在Kconfg中添加 config TOUCHSCREEN_ELAN bool ELAN Touchscreen interface support depends on I2C I2C_PXA default y help Say Y here to enable support for the ELAN touchscreen controller. 对应的Makefile中 obj-$(CONFIG_TOUCHSCREEN_ELAN) += elan_touch.o 这样elan_touch.o就会被编译连接进入vmlinux 为了debug方便我们可以将驱动编译为KO文件,然后通过adb push传入系统然后, Insmod来加载驱动,这样可以通过rmmod,insmod反复加载删除驱动,提高调试效率. 编译生成模块的makefile如下 CROSS_COMPILE := /home/feixun/android_marvell/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- ARCH_TYPE := arm obj-m := tp.o tp-objs:= sitronix_ts.o KERNELDIR := /home/feixun/android_marvell/kernel/kernel CC :=$(CROSS_COMPILE)gcc LD :=$(CROSS_COMPILE)ld PWD := $(shell pwd) modules: $(MAKE) ARCH=$(ARCH_TYPE) -C $(KERNELDIR) M=$(PWD) modules modules_install: $(MAKE) ARCH=$(ARCH_TYPE) -C $(KERNELDIR) M=$(PWD) modules_install clean: rm -f $(PWD)/*.o $(PWD)/*.ko $(PWD)/*.symvers $(PWD)/*.mod.c $(PWD)/*.order KERNELDIR := /home/feixun/android_marvell/kernel/kernel 这个对应的是我们dkb代码对应的kernel,这个如果不一样编译出来的模块ismod会出错, 编译模块之前还需要对kernel进行编译,make modules,将内核模块编译完成. /home/feixun/android_marvell/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- 这个是我们的toolchain路径 2 .input子系统介绍 我们结合elan_touch.c这个驱动讲解一下input子系统的工作 elan_ts_input_dev = input_allocate_device(); if (elan_ts_input_dev == NULL) { printk(KERN_ERR %s: failed to allocate input dev\n, __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_input_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);
文档评论(0)