矩阵键盘驱动开发实验研究.docxVIP

  • 8
  • 0
  • 约1.04万字
  • 约 11页
  • 2017-07-02 发布于湖北
  • 举报
实验报告书实验名称:矩阵键盘驱动开发实验专业班级:学号:姓名:联系电话:指导老师:实验时间: 2014年11月13日计算机学院计算机科学与技术一、实验目的1、掌握4×4 键盘驱动的写法;2、深入了解linux 驱动架构。二、实验设备1、装有Linux 系统或装有Linux 虚拟机的PC 机一台;2、凌阳ARM9 嵌入式实验箱SP-32AM11A 一台;3、S3C2410 CPU 核心板一块;4、本实验用到实验箱的模块有:S3C2410 CPU 板模块、4×4 键盘模块。三、实验要求1、实现功能:编写4×4 键盘驱动,并将键值通过控制台打印出来;2、实验现象:每个键值通过控制台打印出来。四、实验原理1、硬件原理本实验箱采用GPF0~7 连接4×4 键盘,其中GPF0~3 与K1~K4 连接,GPF4~7 与KA~KD连接,分别用于控制4×4 键盘的纵列和横列。硬件连接如图6.2所示。4×4 键盘一般采用行列扫描方法获取键值,为了进一步提高驱动程序的效率,这里结合外部中断获取键值。GPF 组IO 端口都有外部中断功能,设置GPF0~3 为上升沿触发外部中断,设置GPF4~7输出高电平,这样当有任何一个按键按下的时候,按键所在列对应的GPIO 端口就会触发外部中断,由外部中断服务程序判断具体是哪个按键被按下。2、外部中断S3C2410 处理器集成了外部中断功能,所谓外部中断是指处理器中具有触发中断功能GPIO,当GPIO 出现电平变动时会触发中断。触发中断的方式有多种,比如高电平触发低电平触发、上升沿触发,下降沿触发等。S3C2410 处理器中具有外部中断功能的GPIO 每一位都可以单独设定中断触发方式,以满足不同的需要。在4×4 键盘驱动中,使用上升沿沿触发中断的方式,当按键按下时外部中断被触发获得一次键值。在linux 系统中对外部中断提供了比较好的支持,可以通过以下的函数设置外部中断。【函数原型】int request_irq(unsigned int irq, void (*handler)(int, void *, struct pt_regs *),unsigned long irq_flags,const char * devname,void *dev_id)【功能】申请中断【参数】irq:要申请的硬件中断号handler:向系统登记的中断处理函数,当中断发生时,系统调用这个函数irqflags:中断处理的属性,若设置了SA_INTERRUPT,则表示中断处理函数是快速处理函数;若设置为SA_SHIRQ 则表示多个设备共享中断devname:设备标识字符串dev_id在中断共享时用到,用于标识不同的中断响应。【返回值】成功返回0,失败返回错误码【函数原型】int set_external_irq(int irq, int edge, int pullup)【功能】设置外部中断的中断触发方式【参数】irq:外部中断号edge:设置外部中断触发类型pullup:设置GPIO 上拉或下拉【返回值】成功返回0,失败返回错误码【函数原型】int disable_irq(int irq)【功能】禁止外部中断【参数】irq:外部中断号【返回值】成功返回0,失败返回错误码【函数原型】int enable_irq(int irq)【功能】使能外部中断【参数】irq:外部中断号【返回值】成功返回0,失败返回错误码【函数原型】void free_irq(unsigned int irq, void *dev_id)【功能】释放外部中断【参数】irq:外部中断号dev_id: 在中断共享时会用到,用于标识不同的中断,这个参数要和request_irq函数中的参数dev_id 相同【返回值】成功返回0,失败返回错误码3、4×4 键盘驱动架构4×4 键盘驱动通过全局数据缓冲队列实现在中断服务程序和读取函数之间数据传递,键值数据转移流程如图6.3所示。五、实验步骤1、实验指导书附带的源码中已经提供了键盘的驱动,驱动程序源码的路径为:\drivers\gpf4×4Keyboard,里面包含了键盘驱动程序和测试程序,可以使用下面的命令编译该驱动程序。其中,-I 参数后面的斜体部分需要换成实际的Linux 源码路径。arm-linux-gcc –c –I/root/kernel/include –D__KERNEL__ s3c2410-gpf-keyboard.c–o s3c2410-gpf-keyboard.o // 编译驱动arm-linux-gcc test.c -o test // 编译应用程序2、执行上面的命令后,将生成的s3c2410-gpf-keyboard.o、test 复制到目标板上,增加执行权限,然后使用下面的命令将驱动程序插入

文档评论(0)

1亿VIP精品文档

相关文档