新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式Linux中基于Qt/Embedded的键盘接口设计

嵌入式Linux中基于Qt/Embedded的键盘接口设计

作者:时间:2011-01-13来源:网络收藏

摘要:采用S3C2440处理器和Linux操作系统,选择目前比较常用的Qt/Embedded作为图形界面的开发语言,设计了系统中的。在介绍硬件平台的基础上,给出了Linux下设备驱动程序的工作过程及实现方法,简单介绍了Qt/Embedded的架构和字符输入策略,详细设计了Qt驱动插件和应用程序。实验表明,键盘驱动采用Qt的插件系统,具有更好的独立性和移植性。
关键词:嵌入式Linux;Qt/Embedded;键盘驱动;S3C2440

引言
随着嵌入式系统的不断发展,特别是嵌入式处理器运算能力的不断增强,嵌入式系统被广泛应用于信息家电、移动通信、手持信息设备以及工业控制等众多领域。与此同时,用户对于嵌入式系统图形用户界面的需求也不断提高。嵌入式Linux作为一种流行的嵌入式系统平台,它所具备的稳定、高效、易裁剪、易移植、硬件支持广泛等优点,结合其源码开放的特征,使得Linux在嵌入式操作系统中的地位日益重要。Qt/Embedded是一个完整的自包含GUI和基于 Linux的嵌入式平台开发工具,因其面向对象、跨平台、界面设计更美观和友好而得到广泛的应用。Qt/Embedded具有客户/服务器模型,直接向帧缓冲写入数据,摒弃了X窗口系统,节省了内存。同时,将外部输入设备抽象为键盘和鼠标输入事件,底层支持键盘、GPM鼠标、触摸屏,以及用户自己定义的设备等。

1 硬件设计
电路采用三星S3C2440处理器,实现了4×4矩阵键盘的输入。矩阵键盘使用了处理器的4个GPIO和4个中断,以中断方式获取键值,对应的中断引脚分别是EINT3、EINT9、EINT11、EINT13。GPIO引脚与矩阵键盘的行相连接作为输入端,中断引脚与矩阵键盘的列相连作为矩阵键盘的输出端。开始时GPIO端输出为低电平,当有按键被按下时,按键所在列输出低电平产生中断,这时可以判断按键所在的列。然后向每一行依次输入高电平,如果列的输出端由低电平变成高电平,则可以确定按键所在的行,这时键值被唯一锁定。具体电路如图1所示。

2 LinuX下键盘驱动
键盘设备属于字符设备,键盘驱动应该符合字符设备驱动的编写模式。Linux采用内核模块机制,当系统运行的时候驱动程序可以以模块的形式动态地加载和卸载,既方便了驱动的调试,又缩短了开发周期。在驱动中必须实现static int_init my_kb_init(void)函数和stat-
ic void_exit my_kb_exit(void)函数。static int_init my_kb_init(void)函数在内核加载键盘驱动时被调用,注册模块为以后调用模块函数预先做准备,同时完成字符设备的注册,分配主设备号,设置中断类型,安装中断函数,并且将所有中断禁止。static void_exit my_kb_ exit(void)函数在卸载模块时被调用,用于撤销初始化函数所做的一切,否则在系统重新引导之前一些东西会残留在系统中,导致模块重新加载失败。
a.JPG

键盘驱动中主要包括以下几个子模块:中断处理子模块、键盘扫描子模块、消抖处理和组合键子模块、重复按键子模块等。驱动工作流程如图2所示。
b.JPG

按键的识别主要是在中断处理子模块中完成的。当系统有按键被按下时,驱动程序先关掉中断,然后扫描键盘,确定哪个键按下,键盘按下和抬起都有中断发生,这样可以为用户提供按下和抬起标志,以判断按键是单键按下还是多键齐按。在消抖处理和组合键子模块中,加入Linux内核定时器,键盘定时扫描,消除抖动得到稳定键值。重复按键子模块是根据Linux内部的定时器,设置自动重复开始延时和自动重复延时,键盘按下后根据延时来完成按键事件,键值存入队列供应用程序读取。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 下一页

关键词: 键盘 接口 嵌入式

评论


相关推荐

技术专区

关闭