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. JackSon将java对象转换为JSON字符串

    JackSon可以将java对象转换为JSON字符串,步骤如下: 1.导入JackSon 的jar包 2.创建ObjectMapper对象 3.使用ObjectMapper对象的writeValueA ...

  2. Struts2传参碰到的奇怪问题

    在使用Struts2框架,前端页面提交参数为日期时,Action中获取类型直接是Date 出现的问题是,局域网中无法访问,外网可正常访问. 把Action中Date类型换成String类型都可正常访问 ...

  3. Sublime Text 2安装图解

    Sublime Text 2安装图解.. ---------------- ---------------- ---------------- ---------------- ----------- ...

  4. 《HelloGitHub》第 17 期

    公告 本月 hellogitub.com 动态 服务器迁移到了国内,国内浏览速度有了质的飞跃. 代码重构 项目 运行更加简单,直接 clone.执行安装依赖命令.运行 上线了"我的收藏&qu ...

  5. form enctype参数

    application/x-www-form-urlencoded 表示在发送前编码所有字符(默认) multipart/form-data 不对字符编码.在使用包含文件上传控件的表单时,必须使用该值 ...

  6. Andrew Ng机器学习课程笔记--week2(多元线性回归&正规公式)

    1. 内容概要 Multivariate Linear Regression(多元线性回归) 多元特征 多元变量的梯度下降 特征缩放 Computing Parameters Analytically ...

  7. 中篇: php 微信支付 基于Thinkphp3.2开发

    ⑤ 微信支付接口的使用 a.微信公众平台文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 b.微信支付开 ...

  8. c++中find函数的用法

    find函数主要实现的是在容器内查找指定的元素,并且这个元素必须是基本数据类型的.查找成功返回一个指向指定元素的迭代器,即元素在容器中的下标,查找失败返回end迭代器. 头文件 #include &l ...

  9. css预处理器之一---sass(一)

    慕课学习笔记: CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行编码工作. 通俗 ...

  10. 在JS事件封装时,addEventListener()方法的this问题

    最近在写js的类库,模仿的是jquery的编程风格,当封装到事件监听的时候发现遇到了一个问题,代码是这样的: 上面是封装的一个事件委托的代码,我以为上面的封装跟普通的事件监听一样简单,结果我在调用时发 ...