hexdump: 查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试驱动用

描述:

我们以event1为例,当我们insmod挂载了键盘驱动后,出现一个event1设备,

此时没有按键按下,所以event1里面的数据是没有的,那么数据又是从来哪里来?

通过键盘驱动的read函数,若有按键按下,就会上传按键数据给用户层hexdump

因为键盘驱动的input_handler 是:evdev_handler

所以键盘驱动的read函数是: evdev_handler->evdev_fops->evdev_read

进入evdev_read()函数,如下图所示:

evdev_event_to_user()这个函数从字面上来看,显然就是用来上传给用户层的函数,其中buffer是函数参数,指向用户层,

所以数据就是event.

我们来看看event的结构体:input_event

struct input_event {
struct timeval time; //事件发生的时间
__u16 type; // 哪类事件, 比如键盘事件
__u16 code;   // 对应的事件里支持的哪个变量,比如按键K
__s32 value;   // 对应的变量里的数值, 比如松开按键则是1,反之为0
};

把 time里的成员展开如下:

 struct input_event {
long tv_sec; /* seconds */ //秒
long tv_usec; /* microseconds */ //微妙 __u16 type; // 哪类事件, 比如键盘事件
__u16 code;   // 对应的事件里支持的哪个变量,比如按键K
__s32 value;   // 对应的变量里的数值, 比如松开按键则是1,反之为0
};

所以我们hexdump调试任何输入子系统event XX驱动时,有信息就会打印上面数据

 1.调试键盘驱动

(键盘驱动代码:http://www.cnblogs.com/lifexy/p/7553861.html)

以按开发板的按键 KEY_L,为例(因为数据是从低到高打印的,所以数据是反的):

# hexdump /dev/event1     //按键键盘驱动

/*按下时:*/
//hexdump序列号 秒 微妙 键盘事件 code=KEY_L value=1(按下)
  07c6 faa2 000b
//hexdump序列号 秒 微妙 同步事件 code value=0
  07c6 faac 000b /*松开时:*/
//hexdump序列号 秒 微妙 键盘事件 code=0x26 value=0(松开)
07c6 cf67 000d
//hexdump序列号 秒 微妙 同步事件 code value=0
07c6 cf70 000d

2.调试触摸屏驱动

(触摸屏驱动代码: )

 /dev/event0            //触摸屏驱动
# hexdump /dev/event0
//hexdump序列号 秒 微妙 绝对坐标事件 code=ABS_X X坐标值
6ef0 000c
//hexdump序列号 秒 微妙 绝对坐标事件 code=ABS_Y Y坐标值
6f08 000c 01ae
//hexdump序列号 秒 微妙 绝对坐标事件 code=压力 压力值
6f0c 000c
//hexdump序列号 秒 微妙 键盘事件 code=触摸按键 value=1(按下)
6f10 000c 014a
//hexdump序列号 秒 微妙 同步事件
6f13 000c //hexdump序列号 秒 微妙 绝对坐标事件 code=压力 压力值
00000b0 023b 872d 000c //hexdump序列号 秒 微妙 键盘事件 code=触摸按键 value=0(松开)
00000b0 1f5b 000d 014a
//hexdump序列号 秒 微妙 同步事件
00000c0 1f70 000d

也可以使用getevent 命令,用于获取 input 输入事件,比如获取按键上报信息、获取触摸屏上报信息等。

示例:

格式输出为event type、event code、event value

比如 EV_KEY 330  0    表示:   按键事件的BTN_TOUCH触摸按键(ox14a) 松开了(0)

EV_ABS     1  72   表示:    绝对坐标事件的ABS_Y(1)坐标位于72

这些定义都在input.h里,比如EV_ABS的code有:

Linux-hexdump命令调试event驱动—详解(13)的更多相关文章

  1. linux mount命令参数及用法详解

    linux mount命令参数及用法详解 非原创,主要来自 http://www.360doc.com/content/13/0608/14/12600778_291501907.shtml. htt ...

  2. linux dmesg命令参数及用法详解(linux显示开机信息命令)

    linux dmesg命令参数及用法详解(linux显示开机信息命令) http://blog.csdn.net/zhongyhc/article/details/8909905 功能说明:显示开机信 ...

  3. 【转】linux expr命令参数及用法详解

    在抓包过程中,查看某个设定时间内,数据上下行多少,用命令expr 计算! --------------------------------------------------------------- ...

  4. linux sed命令参数及用法详解

    linux sed命令参数及用法详解 http://blog.csdn.net/namecyf/article/details/7336308 1. Sed简介 sed 是一种在线编辑器,它一次处理一 ...

  5. linux dd命令参数及用法详解---用指定大小的块拷贝一个文件(也可整盘备份)

    linux dd命令参数及用法详解---用指定大小的块拷贝一个文件 日期:2010-06-14 点击:3830 来源: 未知 分享至:            linux dd命令使用详解 dd 的主要 ...

  6. (转)linux expr命令参数及用法详解

    linux expr命令参数及用法详解 原文:http://blog.csdn.net/tianmohust/article/details/7628694 expr用法 expr命令一般用于整数值, ...

  7. (转)linux traceroute命令参数及用法详解--linux跟踪路由命令

    linux traceroute命令参数及用法详解--linux跟踪路由命令 原文:http://blog.csdn.net/liyuan_669/article/details/25362505 通 ...

  8. Linux fdisk命令参数及用法详解---Linux磁盘分区管理命令fdisk

    fdisk 命令 linux磁盘分区管理 用途:观察硬盘之实体使用情形与分割硬盘用. 使用方法: 一.在 console 上输入 fdisk -l /dev/sda ,观察硬盘之实体使用情形. 二.在 ...

  9. Linux set命令参数及用法详解

    linux  set 命令 功能说明:设置shell. 语 法:set [+-abCdefhHklmnpPtuvx] 补充说明:用set 命令可以设置各种shell选项或者列 出shell变量.单个选 ...

随机推荐

  1. phpStudy下安装memcache扩展

    简要:参考<phpStydy配置memcache扩展>,期间安装不到memcache;为此向大家分享我遇到的问题和解决办法,希望能够跟各位PHP大神学习探索,如果有不对或者好的建议告知下: ...

  2. 几个简单的例子让你读懂什么是JAVA的堆栈跟踪

      简单的来说,堆栈跟踪就是我们的程序在抛出异常时使用的方法调用列表. 简单的例子 通过问题中给出的示例,我们可以准确地确定应用程序中抛出异常的位置. 我们来看看堆栈跟踪: Exception in ...

  3. 7.20.01 java格式化输出 printf 例子

    java格式化输出 printf 例子 importjava.util.Date; publicclassPrintf { publicstaticvoidmain(String[] args) { ...

  4. Python3 TA-Lib

    This is a Python wrapper for TA-LIB based on Cython instead of SWIG. From the homepage: TA-Lib is wi ...

  5. Jmeter常用功能详解

    嘻嘻,忙碌的一周,马上就到周四了~明天就是周五了,可以去嗨了! 这几天正式成立了一个微信订阅号,旨在免费帮助需要入门软件测试的小白! 各位走过路过的亲,欢迎订阅哦:扫描二维码即可订阅

  6. JavaScript基本语法2

    javaScript中要显示> .<必须使用&gt .&lt,如果是不显示但是要作为条件可以直接使用>.<. 接下来是JavaScirpt函数: 要使用func ...

  7. 利用JavaScript来切换样式表

    切换样式表 html页 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...

  8. 为什么Java字符串是不可变对象?

    转自 http://developer.51cto.com/art/201503/468905.htm 本文主要来介绍一下Java中的不可变对象,以及Java中String类的不可变性,那么为什么Ja ...

  9. PHP文件操作整理

    三种目录表示: ./     代表当前目录 ../    代表父级目录 /   代表根目录 常用的文件操作函数有 通用读写:                  fpen()  fwrite() fre ...

  10. github+hexo搭建自己的博客网站(五)进阶配置(畅言实现博客的评论)

    如何对如何搭建hexo+github可以查看我第一篇入门文章:http://www.cnblogs.com/chengxs/p/7402174.html 详细的可以查看hexo博客的演示:https: ...