当前位置:文档之家› 按键驱动设计实验

按键驱动设计实验


版权所有 © 2007
广州致远电子有限公司
MagicARM270教学实验开发平台

按键驱动设计实验
实验原理
设备注册和注销:
◇输入设备的注册和注销分别通过input_register_device()和 input_unregister_device()函数实现。
2014-8-27
第6页
版权所有 © 2007
广州致远电子有限公司
MagicARM270教学实验开发平台

按键驱动设计实验
实验原理
2014-8-27
第7页
版权所有 © 2007
广州致远电子有限公司
MagicARM270教学实验开发平台

MagicARM270教学实验开发平台

按键驱动设计实验
实验目的
掌握Linux中input子系统驱动体系
掌握在Linux下按键驱动编写
掌握Linux驱动编写的中断处理机制
2014-8-27
第1页
版权所有 © 2007
广州致远电子有限公司
2014-8-27 第13页 版权所有 © 2007 广州致远电子有限公司
广州致远电子有限公司
MagicARM270教学实验开发平台

按键驱动设计实验
实验步骤
(1)新建并进入/pxa270/nfs/driver/buttondrv目录, 并在其中建立buttondrv.c文件,编写驱动程序。 $ mkdir /pxa270/nfs/driver/buttondrv $ cd /pxa270/nfs/driver/buttondrv $ vi buttondrv.c
[root@MagicARM270 button]# hexdump /dev/event2 0000000 37d0 0000 d181 0004 0001 001c 0001 0000 0000010 37d0 0000 d1cc 0004 0000 0000 0000 0000 0000020 37d0 0000 8269 0008 0001 001c 0002 0000 0000030 37d0 0000 82b7 0008 0000 0000 0000 0000 驱动中将button键值设置为KEY_ENTER(0x1C),从信息中可 以看到键值。
2014-8-27
第5页
版权所有 © 2007
广州致远电子有限公司
MagicARM270教学实验开发平台

按键驱动设计实验
实验原理
Linux input子系统专门对系统输入设备的输入事件 进行管理和处理,并将处理交给用户程序使用。 Linux input子系统大致分为设备驱动(Drivers)、 input子系统核心(Input Core)和事件处理 (Handlers)3层,整体架构图 :
函数原型如下(详见<include/linux/input.h>文件):
◇int input_register_device(struct input_dev *); ◇void input_unregister_device(struct input_dev *);
2014-8-27
第9页
版权所有 © 2007
了解设备驱动的Makefile文件编写
2014-8-27
第4页
版权所有 © 2007
广州致远电子有限公司
MagicARM270教学实验开发平台

按键驱动设计实验
实验原理
MagicARM270的按键KEY1连接PXA270的GP0。GP0 可以被配置为中断输入。由于在GP0接了上拉电阻, 没有按键的时候处于高电平状态,一旦按键按下, GP0变为低电平。
2014-8-27 第12页 版权所有 © 2007 广州致远电子有限公司
MagicARM270教学实验开发平台

按键驱动设计实验
实验步骤
(5)输入设备的测试,可使用more、cat或者 hexdump命令进行测试。如下是使用hexdump得到的 结果。
广州致远电子有限公司
MagicARM270教学实验开发平台

按键驱动设计实验
实验预习要求
预习和熟悉按键电路
预习Linux字符驱动编写
阅读<Documentation/input>目录下的说明文件,了 解Linux input体系
阅读<drivers/input>目录下的文件,了解input驱动 的具体实现
按键驱动设计实验
实验原理
struct input_dev数据结构
input_dev是输入子系统中一个非常重要的数据结构, 该数据结构描述输入设备,在编写驱动程序的时候, 需要对该数据结构的成员进行设置和填充。(详见 <include/linux/input.h>文件)。
2014-8-27
第8页
2014-8-27
第10页
版权所有 © 2007
广州致远电子有限公司
MagicARM270教学实验开发平台

按键驱动设计实验
实验步骤
(2)编写Makefile文件并编译,得到buttondrv.ko文件。 $ vi Makefile $ make (3)启动MagicARM270,进行NFS连接,进入 buttondrv目录。 [root@MagicARM270 ~]# mount –t nfs 192.168.0.94:/pxa270/nfs /mnt –o nolock [root@MagicARM270 ~]# cd /mnt/driver/buttondrv
2014-8-27
第11页
版权所有 © 2007
广州致远电子有限公司
MagicARM270教学实验开发平台

按键驱动设计实验
实验步骤
(4)加载buttondrv驱动。可以看到按键作为输入设 备被加载。其输出信息的input%d和系统所拥有的输 入设备及其发现顺序有关,可能和示例有区别。加 载完毕,将会在/dev目录下生成event%d节点。 [root@MagicARM270 button]# insmod buttondrv.ko Using buttondrv.ko input: MagicARM270 button as /class/input/input3 input: MagicARM270 button Registered
2014-8-27
第2页
版权所有 © 2007
广州致远电子有限公司
MagicARM270教学实验开发平台


按键驱动设计实验
实验内容
熟悉Linux下input子体系,并完成基于input子体系的 按键驱动编写。
2014-8-27
第3页
版权所有 © 2007
MagicARM270教学实验开发平台

按键驱动设计实验
实验设备
硬件
◇PC机(带网卡)
◇MagicARM270教学实验开发平台
1台
1套
软件
◇RedHat Linux 9.0操作系统(完全安装)
◇arm-linux-gcc-3.4.3交叉编译器 ◇Linux-2.6.18源代码
相关主题