日期:2014-05-16  浏览次数:20563 次

linux 2.6.36 与 2.6.38.8的内核 的 input 子系统有什么本质的驱别吗?
这几天我想把移植2.6.38.8的内核移植到我的OK6410开发板上,当移植触屏驱动时,便卡住啦!


  移植好的触屏驱动在飞凌官方给的QT程序下根本没有反应,但是可以从串口中看到驱动输出的X,Y 坐标值
   
  后来搞了很久,实在找不出原因,于是便想在2.6.36.4上做一下试验,结果同样的触屏驱动在2.6.36.4上就完全没有问题
   
  这是怎么回事?

  后来我用 cat /proc/bus/input/devices 分别对我移植的两个内核测了一下,结果如下

  ********************** 2.6.36.4 ***************************
  I: Bus=0019 Vendor=0001 Product=0001 Version=0100
  N: Name="gpio-keys"
  P: Phys=gpio-keys/input0
S: Sysfs=/class/input/input0
  U: Uniq=
  H: Handlers=kbd event0 
  B: EV=3
  B: KEY=1680 0 0 10000002

  I: Bus=0019 Vendor=dead Product=beef Version=0102
  N: Name="S3C24XX TouchScreen"
  P: Phys=ts0
S: Sysfs=/class/input/input1
  U: Uniq=
  H: Handlers=mouse0 event1 
  B: EV=b
  B: KEY=400 0 0 0 0 0 0 0 0 0 0
  B: ABS=1000003

  ********************** 2.6.38.8 ***************************
  I: Bus=0019 Vendor=0001 Product=0001 Version=0100
  N: Name="gpio-keys"
  P: Phys=gpio-keys/input0
S: Sysfs=/devices/platform/gpio-keys/input/input0
  U: Uniq=
  H: Handlers=kbd event0 
  B: EV=3
  B: KEY=1680 0 0 10000002

  I: Bus=0019 Vendor=dead Product=beef Version=0102
  N: Name="S3C24XX TouchScreen"
  P: Phys=ts0
S: Sysfs=/devices/virtual/input/input1
  U: Uniq=
  H: Handlers=mouse0 event1 
  B: EV=b
  B: KEY=400 0 0 0 0 0 0 0 0 0 0
  B: ABS=1000003
  
  不同的地方就在上面的红色标记处,不知是不是这个原因呢,如果是的话,要在哪里修改呢?
  请各位大侠帮帮忙啦,很头痛啊!

------解决方案--------------------
该你的qt环境变量脚本 里面有指定输入设备的环境变量
------解决方案--------------------
命令行下
hexdump /dev/input/xxx
然后点击触屏,如果能够读取到东西,证明驱动没有问题
------解决方案--------------------
2.6.36-2.6.39不建议使用,反正掌握一个规律,bug修订号小的最好别用,没有特别的需求的话,2.6.27,2.6.32、2.6.33、2.6.35这几个是首选,尤其是2.6.32,大部分新特性都有,还特别稳定,是目前最新的服务器linux都在使用的内核版本(空前统一,没有例外,RHEL\Debian\SUSE)
------解决方案--------------------
根本原因:INPUT VERSION升级导致的问题。
#define EV_VERSION 0x010001
把这个改回
#define EV_VERSION 0x010000
就可以工作了

祝你好运!