Linux-hexdump命令调试event驱动—详解(13)
2017-09-19 19:15
671 查看
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
把 time里的成员展开如下:
所以我们hexdump调试任何输入子系统event XX驱动时,有信息就会打印上面数据
1.调试键盘驱动
(键盘驱动代码:http://www.cnblogs.com/lifexy/p/7553861.html)
以按开发板的按键 KEY_L,为例(因为数据是从低到高打印的,所以数据是反的):
2.调试触摸屏驱动
(触摸屏驱动代码: )
描述:
我们以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(按下) 0000000 07c6 0000 faa2 000b 0001 0026 0001 0000 //hexdump序列号 秒 微妙 同步事件 code value=0 0000010 07c6 0000 faac 000b 0000 0000 0000 0000 /*松开时:*/ //hexdump序列号 秒 微妙 键盘事件 code=0x26 value=0(松开) 0000020 07c6 0000 cf67 000d 0001 0026 0000 0000 //hexdump序列号 秒 微妙 同步事件 code value=0 0000030 07c6 0000 cf70 000d 0000 0000 0000 0000
2.调试触摸屏驱动
(触摸屏驱动代码: )
/dev/event0 //触摸屏驱动 # hexdump /dev/event0 //hexdump序列号 秒 微妙 绝对坐标事件 code=ABS_X X坐标值 0000000 0412 0000 6ef0 000c 0003 0000 0239 0000 //hexdump序列号 秒 微妙 绝对坐标事件 code=ABS_Y Y坐标值 0000010 0412 0000 6f08 000c 0003 0001 01ae 0000 //hexdump序列号 秒 微妙 绝对坐标事件 code=压力 压力值 0000020 0412 0000 6f0c 000c 0003 0018 0001 0000 //hexdump序列号 秒 微妙 键盘事件 code=触摸按键 value=1(按下) 0000030 0412 0000 6f10 000c 0001 014a 0001 0000 //hexdump序列号 秒 微妙 同步事件 0000040 0412 0000 6f13 000c 0000 0000 0000 0000 //hexdump序列号 秒 微妙 绝对坐标事件 code=压力 压力值 00000b0 023b 0000 872d 000c 0003 0018 0000 0000 //hexdump序列号 秒 微妙 键盘事件 code=触摸按键 value=0(松开) 00000b0 0412 0000 1f5b 000d 0001 014a 0000 0000 //hexdump序列号 秒 微妙 同步事件 00000c0 0412 0000 1f70 000d 0000 0000 0000 0000
相关文章推荐
- hexdump命令_Linux hexdump 命令用法详解:显示文件十六进制格式
- [android] 调试linux input子系统驱动的用户空间命令 getevent/sendevent
- Linux-hexdump命令详解
- 我使用过的Linux命令之hexdump - ”十六“进制查看器
- 我使用过的Linux命令之hexdump - ”十六“进制查看器
- LINUX core dump详解 & GDB调试
- linux命令之hexdump
- linux dump 命令详解
- Linux命令之hexdump - 十六进制查看器
- restore命令_Linux restore 命令用法详解:所进行的操作和dump指令相反
- Linux下GDB调试工具使用命令详解
- linux dump 命令详解
- dump命令_Linux dump 命令用法详解:用于备份ext2或者ext3文件系统
- Linux命令学习总结:hexdump
- Linux命令学习总结:hexdump
- linux下hexdump和od命令:显示文件十六进制格式
- Linux dump命令详解
- Linux命令之hexdump
- 【linux】16进制格式查看命令hexdump
- 我使用过的Linux命令之hexdump - ”十六“进制查看器