基于嵌入式linux的串口自定义键盘驱动开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
291
基于嵌入式Linux 的串口自定义键盘驱动开发
张士林
(江苏自动化研究所,江苏连云港222006)
摘要:近年,随着科技发展,嵌入式已成为当今时代产业主流。
而嵌入式Linux 的优势使其成为主要的操作系统之一。
本
文介绍了Linux 下驱动开发的一般模式,详细分析了基于串口通讯的自定义键盘驱动的开发方法,对嵌入式Linux 驱动开发有一定程度的指导作用。
关键词:嵌入式Linux 系统;串口键盘;驱动开发中图分类号:TP316.2文献标识码:A 文章编号:1673-1131(2019)12-0291-02Abstract:In recent years,with the development of science and technology,embedded technology has become the mainstream of the industry.The advantages of embedded Linux make it one of the main operating systems.This paper introduces the general mode of driver development under Linux,and analyzes in detail the development method of custom keyboard driver based on serial port communication.This paper has certain reference signification for the research and development of embedded system.Key words:embedded Linux system;serial keyboard driver;driver development
0引言
嵌入式系统(Embedded system ),是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”。
随着计算机技术的快速发展,嵌入式系统因面向用户、面向产品、面向应用,因此在工业控制、交通管理、信息家电、智能管理、环境工程等领域具有非常广阔的应用前景。
信息时代,数字时代使得嵌入式产品获得了巨大的发展契机,为嵌入式市场展现了美好的前景。
由于嵌入式Linux 系统的免费开放、多任务多用户、设备独立、可支持多种平台等特点使其在人们研发过程中飞速发展。
人机交互在嵌入式Linux 系统中的应用越来越广泛,更多的设备已配备专用的键盘进行用户与设备之间的交互,这就涉及到了键盘驱动开发的问题。
本文对键盘驱动开发过程进行了详细的说明,经过上机实测,结果是可行的。
1Linux 下驱动开发简介
Linux 设备驱动程序开发的内涵包括Linux 驱动
程序基础、驱动模型、内存管理、内核同步机制、I2C 驱动程序、LCD 驱动程序、网络驱动程序、USB 驱动程序、输入子系统驱动程序、块设备驱动程序、音频设备驱动等内容。
对设备驱动最通俗的解释就是驱使硬件设备行动。
设备驱动与底层硬件直接打交道,按照硬件设备的具体工作方式房室设备寄存器,完成设备的轮询、中断处理、DMA 通信,进行物理内在向虚拟内在的映射,最终使通信设备能够收发数据,使显示设备能够显示文字和画面,使存储设备能够记录文件和数据。
设备驱动充当了硬件和应用程序之间的纽带,它使得应用软件只需要调用系统软件的应用编程接口(API )就可以让硬件去完成要求的工作。
在系统中没有SerialSend ()
、
的主流,数字印刷广泛应用于画册等商务印刷等各领域的印刷,
数字印刷是特定的印刷服务,取决于用户的数量,成本等要求[3]。
现代印刷行业生产方式从模拟印刷转向数字印刷,是计算机技术发展的必然趋势,印刷技术存储及生产方式向信息化方向转变,仓储转向高密数字方式,大量印刷转向个性化的按需印刷,是市场经济发展催生技术融合的结果,印刷行业要想进一步发展,必须利用计算机数字技术,不断革新工艺流程。
计算机技术与数字印刷关系密切,数字印刷产生与计算机设备关系密切,静电照相是数字印刷机的主要成像方式,打印输出成像是数字印刷技术产生的关键技术。
数字图像处理技术为数字印刷产生奠定了基础。
数字图像处理技术从原稿的输入到处理输出,都需数字图像处理技术。
印版上将页面信息输出在承印材料。
计算机数字技术对推动数字印刷发展发挥了重要作用,数字印刷必将引领行业潮流,将印刷行业带入成品精准化的发展时代。
数字印刷经过长期的发展在各领域有一定的涉猎,很多传统出版印刷企业充分利用数字印刷优势获得最大效益,当前数字印刷不能为实现传统印刷企业经营目标生产服务,但数字印刷具有广阔的发展前景。
传统印刷方式将逐渐被数字印刷取代,大部分高速生产线产品可以在流程化系统中完成,如传统凹版印刷技术会被
淘汰,色粉与喷墨等数字印刷技术混合印刷将被大量使用,促进健全杂志,消耗品及印刷服务体系。
大大提高数字卷筒印刷速度,喷播印刷机输出速度可以与胶印媲美。
科技的进步发展带动了数字印刷技术进步,随着印刷市场的发展,数字印刷不断推进行业向更加光明的方向发展。
计算机数字印刷技术在印刷市场占据独特的优势,数字技术与网络技术结合,会推动数字印刷技术飞速发展,需要加强计算机技术的宣传,采取印刷设备的销售措施,使得各企业体会到数字印刷的优越性。
参考文献:[1]姜虹.浅谈计算机数字技术在印刷行业中的应用[J ].科技
风,2013(08):97.
[2]姜虹.浅谈计算机数字技术在印刷行业中的重大应用[J ].科技创业家,2013(05):73.
[3]
俞依玲.计算机数字技术在印刷行业中的发展与应用[J ].中小企业管理与科技(下旬刊),2012(06):231-232.
作者简介:郑璐璐(1993-),女,河南周口人,本科在读,研究方向:印刷工程;王恒(1983),女,湖北荆门人,讲师,硕士,研究方向:物联网工程。
2019
(Sum.No 204)
信息通信
INFORMATION &COMMUNICATIONS
2019年第12期(总第204期)
292
SerialRecv ();对LED 定义Lighton ()、LightOff ();以及对Flash 定义FlashWrite ()、FlashRead ()等。
驱动程序沟通着硬件和应用软件,而驱动工程师则沟通着硬件工程师和应用软件工程师。
在通信、电子行业中,大量新的芯片、新的电路板被设计出来,因此也会有大量设备驱动需要开发。
这些驱动也Vxworks 、linux 、Windows 等多任务操作系统中,发挥着不可替换替代的作用。
2串口键盘驱动程序的实现
基于Linux 的串口键盘驱动由串口驱动和键盘接口库两个部分组成。
本文首先以8250驱动为例介绍了串口驱动的实现,然后以简化的通讯协议为例,对自定义键盘接口库的实现进行了说明。
2.1串口驱动实现
要实现串口驱动的开发,首先必须理解tty 框架的层次结构,如图1
所示。
图1tty 框架的层次结构
用户空间层将对底层硬件进行操作。
用户空间层与tty_core 之间的数据交换,tty_core 再与line discipline 和tty_driver 进行数据交换。
8250串口驱动中要实现的函数有很多,包括串口modem 控制函数、打开/关闭函数以及串口参数设置函数等。
与应用程序联系比较密切的函数进行介绍:(1)serialxr_startup
设备文件被打开时就会调用此函数,此函数能够打开设备,并进行设备初始化加载,可对串口寄存器、启用FIFO 、中断等初始化。
(2)serialxr_shutdown
当应用程序调用close 函数关闭设备时会打开这个函数,其功能主要是关闭相关操作,对工作进行收尾。
包括对所有改变过的寄存器复位,禁用任何可导致中断的条件,释放中断资源。
(3)serialxr_set_termios 设置串口的数据位、奇偶校验位、停止位和波特率。
2.2键盘接口库实现
自定义键盘按键状态码分为通码、断码,通码是键盘按键
按下后产生的串口数据,断码是键盘按键弹起时产生的串口数据。
本文以简化的通讯协议进行说明,按键帧长采用两个字节,通码以0xF0开始,紧接着是一个字节的键码值,断码以0xE0开始,0xFF 结束。
接口库对外主要有两个函数接口,打开设备和设置按键触发函数。
2.2.1打开设备
在SerialInit 中对指定串口进行波特率、停止位、数据位、奇偶校验位进行设置,然后创建线程函数mythread ,对接收到的串口数据进行处理。
int keyDeviceOpen ()
{
int ret =0;pthread_t id1;if (SerialInit ()<0){
printf ("Key serial open fail!\n");return -1;}
ret =pthread_create (&id1,NULL,(void*)mythread,NULL );if (ret ){
printf ("create pthread1error!");return -1;}
return 1;
}
在线程函数mythread 中读取串口数据的首字节,如果是0xF0,表示按键按下,读取其键码值,并根据键码值调用用户的触发函数s_keypadCallback ,进行下一次循环;如果是0xE0,表示按键弹起,读取结束符,进行下一次循环;如果是其他值,直接进入下一次循环。
2.2.2设置按键触发函数
用户自定义的按键处理函数通过keyDeviceSetProcessFun 函数传入接口库中,实现对自定义按键的处理。
void keyDeviceSetProcessFun (keyDeviceFunPtr pFun ){
if (pFun ==NULL ){
perror ("keyFun set error!\n");}else {
s_keypadCallback =pFun;}
return;}
3结语
Linux 嵌入式操作系统的强大优势与其特殊的研发模式
使其具有广泛技术应用。
本文以8250串口键盘驱动开发作为基本案例,详细示范了在嵌入式Linux 系统下8250串口键盘驱动详细过程,为嵌入式Linux 系统其他类型的驱动开发提供指导与借鉴意义。
参考文献:
[1]何永琪.嵌入式Linux 系统实用开发[M ].北京:电子工业出
版社,2010.
[2]阴晓峰,葛安林.Linux 环境下设备驱动模型及开发技术[J ].
计算机工程与应用,2009,38(8):104-109.[3]宋宝华.Linux 设备驱动开发详解[M ].北京:人民邮电出版
社,2008.
[4]袁帅,任利峰等.嵌入式Linux 操作系统的开发与应用[J ].
产业与科技论坛,2018,17(24):53-54.作者简介:张士林(1970-),男,汉族,安徽青阳人,本科学历,工程师,研究方向:电子信息技术。
信息通信
张士林:基于嵌入式Linux 的串口自定义键盘驱动开发。