码迷,mamicode.com
首页 > 系统相关 > 详细

Linux-hexdump命令调试event驱动—详解(13)

时间:2017-09-19 19:51:53      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:mic   long   按键事件   16px   支持   ges   bsp   cond   dump   

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

 

1.调试 键盘驱动 讲解

当我们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 /dev/event1 来调试时,如果按下按键就会打印上面input_event结构体里的数据

1.1以按开发板的按键 KEY_L,为例(因为大小端,所以数据是反着的,比如下面的数值):

# hexdump /dev/event1

/*按下时:*/
//hexdump序列号           秒             微妙         键盘事件    0x26变量      数值=1(按下)
 0000000             07c6 0000       faa2 000b     0001        0026        0001 0000
//hexdump序列号           秒         微妙             同步事件     0x00变量     数值=0 
 0000010            07c6 0000     faac 000b       0000        0000         0000 0000

/*松开时:*/
//hexdump序列号          秒             微妙         键盘事件   0x26变量       数值=0(松开)
 0000020             07c6 0000     cf67 000d        0001        0026       0000 0000
//hexdump序列号          秒             微妙         同步事件   0x00变量       数值=0 
 0000030             07c6 0000     cf70 000d        0000        0000       0000 0000

 

Linux-hexdump命令调试event驱动—详解(13)

标签:mic   long   按键事件   16px   支持   ges   bsp   cond   dump   

原文地址:http://www.cnblogs.com/lifexy/p/7553550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!