欢迎来到天天文库
浏览记录
ID:37822955
大小:171.11 KB
页数:10页
时间:2019-05-31
《25 VxWorks 键盘驱动实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验25VxWorks键盘驱动实验一实验原理CVT-PXA270的输入设备有很多,包括PS/2鼠标、PS/2键盘、触摸屏、USB键盘、USB鼠标以及4X4扫描键盘等。本实验将介绍实验箱中4X4扫描键盘的驱动程序编写方法。1.接口驱动程序任何设备驱动程序都需先通过适当的方法安装在系统中,然后才能被应用程序使用。字符类型的设备驱动程序使用iosDrvInstall()和iosDevAdd()来实现驱动程序的安装。I/0系统将用户的I/0请求转换成对相应驱动程序具体操作函数的调用,通过维护一个包括所有驱动程序操作函数的地址表
2、来实现上述功能。通过调用I/0系统的iosDrvInstall()可以动态安装驱动程序;该函数的参数就是7种基本I/0操作函数指针。iosDrvInstall()函数将这些地址写入驱动程序表中的一块空闲存储区中,并返回这块存取区的编号;编号用驱动程序号表示,可被与驱动程序相关联的设备使用。如果相应的函数指针为0,表示驱动程序不具备该项功能;对于非文件系统的驱动程序,close()和delete()函数通常不起作用。iosDrvInstall()的原型是:intiosDrvInstall(FUNCPTRpCreate,F
3、UNCPTRpDelete,FUNCPTRpOpen,FUNCPTRpClose,FUNCPTRpRead,FUNCPTRpWrite,FUNCPTRpIoctl);字符设备驱动程序必须首先实现设备的7个标准I/O函数,然后通过调用iosDrvInstall()函数将设备的I/O函数指针作为参数传递给系统。这时系统会在设备登记信息表中记载这个设备及其函数指针(如图1所示),并返回一个设备驱动号;可通过这个设备驱动号进行后续相关操作。createdeleteopenclosereadwriteioctl0xxCreate
4、xxDeletexxOpenxxClosexxReadxxWritexxIoctl1yyCreateyyDeleteyyOpenyyCloseyyReadyyWriteyyIoctl2newCreatenewDeletenewOpennewClosenewReadnewWritenewIoctl3图1VxWorks系统的标准I/O函数一些设备驱动程序能够为某一特殊种类设备的多个实例提供服务。例如:一个串行通信设备的驱动程序经常可处理多个串行端口的通信工作。在VxWorks的I/O系统中,给设备定义了一种称为设备头(DE
5、V_HDR)的数据结构,该数据结构中包括了设备名称字符串和这个设备所使用的驱动程序的编号(iosDrvInstall()返回的整数)。I/O系统中的所有设备的信息都保存在一个称为“设备表”的链表结构中。该链表中的每个元素都是设备描述符,它包括与该设备有关的数据,如设备地址、缓冲区和信号量等,而设备头则位于设备描述符的起始部分。当调用iosDrvInstall()注册I/O函数成功后,须使用iosDevAdd()函数将此设备加入到I/O系统的设备链表中,如图2所示。设备表设备驱动程序名称/devXX/devYY/devN
6、EW1/devNEW2驱动程序编号0122驱动程序表createdeleteopenclosereadwriteioctl0xxCreatexxDeletexxOpenxxClosexxReadxxWritexxIoctl1yyCreateyyDeleteyyOpenyyCloseyyReadyyWriteyyIoctl2newCreatenewDeletenewOpennewClosenewReadnewWritenewIoctl3图2VxWorks系统驱动程序安装iosDevAdd()的原型:STATUSiosDe
7、vAdd(DEV_HDR*pDevHdr,char*name,intdrvnum);其中:DEV_HDR是一个指向该设备的描述符指针;DEV_HDR结构中的第一项则指向下一个设备的描述符指针。成功执行上述两步操作之后,相应的设备驱动就被安装到VxWorks中了。可以使用一些标准的I/O系统调用(如open、close、create、remove、read、write等)对该设备进行存取。以open为例说明I/O系统的实现办法:1.首先系统根据指定的文件名在设备表中查找对应的描述符;2.根据找到的设备描述符获取对应的设备
8、编号;3.根据设备编号查找驱动程序表,获取对应的open函数的地址;4.最后调用驱动程序的open函数。下面具体分析一下JXARM9-2410中4X4扫描键盘驱动程序的编写和使用,这是一个非常标准的字符设备。其代码在C:Tornado2.2targetsrcugldriverkeyboardpckbds3c2410
此文档下载收益归作者所有