本文是一篇操作系统论文范文,关于操作系统方面研究生毕业论文开题报告,关于链路无关HID驱动程序相关专科毕业论文范文。适合操作系统及通信技术及蓝牙方面的的大学硕士和本科毕业论文以及操作系统相关开题报告范文和职称论文写作参考文献资料下载。
【摘 要 】HID协议规范是专为USB人机交互设备开发的.本文通过对Android系统内核USB HID协议及Android内核I/O子系统的分析,探讨一种传输链路无关的处理HID设备与主机通信的内核模块的开发.将HID相关的东西从各种通信技术中隔离出来后,可以轻易的实现主机与各种不同通信链路(串口,红外等)的HID设备的连接,而不用关心HID设备与操作系统内核的交互.
【关 键 词 】HID,链路无关,蓝牙,通信独立
1.HID协议规范概述
HID(Human Interface Device,人机接口设备)规范是对USB规范的一个补充,是一种用于和计算机进行交互通信的接口,它描述了各种USB人机交互设备之间保持兼容应该遵循的协议[1,2].在USB的HID规范中定义了三种类型的数据包,它们分别为:报告描述符,输入报告,输出报告.
HID报告描述符描述了HID设备包含有哪些输入键和输出事件,以及各个键输入键及输出事件的数据包格式.HID设备可以使用蓝牙、红外或者USB等各种方式与主机相连,主机端通过相应的方式从HID设备获取报告描述符.获取到报告描述符后,主机便知道了HID设备的各种特点,包含HID上有哪个输入键、支持哪些输出事件等.
2.使用蓝牙传输HID数据包
蓝牙技术如其他通信技术一样,有软件的协议栈.各个蓝牙设备之间的通信都通过协议栈来完成[3].然而协议栈只是完成蓝牙的通信,即将数据从一个设备送到另一个设备.协议栈上可以传输各种信息,不同的信息就对应了蓝牙不同的应用场景.针对每一种应用场景,蓝牙组织SIG开发了相应的规范,这样的规范就叫做蓝牙的Profile.每个Profile规定了使用蓝牙来传输何种数据,以及如何使用蓝牙协议栈来传输这些数据.在蓝牙HID Profile规范中传输的数据即为HID数据.
当主机通过蓝牙协议得到前面讲述的HID数据后,如何使用这些数据就是HID规范的内容.主机需要对报告描述符进行解析,解析后可知道HID支持哪些按键及哪些输出事件,也能得到输入或输出报告的具体数据包格式.然后将获取到的按键信息交给操作系统的输入系统.
3.HID输入报告及主机输出事件与操作系统的交互
通过对HID数据包进行分析,可以得到HID设备类型和产生的输入事件的类型.但应用程序或用户不可能直接处理这些事件,输入输出事件的管理是由操作系统完成的,需要把从HID设备获取的输入事件信息统一传递给操作系统[4].Android操作系统内核用struct input_dev来表示一个输入设备,使用input_register_device向内核注册一个输入设备,使用input_report_key向输入设备报告一个按键信息.只要能够获取HID输入输出事件的类型,就可以很容易做到与Android操作系统内核的交互.
4.通信方式独立的HID协议的实现
通过对HID规范的分析,发现它不仅可以用于USB HID设备,同样可用于其它通信接口的人机交互设备.这里以蓝牙HID设备为例证明了这种可行性.在操作系统(以Android系统为例)内核中开发一个独立的模块HidAlone.ko,该模块只需向应用层导出三个接口,分别为接收HID设备的报告描述符,输入报告和供应用层读取输出报告.
如何写操作系统一篇好的本科论文
播放:37565次 评论:6882人
struct file_operations ivt_bt_rs_fops等于{.owner等于THIS_MODULE,.ioctl等于bthidmgr_ioctl,.open等于bthidmgr_open,}
本文出处 http://www.sxsky.net/geshi/426117.html
ioctl方法bthidmgr_ioctl有四个命令:HIDMGR_IOCTL_PLUGIN,HIDMGR_IOCTL_PLUGOUT,HIDMGR_IOCTL_INPUT,HIDMGR_IOCTL_LED_TO_USER.
在执行open方法bthidmgr_open之后,应用层便可执行HIDMGR_IOCTL_PLUGIN命令,它传递的参数为HID设备的报告描述符.执行HIDMGR_IOCTL_INPUT命令时,传递的参数为输入报告.应用空间要获取输出事件时,开启一个线程执行HIDMGR_IOCTL_LED_TO_USER命令,它会阻塞直接内核产生了输出事件,它通过参数获取返回的输出报告.
有关论文范文主题研究: | 关于操作系统的文章 | 大学生适用: | 自考毕业论文、学士学位论文 |
---|---|---|---|
相关参考文献下载数量: | 29 | 写作解决问题: | 如何写 |
毕业论文开题报告: | 标准论文格式、论文小结 | 职称论文适用: | 论文发表、职称评副高 |
所属大学生专业类别: | 如何写 | 论文题目推荐度: | 经典题目 |
这样各个HID设备只需在应用软件层做如下简单的处理,即可完成设备与操作系统内核的连接:通过相应的通信方式从HID设备读取报告描述符,然后将其传递给HidAlone.ko内核模块.HidAlone.ko在收到报告描述符后,对其进行分析,并且像内核注册一个input_dev结构代表该设备与内核进行交互.从HID设备读取输入报告,将其传给HidAlone.ko内核模块,HidAlone.ko根据报告描述符中获取的信息分析输入报告得到输入事件,然后将输入事件传递给操作系统输入系统进行处理.从HidAlone.ko内核模块读取对输出报告并传给HID设备,当有输出事件产生时,HidAlone.ko会根据报告描述符组建输出报告供应用层读取.