模块化设备驱动开发途径研究

来源 :南京大学 | 被引量 : 0次 | 上传用户:sunleilong
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
设备驱动程序是计算机系统中最重要的组成部分之一,应用程序和操作系统都需要通过设备驱动程序对外设进行管理和操作。此外,设备驱动程序代码在现代操作系统中占据了非常大的比重,比如在Linux和windows中70%以上的代码为各类设备的驱动程序。与此同时,设备驱动程序也是操作系统中各类错误最主要的源头,已有研究的统计结果表明,驱动程序平均每行中的错误几倍于操作系统其它部分的代码。设备驱动程序体量庞大且易于出错是由其自身复杂性较高所决定的。驱动程序需要按照操作系统制定的驱动程序规范的要求,根据系统硬件平台的配置,遵照设备制造商定义的设备操作规范,对硬件设备进行管理和操作。设备驱动程序中关于操作系统,硬件平台和设备的代码交织在一起,相互影响,使得驱动程序结构非常复杂,开发、测试和维护起来非常困难。另外,操作系统,硬件平台和设备中任意一个要素发生变化都会导致设备驱动程序的重新构造。因此,如何提高设备驱动程序的开发效率,如何减少设备驱动程序中的错误,提高驱动程序的质量,一直是系统软件开发关注的主要问题。针对上述问题,本文研究了一种模块化设备驱动开发方法,提出将复杂的设备驱动程序按照功能划分为操作系统模块,设备模块以及系统平台模块三个相对独立的部分分别进行开发。通过明确定义三个模块之间的接口,以模块间接口上方法的相互调用,将模块集成在-起构造出最终的驱动程序。运用这一方法,针对以太网网卡类设备设计了模块化设备驱动开发框架。接着对框架进行实例化,为Realtek RTL8019AS,Realtek RTL8150,DM9000,以及CS8900A四块网卡构造了在Linux和VxWorks两种操作系统下的网卡设备驱动程序。随后的实验表明:框架支持三个模块相互分离,独立开发,可以对驱动的复杂性进行有效地控制;操作系统模块能够在同一类设备的驱动中复用,设备模块能够在不同操作系统的驱动中复用,可以有效降低开发工作量,减少错误的发生;同时与原有驱动相比,新框架下开发的驱动,没有明显的性能损失。具体来说,本文的主要工作如下:(1)提出了一种模块化设备驱动开发方法。该方法将复杂的设备驱动分解为系统平台模块、设备模块以及操作系统模块。系统平台模块描述了设备所在系统平台的硬件配置参数,可以由系统制造商完成;设备模块提供并实现了控制和管理一类设备的接口,以及提供一类设备的属性和状态的描述,可以由设备制造商完成;操作系统模块通过读取系统平台硬件配置参数,调用设备控制接口以及同内核交互,根据操作系统定义的驱动程序规范,最终实现了驱动程序,可以由操作系统提供商来完成。此方法允许我们将复杂的设备驱动开发任务分担到不同的角色,由他们各自承担自己模块的开发,然后系统平台模块、设备模块和操作系统模块三者通过明确定义接口上的方法调用,最终构造出新的设备驱动程序。实现了在大大降低驱动程序开发复杂性以及提高驱动质量的同时,使得驱动程序可以在不同设备、不同操作系统和不同硬件平台环境下进行复用。(2)基于提出的模块化设备驱动开发方法,设计了针对网卡类设备的模块化设备驱动开发框架:系统平台模块为其它模块提供系统平台参数的获取方法,描述了网卡设备所处的硬件环境,包括中央处理器描述,总线描述,中断描述以及地址空间描述;网卡设备模块面向网卡类操作系统模块提供了网卡类设备控制层的(包括网卡类设备属性,网卡类设备状态以及网卡类设备功能)调用,并针对其中定义的网卡类设备功能编写了对应的代码实现;网卡类操作系统模块实现了操作系统提供给网卡类驱动程序实现的驱动接口,将其转换为对网卡类设备功能接口的调用,转换过程中会与操作系统交互(调用内核提供的基本内核服务,当前子系统提供的服务以及其他子系统提供的服务),调用网卡设备模块提供的网卡类设备属性和网卡设备类状态,以及调用系统平台模块提供的系统平台参数。(3)基于给出的网卡类设备的模块化设备驱动开发框架,本文针对Linux和VxWorks两种操作系统,分别为Samsung s3c2410嵌入式片上系统平台上的RTL8019AS网卡,Samsungs3c2440嵌入式片上系统平台上面的DM9000网卡,Samsung s3c2440嵌入式片上系统平台上的CS8900A网卡,以及Realtek公司的RTL8150 USB网卡共四块网卡分别开发了对应的操作系统模块、设备模块和系统平台模块,并构造出最终的驱动程序。通过复用和组合不同的操作系统模块,设备模块以及硬件平台模块,灵活地构造出了上述四块网卡在两个操作系统平台上的驱动程序。以生成的设备驱动程序为案例,对驱动程序的正确性,驱动模块开发过程的开发效率(复杂性控制和驱动模块的复用),以及生成的设备驱动程序的性能三个方面进行了实验评估。
其他文献
单元测试是软件测试的最初阶段,做好充分有效的单元测试可以显著地降低软件测试成本,提高软件质量。代码测试系统(Code Testing System,CTS)是一个针对C语言的自动化测试系统,其
文章首先对XML做概述性介绍,包括XML的产生、优势、特点,及XML应用方式和领域.然后是对同步多媒体合成语言SMIL的研究,说明了SMIL语言的设计目标及定义,简单介绍了SMIL1.0规
该文对LDAP协议的主要内容进行了详细的分析,对目录数据库和关系数据库进行了比较,对LDAP协议的工作方式进行了讨论,给出了LDAP的拓扑结构.在信息模型中给出了目录项、属性、
随着数据库知识发现技术和数据挖掘技术的迅速发展,数据聚类技术作为数据挖掘的重要技术之一,在诸如市场分析、金融投资、医疗卫生等实际应用领域得到了广泛的应用.但是,由于
随着当前印刷品检测技术的发展,基于机器视觉的非接触式印刷品检测已经成为当前印刷品检测的主要方式。它通过在检测之前采集一幅合格的印刷品模板图像作为检测标准,检测时实
随着软件规模变得越来越大,控制软件开发的费用,提高软件的开发效率,改进软件开发质量,保证软件开发的一致性变得越来越难。造成这种“软件危机”现象的一个重要原因就是软件开发
“九五”国防科技预研重点攻关项目──“嵌入式软件开发环境异种机互操作技术研究”,是为了结合航天系统中嵌入式软件开发环境的实际情况开展支持嵌入式软件开发环境集成的互
近年来,随着现代科学技术的发展和进步,现代化工生产过程日趋复杂化、大型化。任何系统内某一点故障的发生,如若不能及时发现处理,都会带来巨大的经济损失和人员伤亡。因此,准确、
该文介绍了EveryWhere,一个可扩展、说明性、高度并行的信息集成系统设计框架.EveryWhere以智能规划技术为系统核心,结合知识表示与推理、规划执行和信息提取技术为一体,是一
该文在分析现有的各种色彩匹配方法所存在问题的基础上,提出了一套RGB到CMY和CMY到CMYK的色彩匹配方法,通过对样本数据的学习建立色彩匹配关系,确保算法的通用性和自动化.在R