




已阅读5页,还剩89页未读, 继续免费阅读
(计算机系统结构专业论文)基于μcosⅡ内核的设备驱动程序框架的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 随着嵌入式系统软硬件技术的深入发展,为了更好的适应更加复杂的应用开 发,在嵌入式系统中普遍引入了嵌入式操作系统,嵌入式操作系统的引入又反过 来有力地促进了各种应用的开发工作。嵌入式应用的领域极其广泛,其中有大量 的应用是属于中小型的应用系统,对于这些中小系统而言,v x w o r k s 、w i n c e 以 及嵌入式l i n u x 等操作系统或者是成本太高,或者是结构相对复杂。这种情况下, 采用开源的c o s i i 作为系统内核是个不错的选择,这种内核具有规模小、实时 性好、成本低等优势,十分适合作为构建中小型嵌入式系统的基础。但是,遗憾 的是c o s i i 本身没有设备设备管理的功能,而设备驱动的开发在嵌入式系统中 占有十分重要的地位。c o s i i 的开发者后来提供的一系列比c g u i 、z c f s 、z c i p 、 z c f l a s h 等设备驱动的设计主要着眼于通用性,而没有和内核紧密的融合起来, 并且需要商业许可证才能获得。针对这种情况,本文尝试为# c o s i i 内核建立一 个设备驱动框架,使得开发者在此基础上开发驱动程序可以有章可循、节省开发 时间。 通过对一些流行的操作系统进行考察,可以看到它们各自都有一套严整的设备 设备管理方案。在这些操作系统下开发驱动程序,开发者可以集中精力面对设备 本身的工作逻辑,只需要完成设备驱动框架所要求的一些接口函数就可以了,而不 需要考虑怎么处理驱动与内核的关系。 广义的设备驱动包括两个部分:与设备相关的部分和与设备无关的部分( 或者 称为底层设备驱动和高层设备驱动) 。本文按照这个分类,对在p c o s i i 内核上建 立底层设备驱动和高层设备驱动分别进行了研究。底层设备驱动部分主要讨论了 设备管理框架和中断服务例程框架的设计和实现。高层设备驱动部分主要研究了 网络协议栈以及图形用户界面两种驱动,对自主开发或者采用移植的方式建立高 层设备驱动进行了深入的探讨。 考虑到文件系统在嵌入式系统中得到越来越广泛的应用,本文最后,对建立在 n a n df l a s h 之上的y a f f s 文件系统进行了重点分析,并给出了移植到口c o s i i 内核的详细过程。 【关键词】嵌入式系统,# c o s i i ,设备驱动框架,y a f f s 文件系统 a b s t r a c t a b s t r a c t w i t ht h ed e v e l o p m e n to fs o f t w a r ea n dh a r d w a r et e c h n o l o g yi ne m b e d d e ds y s t e m , m o r ea n dm o r ee m b e d d e ds y s t e m sh a v ea d o p t e de m b e d d e do p e r a t i o ns y s t e mf o rm o r e c o m p l i c a t e da p p l i c a t i o na n dd e v e l o p m e n t t h ee m b e d d e ds y s t e mh a s b e e na p p l i e di n w i d ef i e l d s ,o fw h i c hm o s ta r em e d i u m - s i z e do rm i n i - t y p es y s t e m s f o rt h e s es y s t e m s , o p e r a t i o ns y s t e m sl i k ev x w o r k s ,w i n c e o re m b e d d e dl i n u xe i t h e rc o s tt o om u c ho r h a v et o oc o m p l e xs t r u c t u r e i nt h i ss i t u a t i o n ,i t sab e t t e rs e l e c t i o nt ou s et h eo p e n s o u r c es o f t w a r e 1 c o s i ia st h e k e r n e lo ft h ee m b e d d e ds y s t e ms i n c ei tb e a r s s m a l l s c a l e ,g o o dr e a l - t i m ep e r f o r m a n c ea n dl o wc o s t h o w e v e r , i t sap i t yt h a tt h e 肛c o s - i i i t s e l fh a sn od e v i c e m a n a g e m e n tc o m p o n e n t w h i c hi sv e r yi m p o r t a n ti nt h e d e v e l o p m e n to fe m b e d d e ds y s t e m a l t h o u g h ,l a t e ro n ,t h ed e v e l o p e ro ft h e # c o s - i i h a sp r o v i d e ds e r i e so fd e v i c ed r i v e rl i k e t c g u i 、t c f s 、比c i p 、【l c f l a s h ,t h e s ed r i v e r s f o c u so nu n i v e r s a l i t yw i t h o u tc l o s el i n kw i t ht h ek e m e la n da l lt h ed e v i c ed r i v e r sa r en o t f r e e u n d e rt h i sc o n d i t i o n ,t h i sp a p e rw i l lt r yt oc o n s t r u c taf e a s i b l ed e v i c ed r i v ef r a m e s ot h a tw h e nd e v e l o p i n gd r i v ep r o g r a m m e s ,d e v e l o p e r sc o u l db eg u i d e da n d s a v et i m e t h r o u g hr e s e a r c h e so ns o m ep o p u l a ro p e r a t i o ns y s t e m s ,w ek n o w t h a tt h e ya l lh a v e s t r i c td e v i c em a n a g e m e n tm e c h a n i s m t h ed e v e l o p e r s ,w i t ht h e s ep l a t f o r m s ,o n l yn e e d t of o c u so nt h el o g i co ft h ed e v i c ei t s e l fa n dc o m p l e t et h ef u n c t i o n sr e q u i r e db yt h e d e v i c ed r i v ef l a m e ,w i t h o u tc o n s i d e r i n gt h er e l a t i o nb e t w e e nt h ed e v i c ea n dt h ek e m e l o nb r o a ds e n s e ,t h ed e v i c ed r i v e r c o n s i s t so ft w op a r t s ,n a m e l y , d e p e n d e n t p a r t ( 1 0 w 1 e v e ld r i v e r ) a n di n d e p e n d e n tp a r t ( h i g h l e v e ld r i v e r ) t h i sp a p e rw i l ls t u d y t h e b u i l d i n go ft h et w op a r t si nt h ek e r n e lo f 比c o s i ir e s p e c t i v e l y a st ot h el o w - l e v e l d r i v e r , h o wt od e s i g na n di m p l e m e n tt h ed e v i c em a n a g e m e n t f r a m ea n di n t e r r u p ts e r v i c e m a n a g e m e n tf l a m ew i l lb ei n c l u d e d w i t hr e g a r dt oh i g h l e v e ld r i v e r , t h es t u d yw i l l m a i n l yf o c u so nt w ok i n d s o fd r i v e r s :n e t w o r kp r o t o c o l s t a c ka n dg r a p h i cu s e r i n t e f f a c e ( g u i ) a n dw ew i l lc o n d u c tad e e pd i s c u s s i o no nt h ec o n s t r u c t i o no fh i g h l e v e l d r i v ev i as e l f - d e p e n d e n td e v e l o p m e n to rt r a n s p l a n t c o n s i d e r i n gt h em o r ea n dm o r ep o p u l a ra p p l i c a t i o no f f i l es y s t e mi nt h ee m b e d d e d s y s t e m ,t h el a s tp a r to ft h ep a p e rw i l lm a i n l ya n a l y z ey a f f s ,w h i c h i saf i l es y s t e m i l d e s i g n e df o rn a n d f l a s ha n da na p p r o a c ho ft r a n s p l a n t i n gi tt ot h ek e r n e lo f z c 0 s - 1 1 w i l lb ep r o v i d e di nd e t a i l k e yw o r d s :e m b e d d e ds y s t e m ,m c o s - i i ,d e v i c ed r i v e rf r a m e ,y a f f sf i l es y s t e m i i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 。一一留, 签名:丛塑盏 日期:砷年,月3 。日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘厂允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名,蓉丛垒导师签名:乏;趔三 日期:砷年f 月,) 。日 第一章引言 1 1 课题的背景及其意义 第一章引言 嵌入式计算系统自2 0 世纪6 0 年代诞生以来,随着计算机、电子信息、网络 通信等技术的发展,嵌入式系统的各项技术也蓬勃发展,深入到包括消费电子、 交通运输、电信服务等等生产和生活的每个角落。最近1 0 年甚至出现了加速发展 的势头,“无处不在的计算”,“普适计算”将不再是遥不可及的梦想。 嵌入式系统的繁荣主要得益于微处理器技术和嵌入式软件技术的突破性进 步。其中在微处理器方面,a r m 系列芯片为嵌入式系统提供了一个比较理想的 硬件平台;从软件方面来看,嵌入式软件技术特别是基础软件,如:嵌入式操作 系统,编译调试系统的出现和推广应用,使嵌入式系统的开发从作坊式向分工协 作规模化的方向发展,有力地促进了嵌入式应用扩展到更广的领域。 在竞争激烈的嵌入式操作系统市场中,各个嵌入式操作系统厂商依靠不同的 产品定位在垂直市场上拥有各自的优势。w i n d r i v e r 公司的v x w o r k s 操作系统在 通讯,医疗等垂直市场中拥有自己的优势,并且在操作系统和开发工具上有自己 的客户群,但由于成本高,结构复杂,不适合小型应用。w i n c e ,p a l m ,s y m b i a n 则更适合应用在消费类电子等领域。开源的l i n u x 操作系统体系结构复杂,产品 化和商业化程度不够,这对于批量生产、大规模、长时间运行使用的工业化产品 来说是致命的。 与p c 机的通用操作系统相比,嵌入式应用领域的广泛性和差异性的特点决定 了嵌入式操作系统是多姿多彩的,不可能开发出一种象p c 平台上的w i n d o w s 系 统那样的垄断各个领域的嵌入式操作系统来。在广泛的嵌入式应用领域,各类嵌 入式操作系统都可以找到自己的用武之地,关键是能否将技术本身与应用的需求 很好的结合起来。 对于大多数的嵌入式应用而言,系统复杂度不太高,应用软件是单一的、比 较固定的。在这种情况下,如果能以应用为中心,裁剪操作系统中不需要的模块 来构造嵌入式应用系统。这样无疑可以达到良好的效果,如降低成本的同时提高 了效率。这对操作系统来说,应该具备以下一些特性:易裁剪、规模小、易控制、 电子科技大学硕士学位论文 成本低、同时最好是开源的。当前广泛研究的z c o s 1 i 嵌入式操作系统就是一个 很好的解决方案,它不但具备上述特性,而且实时性能也较高。如果能以此为基 础来构造一个嵌入式应用系统,会是一个比较好的起点。 但是用# c o s i i 来构造嵌入式系统还有一些额外的工作需要完成。因为, # c o s i i 本身不是一个完整的操作系统,仅仅是操作系统的内核部分。嵌入式开发 中的大量工作实际上都集中在各种设备驱动的开发,在开发一个完整的,能实际 运行的系统时,特别是开发没有r o mb i o s 支持的嵌入式系统时,开发设计和实现 驱动工作量要占整个系统的三分之一甚至还多,驱动实现的好坏影响到系统硬件 的性能的发挥,在整个操作系统中占有很重要的作用。同时,在当前操作系统内 核的实现方法和技术相对成熟的情况下,从某种意义上说,设备驱动软件对于一 个嵌入式操作系统的应用范围也起着关键作用。, u c o s i i 的作者也提供了一系列的 驱动程序,匀i p c g u i 、t c f s 、t c i p 、t t c e l a s h 等等,这些驱动程序的获得需要相 应的许可证,更关键的是,到目前为a r z , c o s i i 还没有一个完整的设备驱动框架。 这也是使用p c o s i i 进行开发时能感觉到的与其他嵌入式操作系统相比差距最大 的地方。例如,在l i n u x 中编写驱动只须写不多的几个固定的函数,并且每个函数 都有详细的定义。其他耍 1 v x w o r k s 也有类似的框架体系;w i n c e 的驱动编写方式较 为复杂,但仍然是有完整框架支持的。如果是编写简单的设备驱动或者上层应用, 这个问题并不突出。当复杂性提升或希望不同产品线保持体系结构上的一致时, 这个问题就比较显著。特别是当前嵌入式系统的复杂度越来越高的情况下( 例如 支持网络协议栈已经非常普及) ,这方面的问题明显影响t # c o s i i 的推广和应用。 规划一个简单、稳定、规范的体系结构在当前已经非常必要。这样一个体系结构 并不需要有复杂的定义,应该具有高效、简洁、易扩展、易裁剪等特点,一旦制 定好这样一个体系,# c o s i i 的高效和简洁的特点才能够极大的发挥出来。 开源软件是当今计算机工业界最具活力的领域,例如l i n u x 这个公开了源代 码的类u n i x 操作系统在服务器市场上已经与许多大公司的产品分庭抗礼,而且 日趋上风。t i mo r e i l l y 先生曾说过一句名言:“开源软件是计算机工业最宝贵的 财富”。由于开源软件公开了源代码,因此它对尚处在童年的中国计算机工业界的 意义尤其重大。站在巨人们的肩膀上的每一位想从事软件事业的人都会从中获得 巨大收益,极大地开阔眼界;每一个软件企业都可以从中汲取营养,在激烈的市 场竞争中找到低成本、灵活、高性能的解决方案。在c o s i i 的设备驱动框架的 构造过程中,我们应该积极的借鉴开源软件这个宝库的资源,取长补短,通过适 当剪裁修改,为构造p c o s i i 驱动框架所用。 2 第一章引言 1 2 嵌入式系统设备驱动研究现状 从广泛收集的论文资料来看,对嵌入式设备驱动的研究主要集中在嵌入式 l i n u x 领域。p c o s i i 内核下的设备驱动的研究主要集中在具体设备的驱动程序 的设计,极少涉及驱动框架的研究。 对于驱动框架的研究主要参考l i n u x 、v x w o r k s 和w i n c e 等操作系统的设各管理 部分。另外特别值得借鉴的是一个由国内程序员黄燕平先生开发的t r t o s 嵌入式操 作系统。这款操作系统在t , c o s i i 内核的基础上,从硬实时性、任务间通信机制、 设备驱动框架、内存管理等各个方面进行了大量的改进,而且针对软件工程化的 需要,提出了一套新的代码组织方式。其设备驱动框架的重点是改进系统的实时 性,最终满足硬实时的要求。 高层设备驱动中占有比较重要地位的是文件系统与网络协议栈。这两种驱动的 应用十分广泛,对它们的研究也一直是人们关注的热点。在开源软件中,有很多 这样的资源可以学习借鉴,例如y a f f s 日志文件系统和l w l p 协议栈。 人们对设备驱动的研究还从多个方面进行着,例如,为了提高设备驱动的可移 植性而对设备抽象层的研究;为了实现代码自动化的目标,而进行的设备驱动的 构件化研究;为了实现设备驱动的标准化,有三个分离的专门兴趣小组:统一驱动 接口( u d l ) 组、智能输入输出( l 2 0 ) 组和嵌入式系统软件环境( e s s e ) 组进 行着研究工作。 1 3 课题任务 本课题属于自拟课题。针p c o s i i 没有自身的设备驱动框架这一现状的不 足,在本文中设计了一个设备驱动的框架,并对驱动开发的方法进行了讨论。 本课题的实验环境是上海航宏高科的a e d k - c 3 3 s t a r 开发板,微控制器芯片 采用e p s o n $ 1 c 3 3 2 0 9 ,还包括液晶显示和键盘,和p c 通信的r s 2 3 2 接口,集 成开发环境为e p s o nc 3 3t o o l s 。 1 4 论文安排 第一章引言部分,阐述课题背景、意义以及当前研究现状,最后概述了本文 的任务和论文内容安排。 3 电子科技大学硕士学位论文 第二章对设备驱动开发进行概要的介绍。首先对设备驱动程序的功能及组成 进行说明,然后对当前一些主流的操作系统的驱动管理开发等进行了研究,最后 总结了设备驱动开发的各种方式和开发流程。 第三章包括p c o s i i 的工作原理、开发环境说明。以及“c o s i i 在开发平台 上的移植。 第四章是设各驱动框架的设计与实现。分为底层设备驱动框架和高层设备驱 动框架两个部分进行设计。最后讨论了“c o s i i 中设备驱动实时性的问题。 第五章研究了嵌入式领域的存储介质,对传统的集中索引文件系统与日志文 件系统进行了比较研究,详细研究了日志文件系统y a f f s 的设计原理。 第六章对y a f f s 文件系统进行裁剪并移植到p c o s i i 环境中。 第七章对全文进行总结,并提出本文的一些问题和下一步的研究任务。 4 第二章设备驱动开发概述 2 1 设备驱动概述 第二章设备驱动开发概述 设备驱动程序是直接与硬件打交道的软件,用户程序或操作系统通过调用设 备驱动程序提供的服务来访问硬件设各。 无论是在p c 机还是在嵌入式系统中,设备驱动程序都占有重要的地位。尤其 是在嵌入式系统中,需要为各式各样的硬件设备编写驱动程序,同时由于硬件设 备本身也在快速地发展,所以设备驱动程序的开发在嵌入式系统的开发过程中占 据的地位更加重要,可以说驱动程序的质量高低和开发进度极大地制约着整个系 统的质量和开发进度。 2 1 1 设备驱动程序的主要功能 设各驱动程序通常有六个主要功能:( 1 ) 对设备进行初始化。初始化的目的是使 设备处于某种工作状态,以便用户程序访问该设备。如p c i 卡初始化包括获得p c i 设备的总线号、设备号、功能号、获得p c i 设备配置空间的配置、及中断线等。( 2 ) 打开设备。即是查询用户指定的设备,实现从应用层的设各名到内核的设备句柄 的转换。( 3 ) 关闭设备。即释放设备资源。( 4 ) 从设各上接收数据并提交给系统。即 通常所说的读操作( r e a d ) 。接收外部传输来的数据,采用的方式有查询方式、中断 方式和d m a j y 式。( 5 ) 把数据从主机上发送给设备,即写操作( w , i t 0 。一般系统主 动调用写操作来发送数据,有时也采用中断方式发送数据。( 6 ) 对设备进行控制操 作。即在使用设备过程中,有时根据应用的需要对设各进行控制。如u s b 协议中 专门有控制传输通道来实现对u s b 的控制。 2 1 2 设备驱动程序的组成结构 按照与设备的紧密程度,可以将驱动程序划分分为两层:高层驱动( 设备无关 层) 与底层驱动( 设备相关层) 。也可以进一步划分为四层:设备中断处理程序; 设备驱动程序;设备无关驱动程序;用户空间的i o 软件。这种层次结构如 图2 1 。四层划分模型中的前两层属于底层设备驱动,后两层属于高层设备驱动。 5 电子科技大学硕士学位论文 用户层i o 设备无关驱动( 文件系统等) 设各驱动程序 中断处理程序 硬件 图2 - i 设备驱动的层次结构 设备相关层与无关层划分的思想依据主要在于可移植性和可扩充性处于同样 的考虑,甚至还可以对设备相关层进一步划分出设备抽象层和驱动程序层:不同 计算机系统所配备的外设可能是不同的,一个计算机系统在不同时刻所配备的外 设的数量和类型也可能是不同的,而且设备技术也在不断的发展。因此,将与设 备相关的代码和与设备无关的代码隔离开,更有利于实现这个目的。 i 中断处理程序( i n t e r r u p ts e r v i c er o u t i n e s ) 中断处理程序是当外部中断发生时被调用,通过这段服务程序从设各读写数据 或者向应用进程发送消息。 2 驱动层 设各驱动层的任务,是把上层提交的逻辑操作最终转化为物理操作( 如,将设 备名转化为端口地址) ,将逻辑记录转化为物理记录,以及与之相关的错误处理, 输入输出数据的编码转换处理,相关的挂起、排队、唤醒、调度,还有其他的一 些与硬件相关的处理工作。 一个设备驱动程序通常由若干个子例程组成,每个子例程执行一种物理操作, 如数据的读、写、控制等操作。 驱动层的具体工作过程如下: ( 1 ) 确定是否执行请求的任务。如果驱动程序在请求到来时空闲,它就立刻响应 该请求,否则将该请求放入队列,相机处理。 ( 2 ) 根据请求的任务,确定将要向设备发出什么命令,以及按照什么样的次序执 行。 ( 3 ) 向设备控胄器发出命令。 ( 4 ) 等待物理操作的完成和检测物理设备操作是否正确。 6 第二章设备驱动开发概述 驱动程序在发出命令后有两种情况:由于硬件设备工作速度较慢,驱动程序 进入睡眠状态,当设备工作完毕后通过中断将其唤醒。设备操作可以立刻完成, 或者采用了缓冲,这时驱动程序可以立刻返回。 在操作完毕后,必须进行错误检测。对于进入睡眠状态的驱动,错误检钡4 在中 断服务程序中进行,否则立刻检查。错误的检测应当尽可能地在接近硬件的地方 处理,仅当底层驱动不能胜任时,才将它交给高层。 ( 5 ) 中断发生时调用驱动层的函数做后续处理。检查结果状态和传送结果数 据。可能的错误处理。如果有等待此操作而睡眠的进程,则唤醒它。若队 列中有别的请求,则挑选其一加以启动,否则该驱动程序进入睡眠状态,等候下 一请求的到来。 3 设备无关层 设备无关层的工作包括以下内容: ( 1 ) 把设备的符号名映射到相应的具体设备和驱动程序上;根据设备的使用情况 为用户请求分配设备或者释放设备;检测用户是否有使用某种设备的权利;当设 备忙或该设备为独占设备而已经有另一个用户使用时,让申请该设备的用户进入 等待状态:当有多个用户等待同一个设备时,通过调度算法决定让某个用户先使 用。 ( 2 ) 对输入输出缓冲区的管理,包括缓冲区的分配与释放。 ( 3 ) 对由驱动层给出的错误进行进一步处理,生成错误报告返回给用户。 2 1 3 设备驱动程序的特点 设备驱动程序将操作系统和设备链接起,使得操作系统能够识别设备,并为应 用程序提供设备服务。设备驱动软件一般具备以下几个特点:( 1 ) 可配置性,即设 备驱动软件可以根据实际情况加载和不加载。( 2 ) 模块化:设备驱动根据功能等的 不同划分为不同的模块进行设计。( 3 ) 可扩展性,即如果操作系统要做到少改动甚 至不改动就可应用到不同的系统中,操作系统必须具有把一个不可预知的设备加 迸系统的功能。由于各个系统的设各千差万别,而且新的设备也层出不穷,所以 一个好的设备驱动的扩展能力不仅可以把现有的新设备加到系统中,而且要着眼 于未来可能的出现的新的设备。( 4 ) 可重入性,是指在上次程序执行完成之前,又 可以重新进入的一种特性。( 5 ) 实时性,作为嵌入式系统的外围设备,要做到及时 响应和处理,特别是多个设备的同时响应,一方面要求在操作系统内核上要有良 7 电子科技大学硕士学位论文 好的调度机制,另一方面在设备的驱动软件上也要求有好的高效的代码,来实现 实时性的要求。 2 1 4 设备驱动程序与内核的关系 在嵌入式操作系统中,设备驱动与内核之间可能有以下三种关系: 第一,在传统操作系统中,设备通常作为内核的一部分存在,且运行在较高 的优先级和特权级,同时设备部分与操作系统的任务管理、存储管理、调度、中 断管理、任务问通信等内核部分以及硬件有着千丝万缕的联系,这使得操作系统 设备的部分异常复杂。从嵌入式操作系统的角度,这种核内驱动的结构,具有以 下问题:( 1 ) 内核映像太大:除了驱动程序本身所占的内存空间,驱动程序在核内, 相应的缓冲区也就在核内,增大了内核的体积。( 2 ) 核内驱动需要内核预留较大的 空间:由于内核的空间一般是静态分配为保证驱动程序的正确加载必然需要更多 的内核空间。( 3 ) 灵活性差,不易扩展:增加新的驱动程序需要重新编译整个内核。 女h l i n u x ,虽然它采用模块机制也能实现模块的动态加、卸载,但其模块机制本身 就十分复杂,在微内核结构中难以实现。( 4 ) 对内核的稳定性有危害:由于驱动程 序在核内,所有的操作不受任何限制,因此驱动程序中产生的错误容易造成系统 崩溃。( 5 ) 核内驱动调试困难:很少有调试工具能调试系统内核。( 6 ) 对程序员编写 新的设备驱动程序提出了很高的要求:驱动程序属于底层硬件编程,需要应用大量 的特权函数或较复杂的系统调用,如设备指令、内存映像、核内核外地址空间转 化、中断处理例程等,设计驱动程序需要对操作系统的内核有较深入地了解。但 由于核内驱动是不可抢占的,其运行速度较快。 第二,核外技术是目前嵌入式实时操作系统体系结构研究中的一个热点问题。 就是将设备驱动程序移出到内核外部,在用户级直接控制设备,完成对设备的读 写操作以及设备缓冲区的管理。具有微内核性、灵活性、高效性和易于开发等特 点。能够克服核内设备方法的不足,但实时性不如核内设备方法。 第三,对: 翱c o s i i 这样的系统本身就没有区分用户层与核心层,所以驱动 程序、操作系统核心、应用任务都是处于同一个特权级上。系统的实时性可以有 可靠的保证,但需要开发者对这个系统有较强的把握,因为开发者对系统具有完 全的操作权限,任何失误都有可能对系统的安全带来严重的破坏。 8 第二章设备驱动开发概述 2 2 操作系统设备驱动调研 2 2 1l i n u x 系统下的设备驱动 1 概述 l i n u x 作为u n i x 的一个变种,它继承了u n i x 的设备管理方法,将所有的设备 看作是文件,通过文件系统层对设备进行访问。所以在l i n u x 的框架结构中,与设 备相关的处理可以分为两个层次,即文件系统层和设备驱动层。设备驱动层屏蔽 具体设备的细节;文件系统层则向用户提供一组统一的规范的用户接口。这种设 备管理方法可以很好地做到“设备无关性”,可以根据硬件外设的更新进行方便 的扩展。比如要实现一个设备驱动程序,只要根据具体的硬件特性向文件系统提 供一组访问接口即可。整个设备驱动层次结构如图2 2 所示。 用户进程 l 文件系统层 i 设备驱动层 l 硬件层 图2 - 2 设备驱动分层示意图 l i n u x 中按照数据组织方式,把设备分为字符设备和块设备。字符设备以字符 为单位组织和传送数据,数据的组织不考虑块结构,也不能单独寻址。块设备以 数据块为单位组织和传送数据,可以对数据进行随机访问。此外,由于网络设各 有其特殊性,系统对它单独处理。 l i n u x 系统用主设备号( m a j o r ) 力 1 次设备号( m i n o r ) 来唯一标识一个设备。相 同主设备号表示同一类设备,次设备号标识同类设备的个数。即主设备号标识设 备对应的驱动程序,次设备号区分具体驱动程序的实例。 2 设备文件接口 9 电子科技大学硕士学位论文 在系统内部,i o 设备的存取操作通过一组固定的入口点来进行。这组入口点 是由每个设备的设备驱动程序来实现的。 字符型设备驱动程序提供以下几个入口点。 ( 1 ) i n t o p e n ( c h a r + f i l e n a m e i n ta c c e s s ) ; ( 2 ) i n tc l o s e ( i n th a n d l e ) ; ( 3 ) i n tr e a d ( i n th a n d l e ,v o i d8 b u f , i n tc o u n t ) ; ( 4 ) i n tw r i t e ( i n th a n d l e ,v o i d b u f , i n tc o u n t ) ; ( 5 ) i n ti o c t l ( i n tf d ,i n tc m d ,) ; 这些由设备驱动程序提供的入口点由一个称为f i l eo p e r a t i o n s 的结构体来向系 统进行说明,该结构体位于文件系统层,定义了用户可以对文件所进行的各种操 作,对于设各文件来说,其中某些针对普通文件的操作是不需要实现的。 f i l eo p e r a t i o n s 结构体定义为: s t r u c tf i l e _ o p e r a t i o n s i n t ( + l s e e k ) ( s t r u c ti n o d e + ,s t r u c tf i l e4 ,o f f _ t ,i n t ) ; s i z e _ t ( 8 r e a d ) ( s t r u c tf i l e + ,c h a r ,s i z e _ t ,1 0 f f _ t8 ) ; s i z e _ t ( w r i t e ) ( s t m c tf i l e4 ,c o n s tc h a r + ,s i z e _ t ,1 0 f f _ t ) ; i n t ( 丰r e a d d i o ( s t r u c tf i l e + , v o i d ,f i l l d i r _ t ) ; u n s i g n e di n tr p o l l ) ( s t r u c tf i l e 。,s t m c lp o l l t a b l e _ s t r u c t ) ; i n c ( 8 i o c t l ) ( s t r u c ti n o d e 。,s t r u c tf i l e ,u n s i g n e di n t ,u n s i g n e di o n 曲; i n t ( 掌m m a p ) ( s t r u c tf i l e 。,s t r u c tv m a r e a s t r u c t + ) ; i n tp o p e n ) ( s t m c ti n o d e + ,s t r u c tf i l e8 ) ; f n tp f l u s h ) ( s t m c tf i l e ) ; v o i dr r e l e a s e ) ( s t r u c ti n o d e 。,s t r u c tf i l e 。) ; i n tr f s y n c ) ( s t m c ti n o d e + ,s t r u c td e n t r y8 ,i n t ) ; i n tr f a s y n c ) ( i n t ,s t r u c tf i l e ,i n t ) ; i n tr l o c k ) ( s t r u c t f i l e 。,i n t ,s t r u c tf i l e _ l o c k ) ; s i z e _ t ( * r e a d y ) ( s t m c tf i l e 。,c o n s ts t m c ti o v e c 。,u n s i g n e dl o n g , l o f f _ t 。) ; s i z e _ t ( + w r i t e v ) ( s t r u c tf i l e ,c o n s ts t r u c ti o v e e8 ,u n s i g n e dl o n g ,i o f f _ t ) ; s t r u c tm o d u l e o w n e r ; ) ; 1 0 第二章设备驱动开发概述 其中某些入口函数的作用分别是: ( 1 ) l s e e k ,移动文件指针的位置; ( 2 ) 读操作r e a d ,参数b u f 为存放读取结果的缓冲区,c o u n t 为所要读取的数据长 度。返回值为负表示读取操作发生错误,否则返回实际读取的字节数。对于字符 型,要求读驭的字节数和返回的实际读取字节数都必须是i n o d e i b l k s i z 的倍数。 ( 3 ) 写操作w r i t e ,进行与r e a d 类似的操作但方向相反。 ( 4 ) r e a d d i r ,此函数仅用于目录操作,所以对设备文件来说,该操作为n u l l 。 ( 5 ) p o l l 函数用来查询设备是否可读或可写,或是否处于某种特殊状态。 ( 6 ) i o c t l ,进行读、写以外的其它操作,参数c m d 为自定义命令。 用于把设备的内容映射到地址空f 司m m a p ,一般只有块设备驱动程序使用。 ( 8 ) o p e n ,打开设备准备进行操作。 ( 9 ) r e l e a s e ,b r l c l o s e 操作。 ( 1 0 ) f l u s h 操作的调用发生在进程关闭设备文件,描述符副本的时候,f l u s h 操作 应该执行( 并等待) 设备上尚未完成的操作。 设备驱动程序所提供的入口点,在设备驱动程序初始化的时候向系统进行登 记,以便系统在适当的时候调用。此外,在l i n u x 系统里,还通过调用r e g i s t e rc h r d e v 向系统注册字符型设备驱动程序。 3 中断处理 在设备驱动程序向内核注册了中断服务程序后,中断到来时的调度就由内核 的中断处理子系统来完成了。中断处理子系统的一个主要任务就是根据中断号找 到正确的中断处理代码。 在每一个设备的中断处理程序中,首先要根据中断状态寄存器来判断产生中 断的原因,比如是发生了错误还是完成了一个请求操作等。确定了原因后,首先 执行中断处理程序的上半部,上半部是在屏蔽中断的上下文中运行,用于完成关 键性的处理动作,要求应该在很短的时间内完成,然后退出中断,以尽可能短的 屏蔽中断。下半部主要是处理那些相对来说并不是非常紧急的,比较耗时的任务, 所以不在中断服务上下文中执行,而是在退出中断后,由系统选择时机进行调度 执行。 2 2 2v x w o r k s 系统下的设备驱动 在v x w o r k s 系统中,设备分为:字符设备、块设备、虚拟设备、控制监视设备 电子科技大学硕士学位论文 和网络设备,同时设备也像u n i x 系统中一样被当作文件来管理。在v x w o r k s 应用 程序中,系统访问设备是通过v x w o r k s 的i o 子系统操作的。对于字符设备和块设 备v x w o r k s 的i 0 系统提供一些标准的i 0 接口函数,网络设备则提供另一套接口函 数。在v x w o r k si o 系统中,设备驱动程序需要定义一个被称为设备头( d e vh d r ) 的数据结构。在这个结构中包括了设备名称和为设备所服务的驱动程序索引号。 系统中所有设备的设备头都保存在一个叫做设备列表的链表结构中,构成这个链 表的结点的数据结构称为设各描述符,设备头是设备描述符的起始部分,设备头 数据结构一d e vh d r 原型如下: t y p e d e f s t r u c t 广d e vh d r 所有设备结构的设备头, d en o d en o d e ; r 设备连接的列表节点 s h o r td r v n u m ; 广设各的驱动程序索引号 c h a r * n a m e ;p 设备名称 d e vh d r : 设备描述符结构: t y p e d c fs t r u c tx x d e v d e vh d rd e v h d r ; u i n t 3 2r e g b a s e : u i n 1 3 2u s e r b a s e ; b o o li s c r e a t e ; b o o l i s o p e m b o o li s w r i t e n o t s e n d 广设备结构, ;本地寄存器基地址t 广板卡内存基地址t , 广通道创建标志, 事通道打开标志, b o o l m y d r v d a t a a v a i l a b l e ; b o o l m y d r v r d y f o r w r i t i n g : x x d e v ; 只写缓冲标志, s 设备可读标志t s 设备可写标志* 1 v x w o r k s 的i o 系统结构: v x w o r k s 中f o 系统与设备驱动程序之间的层次关系非常明显。对于块设备来 说,应用程序通过i o 系统访问文件系统,而后由文件系统调用驱动程序访问设备, 而其他的非块设备则是f o 系统直接调用驱动程序访问设备。应用程序所看见的设 备都是以文件名或文件描述符的形式存在,设备驱动程序与文件名或文件描述符 1 2 第二章设备驱动开发概述 无关。设备驱动程序与i o 系统的通信都是通过设备描述符和设备i d 来实现的。对 于一个字符设备来说驱动程序包含7 种基本加操作函数:o p e n o 、c r e a t 0 、r e a d 0 、 w r i t e 0 、i o c t l 0 、c l o s e 0 和r c m o v e 0 。 应用程序、f o 系统和设备驱动程序关系的实现是通过设备列表、驱动程序描 述表和文件描述符表来完成的,这三张表构成了应用程序与设备之间的桥梁。 设备列表具体来说,是一个双向链表,每当添加设备时,系统都会向链表中添加 新的环节,设备列表的大小是动态的,可以任意向其中添加新设备,不论是否访 问同一个驱动程序,每一个设备都会占用链表的一个环节。设备列表的作用是为 o p e n 0 、c r e a t 0 和r e m o v e o i 蟊数提供文件与设备的连接。当应用程序开始执行这三个 函数中的一个时,i o 系统会将与文件名参数最匹配的设备返回,用于应用程序对 文件的其他操作。 驱动程序描述表由驱动程序索引号和i 0 操作函数表项组成,表中填入每个设 备相应操作的函数入口地址和驱动程序索引号。 文件描述符表是o 系统将文件描述符与驱程序、设备对应起来的手段。文件 描述符表由文件描述表、驱动程序索引号和驱动程序指定的设备号三个表项组成。 文件描述符的索引是由o p e n 0 或c r c a t o 返回的文件描述符。 2 v x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2020-2025年中国浮动装置行业竞争格局分析及投资规划研究报告
- 2025年中国内蒙古园林绿化行业发展监测及投资战略研究报告
- 华洪新材2025年财务分析详细报告
- 2025年中国儿童饼干行业发展前景预测及投资方向研究报告
- 中国小程序市场竞争策略及行业投资潜力预测报告
- 2025年 物业管理师三级考试练习试题附答案
- 中国双机容错软件行业竞争格局及市场发展潜力预测报告
- 2025年 陇南徽县消防救援大队招聘政府专职消防员考试试题附答案
- 济南低压配电柜项目可行性研究报告范文参考
- 粘着剂行业深度研究分析报告(2024-2030版)
- 降低制粉单耗(集控五值)-2
- 电力分包项目合同范本
- 2024年急危重症患者鼻空肠营养管管理专家共识
- 2024年法律职业资格考试(试卷一)客观题试卷与参考答案
- 国家开放大学《Web开发基础》形考任务实验1-5参考答案
- 山东师范大学学校管理学期末复习题
- 《进一步规范管理燃煤自备电厂工作方案》发改体改〔2021〕1624号
- LS-DYNA:LS-DYNA材料模型详解.Tex.header
- 大学生体质健康标准与锻炼方法(吉林联盟)智慧树知到期末考试答案章节答案2024年东北师范大学
- 新疆警察学院面试问题及答案
- 小学三到六年级全册单词默写(素材)-2023-2024学年译林版(三起)小学英语
评论
0/150
提交评论