LINUX设备驱动之触摸屏驱动

这篇博客探讨了Linux内核中触摸屏驱动的工作原理,重点介绍了输入子系统、中断处理、ADC转换以及硬件交互过程。通过设置事件类型、初始化函数、中断处理和定时器函数,解释了如何在Linux内核中添加并管理触摸屏设备。
摘要由CSDN通过智能技术生成

关键字:触摸屏
   总线:Input.c
   左边:Input_dev  右边:Evdv.c
其实触摸屏使用的是输入子系统,只要把输入子系统的框架弄熟悉,大致的程序应该可以出来;

在linux内核中添加一个input设备变得很简单了。我们再也不必须去动手写那些该死的接口函数了。可是你有没有想过,是谁让我们的工作变得这么简单了呢?

答案是linux内核中的input core。她总是那么痴情,默默地不求回报地为你做许许多多的事情,在你背后默默的支持你爱着你。是的,你所想到的大多数事情,我们的input core都已经为你做好。除了感动,我们还能说什么呢?

触摸屏使用过程:

  1. 按下,产生中断 ;
  2. 在中断处理程序里,启动ADC,转换X,Y坐标;
  3. ADC结束,产生ADC中断;
  4. 在ADC中断处理函数里,上报(Input_event),启动定时器;
  5. 定时器时间到,再次启动ADC,这样可以处理长按、滑动事件
  6. 松开

测试过程:
1. make menuconfig 去掉原来的触摸屏驱动程序

-> Device Drivers  
  -> Input device support  
   -> Generic input layer  
    -> Touchscreens  
    <>   S3C2410/S3C2440 touchscreens   

测试:
1. ls /dev/event*
2. insmod s3c_ts.ko
3. ls /dev/event*
4. hexdump /dev/event0

                秒       微秒   type code    value
    0000000 29a4 0000 8625 0008 0003 0000 0172 0000
    0000010 29a4 0000 8631 0008 0003 0001 027c 0000
    0000020 29a4 0000 8634 0008 0003 0018 0001 0000
    0000030 29a4 0000 8638 0008 0001 014a 0001 0000
    0000040 29a4 0000 863c 0008 0000 0000 0000 0000
    0000050 29a4 0000 c85e 0008 0003 0000 0171 0000
    0000060 29a4 0000 c874 0008 0003 0001 027d 0000
    0000070 29a4 0000 c87b 0008 0000 0000 0000 0000
    0000080 29a4 0000 ed37 0008 0003 0018 0000 0000
    0000090 29a4 0000 ed48 0008 0001 014a 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值