25 VxWorks 键盘驱动实验【荐】.pdf

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
25 VxWorks 键盘驱动实验【荐】.pdf

实验 25 VxWorks 键盘驱动实验 一 实验原理 CVT-PXA270 的输入设备有很多,包括PS/2 鼠标、PS/2 键盘、触摸屏、USB 键盘、USB 鼠标以及4 X 4 扫描键盘等。本实验将介绍实验箱中 4 X 4 扫描键盘的驱动程序编写方法。 1. 接口驱动程序 任何设备驱动程序都需先通过适当的方法安装在系统中,然后才能被应用程序使用。字 符类型的设备驱动程序使用 iosDrvInstall()和 iosDevAdd()来实现驱动程序的安装。 I/0 系统将用户的 I/0 请求转换成对相应驱动程序具体操作函数的调用,通过维护一个 包括所有驱动程序操作函数的地址表来实现上述功能。通过调用I/0系统的iosDrvInstall() 可以动态安装驱动程序;该函数的参数就是 7 种基本 I/0 操作函数指针。iosDrvInstall() 函数将这些地址写入驱动程序表中的一块空闲存储区中,并返回这块存取区的编号;编号用 驱动程序号表示,可被与驱动程序相关联的设备使用。如果相应的函数指针为 0,表示驱动 程序不具备该项功能;对于非文件系统的驱动程序,close()和 delete()函数通常不起作用。 iosDrvInstall()的原型是: int iosDrvInstall (FUNCPTR pCreate, FUNCPTR pDelete , FUNCPTR pOpen , FUNCPTR pClose , FUNCPTR pRead , FUNCPTR pWrite , FUNCPTR pIoctl); 字符设备驱动程序必须首先实现设备的 7 个标准 I/O 函数,然后通过调用 iosDrvInstall()函数将设备的 I/O 函数指针作为参数传递给系统。这时系统会在设备登记 信息表中记载这个设备及其函数指针(如图 1所示),并返回一个设备驱动号;可通过这个 设备驱动号进行后续相关操作。 create delete open close read write ioctl 0 xxCreate xxDelete xxOpen xxClose xxRead xxWrite xxIoctl 1 yyCreate yyDelete yyOpen yyClose yyRead yyWrite yyIoctl 2 newCreate newDelete newOpen newClose newRead newWrite newIoctl 3 图 1 VxWorks 系统的标准 I/O 函数 一些设备驱动程序能够为某一特殊种类设备的多个实例提供服务。例如:一个串行通信 设备的驱动程序经常可处理多个串行端口的通信工作。在 VxWorks的 I/O 系统中,给设备定 义了一种称为设备头(DEV_HDR)的数据结构,该数据结构中包括了设备名称字符串和这个 设备所使用的驱动程序的编号(iosDrvInstall()返回的整数)。I/O 系统中的所有设备的 信息都保存在一个称为“设备表”的链表结构中。该链表中的每个元素都是设备描述符,它 包括与该设备有关的数据,如设备地址、缓冲区和信号量等,而设备头则位于设备描述符的 起始部分。 当调用 iosDrvInstall()注册 I/O 函数成功后,须使用 iosDevAdd()函数将此设备加入 到 I/O 系统的设备链表中,如图 2 所示。 设备表 设备驱动程序名称 /devXX /devYY /devNEW1 /devNEW2 驱动程序编号 0 1 2 2

文档评论(0)

aidj + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档