Linux-hexdump命令调试event驱动—详解(13)
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)的更多相关文章
- linux mount命令参数及用法详解
linux mount命令参数及用法详解 非原创,主要来自 http://www.360doc.com/content/13/0608/14/12600778_291501907.shtml. htt ...
- linux dmesg命令参数及用法详解(linux显示开机信息命令)
linux dmesg命令参数及用法详解(linux显示开机信息命令) http://blog.csdn.net/zhongyhc/article/details/8909905 功能说明:显示开机信 ...
- 【转】linux expr命令参数及用法详解
在抓包过程中,查看某个设定时间内,数据上下行多少,用命令expr 计算! --------------------------------------------------------------- ...
- linux sed命令参数及用法详解
linux sed命令参数及用法详解 http://blog.csdn.net/namecyf/article/details/7336308 1. Sed简介 sed 是一种在线编辑器,它一次处理一 ...
- linux dd命令参数及用法详解---用指定大小的块拷贝一个文件(也可整盘备份)
linux dd命令参数及用法详解---用指定大小的块拷贝一个文件 日期:2010-06-14 点击:3830 来源: 未知 分享至: linux dd命令使用详解 dd 的主要 ...
- (转)linux expr命令参数及用法详解
linux expr命令参数及用法详解 原文:http://blog.csdn.net/tianmohust/article/details/7628694 expr用法 expr命令一般用于整数值, ...
- (转)linux traceroute命令参数及用法详解--linux跟踪路由命令
linux traceroute命令参数及用法详解--linux跟踪路由命令 原文:http://blog.csdn.net/liyuan_669/article/details/25362505 通 ...
- Linux fdisk命令参数及用法详解---Linux磁盘分区管理命令fdisk
fdisk 命令 linux磁盘分区管理 用途:观察硬盘之实体使用情形与分割硬盘用. 使用方法: 一.在 console 上输入 fdisk -l /dev/sda ,观察硬盘之实体使用情形. 二.在 ...
- Linux set命令参数及用法详解
linux set 命令 功能说明:设置shell. 语 法:set [+-abCdefhHklmnpPtuvx] 补充说明:用set 命令可以设置各种shell选项或者列 出shell变量.单个选 ...
随机推荐
- Windows MDI(Multiple-Document Interface)
Windows多文档窗口编程中,需要注意的以下几点: 1.主窗口与文档窗口之间还有一个Client Window. 2.创建文档窗口.通常认为创建子窗口就用CreateWindow,但是MDI中创建文 ...
- config OSX firewall programmatically
osx firewall configuration file is : /Library/Preferences/com.apple.alf.plist the default plist and ...
- .net到Java那些事儿--structs做了那些事(二)
一.跟着项目先来看下structs怎么执行的 首先看下web.xml配置文件,下面有如下代码 <filter> <filter-name>struts2</fi ...
- 线性代数-矩阵-【3】矩阵加减 C和C++实现
点击这里可以跳转至 [1]矩阵汇总:http://www.cnblogs.com/HongYi-Liang/p/7287369.html [2]矩阵生成:http://www.cnblogs.com/ ...
- jQuery圣诞雪花
<script type="text/javascript"> $(function(){ var d="<div class='y_snow'> ...
- JSP慕课网之Session
会话保存在服务器的内存里. sessionId可以通过进入http://localhost:8888/进入Tomcat的Manager App进行查看,点击项目的sessions可以看到session ...
- 拨开字符编码的迷雾--MySQL数据库字符编码
拨开字符编码迷雾系列文章链接: 拨开字符编码的迷雾--字符编码概述 拨开字符编码的迷雾--编译器如何处理文件编码 拨开字符编码的迷雾--字符编码转换 拨开字符编码的迷雾--MySQL数据库字符编码 1 ...
- postman 第2节 数据同步和创建测试集(转)
启动postman 后在右上角可以登录账号,登录后就可以同步自己的api测试脚本,连上网在办公区在家都可以同步. 创建测试集 1.点击collections,点击add folder 2.create ...
- JavaScript--我发现,原来你是这样的JS(基础概念--躯壳,不妨从中文角度看js)
介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第二篇(基础概念--躯壳篇),有着部分第三章的知识内容,当然其中还有我个人的理解.红宝书这本书可以说是难啃的,要看完不容易,挺厚的, ...
- 【小白成长撸】--Fibonacci
/*程序的版权和版本声明部分: *Copyright(c) 2016,电子科技大学本科生 *All rights reserved. *文件名:Fibonacci *程序作用:计算菲薄拉稀数列 *作者 ...