09_Input_event驱动1.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
09_Input_event驱动1.ppt

Input event驱动 Andrew Huang bluedrum@163.com Input event 事件驱动 Linux 专门对输入设备。 键盘,鼠标,手柄,触摸屏。按键。封装一个类驱动。 主要统一与应用程序接口。这一类的设备结点都是在/dev/input/eventn( 0=n) 用户程序读驱动的输入都采用统一格式,即struct input_event,方便应用程序来读写。 Linux/input.h. Input驱动查看 查看设备结点 ls -l /dev/input 查看设备信息 ls -l /proc/bus/input/ cat /proc/bus/input/devices 查看input class信息 ls /sys/class/input Input device优点 统一应用程序使用外部输入设备的接口。这样简化编程。 Input core是没有缓存队列的,如果应用程序没有及时取事件,则事件被丢弃。 Input 输入驱动编程 输入驱动数据结构 struct input_dev *input_dev; 在驱动中必须动态分配input_dev结构,这里使用 input_allocate_device(); 初始化input_dev的参数 调用 input_register_device()注册, 退出时调用 input_unregister_device() 与应用程序的交互 Input 驱动的子系统已经控制I/O,换句话read/write不需要驱动直接. 驱动只需要input_report_xxx()上传信息 input_report_key()上传按键 input_report_abs() 绝对坐标 它们最终调用input_event来向input core上传信息,并最后转交给应用程序. Input core没有缓存事件信息,这样在应用程序开始read前的信息全部被丢弃. Input_dev的初始化 evbit 表示这个驱动支持哪一些事件,有两种等效的方法 set_bit(EV_KEY, input_dev-evbit); set_bit(EV_REL, input_dev-evbit); input_dev-evbit = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL); 初始化/proc/bus/input/devices的信息 输入系统的测试 USB键盘测试 USB键盘是在 hid/usbhid/usbkbd.c Autoconf类项目移植 Andrew Huang bluedrum@163.com Makefile 这一类开源项目是没有Makefile,一般只带configure.由configure检测编译环境来生成Makefile. 如果x86,一般用./configure 即可生成X86 Makefile. 如果ARM,需要加入 --host=arm-linux,让configure生成针对ARM-Linux的Makefile 需要configure支持--host参数,可以用./configure --help 来检查是否支持 关于安装 Autoconf的Makfile 的安装都执行make install。 Make install.默认安装/usr/local下 头文件是安装/usr/local/include 库是安装/usr/local/lib 执行程序安装/usr/local/bin 文档安装在/usr/local/man ARM-Linux的项目要指向一个自己目录,防止冲掉X86同名文件。 用--prefix 这个参数来指定的。 ARM-Linux移植 ./configure --host=arm-linux --prefix=$PWD/../../ouput/arm-linux 多个项目组织 建立一个基准项目 rootfs/linux 所有第三方的源码放解压在lib 调用库的程序放在app 最终输出目录是 output/arm-linux * struct input_event { struct timeval time; __u16 type; __u16 code; __s32 value; }; Input core Input driver 用户程序 Input filer write/read Input_event EV_LED/EV_SND #define DEVICE_NAME s3c6410 gpio button myinput_dev-name = DEVICE_NAME; myinput_dev-phys = gpio-button/input100; myinput_dev-id

您可能关注的文档

文档评论(0)

wgvi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档