VxWorks 驱动程序的编写.ppt

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

VxWorks 操作系统 VxWorks 驱动程序的编写 本章主要内容 介绍VxWorks 驱动程序的编写方法,包括字符设备、块设备、串口设备、网络设备等的 驱动编写方法以及文件系统。本章安排了很多实验 驱动程序概念 英文名为“Device Driver”,全称为“设备驱动程序”。是一种可以使计算机和设备通信的特殊程序,相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作。 因此,驱动程序被誉为“ 硬件的灵魂”、“硬件的主宰”、和“硬件和系统之间的桥梁”等。 VxWorks 设备驱动分类及特点 大体上可把设备驱动程序分为两大类: 1. 基于I/O 文件系统的设备:包括基于I/O 系统的字符设备和块设备。VxWorks 的I/O 系统有其独特性,因而它比其它I/O 系统更快速、灵活,这在实时系统中非常重要。这些设备都可采用ioLib 系统库提供的接口函数create()、 open()、close()、 read()、write()和 ioctl()来操作。VxWorks 的I/O 系统由基本I/O 及含缓冲的I/O 组成,它提供标准的C 库函数。基本I/O 库与Unix 兼容;而含缓冲的I/O 则与ANSI C兼容。 VxWorks 设备驱动分类及特点 2. 其他特殊设备:主要指一些非基于I/O 文件系统的设备,如串口、硬盘、网络设备等。不能通过标准I/O 来进行存取,但都有它们各自相关的标准。 虽然VxWorks 的I/O 设备驱动与UNIX 的很类似,但两者也有区别,主要包括以下几点: ● VxWorks 的设备驱动可以动态安装和卸载; ● 除了标准的输入、输出和错误输出外,VxWorks 的文 件描述符是全局的,可由任何任务存取; ● VxWorks 的设备驱动有优先级之分,这取决于调用它的任务的优先级。而Unix 下的设备驱动则执行在系统模式下,无优先级之分。 VxWorks 设备驱动分类及特点 系统与驱动程序的关系 VxWorks 设备驱动分类及特点 当用户调用一种基本I/O 操作时,I/O 系统将用户请求反映给特定驱动程序的相应操作函数。 驱动程序可调用该任务可执行的任何操作,包括对其他设备进行I/O 操作。这意味着多数驱动程序必须对关键程序代码采取一种互斥的操作机制。通常采用的互斥机制是使用semlib 函数库提供的信号量操作。 常见的VxWorks 驱动程序 VxWorks 的提供了对很多设备的驱动程序支持。下图为常见的VxWorks 设备驱动程序。 字符设备驱动 字符设备是指在I/O 传输过程中以字符为单位进行传输的设备,如键盘、鼠标和打印机等。字符设备驱动程序一般都有7 个基本I/O 操作函数,但也不排除某些具体的字符设备驱动程序可能忽略其中的一个或几个操作函数。 这7 个基本的I/O 操作函数及其功能 字符设备驱动 驱动程序除了具有上述7 种基本I/O 操作函数以外,还包含以下两种操作: ● 初始化函数负责在I/O 系统中安装驱动程序;驱动程序将相应的设备与所需的资源关联起 来;然后初始化函数再执行其它任何必须的硬件初始化操作。 ● 将驱动程序加载到I/O 系统中,这类函数一般称作xxDevCreate()。一般简单的驱动程序,往往将这两个函数合二为一。 字符设备驱动 编写设备驱动程序时存在一个问题:如果设备的缓冲中没有任何数据,但应用程序此时发起了一个read()调用,那么此时该应用程序就有可能阻塞在这个位置上,直到缓冲中有了足够的数据。当该应用程序只须处理一个设备的数据时,阻塞还不至于产生问题。但如果该应用程序须处理多个设备的数据时(如同时响应键盘和触摸屏的数据),那么阻塞在某个设备操作上就变得不可接受。 为了解决这个问题,要使用系统提供的select 机制。支持调用select()函数的用户驱动程序,可以使任务同时等待多个设备的输入,或允许任务为设备执行指定的I/O 操作设定最长等待时间。这一功能的实现需要借助于selectLib 函数库。 块设备驱动 块设备是指以“块”为单位对数据进行存取的设备。它可以被随机存取,并且数据以块为单位进行传输,典型的有硬盘、光驱、软驱和磁带等。 VxWorks 的块设备与字符设备有微小的差别:块设备不能与I/O 系统直接打交道,如右图所示。 块设备驱动 块设备不能与I/O 系统直接打交道,如上图所示,在块设备驱动程序与I/O 系统之间必须有文件系统,如dosFs、rawFs 或tapeFs 等。这种层次关系允许同一个块设备上存在不同的文件系统,从而减少驱动程序中必须支持的I/O 函数的数量。 块设备驱动程序的操作函数大致有以下几个部分

文档评论(0)

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

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

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档