




已阅读5页,还剩59页未读, 继续免费阅读
(信号与信息处理专业论文)基于高速图像采集卡的图像处理.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子科技大学酾上论戈 摘要 图像采集卡作为信号与信息处理系统的关键功能部件,其重要性越来越受到广泛; 注和重视。p c i 总线是广泛应州的先进计算机局部总线,它的突出特点是数据传输速度 本设计采用专用p c i 接口芯片实现高性能的图像采集卡,成功解决了当前高分辨率的e 像信号采集速度的问题。 本文的主要内容包括:数据采集的原理及高速度的采集芯片a d 9 8 8 4 a 的介绍; p c 协议和p c i 专用接口芯片c y 7 c 0 9 4 4 9 p v 的介绍;采集卡的硬件实现,阐述了s d r a m 的| 制时序及f p g a 。出片e p i c f i 的功能模块的划分和游程编码算法在e p l c 6 中的实现; w i n d e w s 2 0 0 0 下采集 驱动程序的开发;应用程序的开发。 【关键词】数据采集,p c i 总线,驱动程序,游稃编码 电子科技大学硕士论文 a b s t r a c t i m a g e c o l l e c t i o n c a r d ,w h i c hp l a y s a n i n c r e a s i n gi m p o r t a n t r o l ei n s i g n a l a n d c o m m u n i c a t i o ns y s t e m ,h a sb e e na p p l i e di nm a n yd i f f e r e n tf i e l d sa n db e c o m em o r ea n dm o r e p o p u l a r p c i ,ak i n do fw i d e l yu s e db u sl i n e so fc o m p u t e r , i sa b l et op r o v i d eh i g hd a t e t r a n s p o r t i n gs p e e d a na p p l i c a t i o ns y s t e mh a sb e e nd e s i g n e db yu s i n gt h ep r o f e s s i o n a lp c i i n t e r f a c ec m o s c h i p t or e s o l v et h ep r o b l e m so fh o wt oi m p r o v et h ec o l l e c t i n gs p e e do f h i g h r e s o l u t i o n i m a g e s t h i ss y s t e mc a nb eu s e da s a ni m a g ec o l l e c t i o nc a r dw i t he x c e l l e n t c a p a b i l i t i e s t h ed i s s e r t a t i o nm a i n l yc o n t a i n sf i v ep a r t s a tt h eb e g i n n i n g ,t h ed a t ac o l l e c t i o nt h e o r y a n dt h eh i g h s p e e dc o l l e c t i o nc h i pa d 9 8 8 4 aa r ei n t r o d u c e d ,a n dt h e n ,t h ep c i p r o t o c o la n d t h ep r o f e s s i o n a lp c ii n t e r f a c ec h i pc y 7 c 0 9 4 4 9 p va r ei n d i c a t e d a f t e rt h i s ,t h ec o m p l e t i o no f t h ec o l l e c t i o nc a r dh a r d w a r ei sd e m o n s t r a t e d ,i n c l u d i n gt h ec o n t r o l l i n g t i m i n gi ns d r a m ,t h e h m c t i o n s e g m e n t a t i o n si nf p g ac h i pe p i c 6 a n dt h er u nl e n g t hc o d i n g c o m p l e t i o ni ne p l c 6 f o l l o w i n gt h a t ,t h e c o l l e c t i o nc a r dd r i v e ri s d e v e l o p e d i nw i n d o w s2 0 0 0 f i n a l l y , t h e d e v e l o p m e n t o f t h i sa p p l i c a t i o n p r o g r a m m e i sr e p r e s e n t e d k e y w o r d s d a t aa c q u s i t i o n ,p c ib u s ,d r i v e r , r u n _ l e n g t hc o d i n g i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:鏊丝塾日期:沪厂年厂月f | 日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) , 签名:鳖丝垒导师签名:五匡鱼 日期:加移年厂月f 日 电子科技大学硕士论文 第一章 弓 1 1课题的应用背景及意义 口 该课题来源于华控股份有限公司,是对船用雷达的信号进行采集、处理 和保存。 根据国家海事局出台的规定,所有营运的大型出海船只都必须安装雷达 来收集并保存船只运行时的状态信息,以在出现海难时,对事故进行分析、 评定。其功能如同飞机中装的黑匣子。而目前装备有上述设备的船只,数量 及其有限,就是说在今后此领域将有一个广阔的市场,这为本课题的研发提 供了良好的环境和条件。 该课题的任务是开发高速的图像采集卡。用来对船用雷达的图像信号进 行采集、处理和保存。 1 2国外高速图像采集卡的动态 该课题要求可采集多种分辨率( 6 4 0 x 4 8 0 、8 0 0 x 6 0 0 、1 0 2 4 x 7 6 8 、1 2 8 0 x 1 0 2 4 ) 的图像,目前国外有很多实现该功能的采集卡,而且达到的性能指标也很高。 对于1 0 2 4 x 7 6 8 的图像,每秒钟输出的帧率可达到1 6 帧。 但是,国外高速图像采集卡的价格也是昂贵的,通常的费用都在万元以上, 限制了其在国内的应用。 1 3本文的主要工作 本论文的主要工作是开发基于p c i 总线的高速图像采集卡。完成f p g a 的 中程序,用v e r i l o g 语言编写,主要实现逻辑的控制和游程压缩编码算法。 开发该图像采集卡的驱动程序。完成的工具包括d d k 、d r i v e r s t u d i o 和 v c + + 。 开发客户端程序。该程序是基于对话框的,以方便用户进行人机交互操作。 完成的工具是v c + + 。 电子科技大学硕士论文 第二章数据采集理论及专用芯片 2 1 数据采集基本理论阻1 数据采集是指将各种模拟量进行采集、转换成数字量,再进行存储、处理、 显示或打印的过程。相应的系统称为数据采集系统。 数据采集的基本理论包括采样定理、量化与量化误差、编码、数据采集的 有效位数等。下面分别加以讨论。 2 1 1 数据采集过程 连续的模拟信号x ( t 1 ,按一定时间间隔t s 采样得到离散时间信号 x s ( n t s ) ,再经过量化变为量化信号x q ( n t s ) ,最后编码转换为数字信号x ( n ) 。以 上转换过程可以用图2 1 来表示。对于高速a d ,由于采样过程并不是理想 的,保持电路可能会存在着孔径效应而影响编码及其最终数据的可靠性。为此 设计高速数据采集电路宜选用宽带a t d 。 o o o 0 0 10 1 0 0 ll 1 0 0 l o l 1 0 1 i o l o0 0 1 图2 1 数据采集过程 电子科技大学硕士论文 2 1 2采样 采样定理指出,对一个具有有限频谱x ( f ) 的连续信号x ( t ) 进行采样, 当采样频率f s 2 f m a x ( f m a x 为信号的最高频率) 时,由采样得到的采样信号 x s ( n t s ) 能无失真地恢复原来的信号x ( t ) 。 2 1 3 量化与量化误差 1 量化 量化就是把采样信号的幅值与量化单位比较。 量化单位q 定义为量化器满量程电压f s r ( f u l l s c a l er a n g e ) 与2 ”比; q = f s r ( 2 “) ( 2 1 ) 其中n 是量化器的位数。显然,量化器的位数越多,量化单位越小,a d 的 精度就越高。 在实际电路中,量化和编码是同时进行的。编码是把量化信号的电平用数 字代码表示出来,最常用的编码形式是二进制编码。 2 量化方法 ( 1 ) “只舍不入”的量化 所谓“只舍不入”量化,是指信号幅度小于量化单位的部分,一律舍去。 如图2 2 所示。 5 q 4 q 3 q 2 q q ot s2 t s3 t s4 t s5 y s6 t s7 t s 5 q 4 q 3 q 2 q q ot s2 丁s3 t s 4 t s5 t s 6 t s 7 t s 赶也线殴代表鲁士的部分 闰2 2 “只舍不入”量化过程 ( 2 ) “有舍有入”的量化 “有舍有入”的量化是将采样信号幅值与量化电平相比较,如果它们的差 值小于q ,2 ,则将这部分舍去,若大于或等于q 2 ,则将这部分计入。如图2 3 所示。 一匪 一 一 一一 一 一 一 一 一4 _ 1 j猛 一 一 一 歹一 一 一一一一 l e 幽 电子科技大学硕士论文 当o x s ( n t s ) l 弦弘珲豹坯磁章抛轻蕊率劢诼劢 圈i r a n s i t i o n i n c d a t a 髟刀d o n l c a r e 图45 读操作的典型时序图 电子科技大学硕士论文 w r i t e 与r e a d 操作相同,在一个b a n k 被激活后经过t r c d 时间,就可以执行写操 作了。如果是连续写数,在发出w r i t e 命令的同时,b a o 和b a i 的值用来选择 要操作的b a n k ,地址线a o a 8 ( 1 6 位数据的情况) 的值用来选择开始的列地址。 a i o 的值决定是否需要自动p r e c h a r g e 这个功能,如果选用,那么在写完后芯 片会自动执行内部p r e c h a r g e 的命令,在这个内部p r e c h a r g e 命令没有执行完 之前,对该b a n k 的任何操作( r e a d ,w r i t e ,p r e c h a r g e ,a c t i v e ) 都是无效的; 如果不选用自动p r e c h a r g e 功能,那么被访问的行在写完后仍保持“打开”的 状态可供下次读写。 在发w r i t e 命令的同时要给出输入数据。典型的写时序如图4 6 所示。 t ot 1t 2 t 3 c 似厂 j _ 叫厂一l 厂l :。i。i : i l c o m m a n d ( 堕 c 叵) 工互) ( j 三 d o 园t r a n s i t i o n i n gd a t a 囫d o n t c a r e 图4 6 写操作的典型时序圈 b u r s tt e r m i n a t e 该命令用来停止固定长度或满页的突发读写。当b u r s tt e r m i n a t e 命令发 出时,上一个r e a d 或w r i t e 命令产生的操作将会被中止,如图4 7 所示。 t ot 1t 2t 3t 4r s1 6i ) c t x 厂1厂j厂r l1l 1i 1 c 1 。”n n 。一( 二i i i ) j 三二) ( j j 丑:i 三二) ( 三氢薹五 ( _ _ j 一( - 葛) ( - :曩i ( i 1i ;? 叫c b q l 一sa 彝) 磁弦掩兹殄弦觋残率勿坯磁减宓羽砌 ; : ; n 。 一 唪銎娶孽墨淬夏戮萋要至! “”3 圈- n a n s l t i 。一。d a a 囫。w t e 图4 7 中止个连续读操作 电于科技大学硕士论文 p r e c h a r g e 该命令把一个或所有b a n k 中已经激活的行释放掉,使它再次处于空闲状 态,以便可以激活同一b a n k 中其它的行。p r e c h a r g e 命令也会中止上一个r e a d 或w r i t e 命令产生的操作。 在发出p r e c h a r g e 命令时,由b a o 和b a l 的值用来选择b a n k ,并同时由 a 1 0 的值来判断是对所选择的单个b a n k 进行操作还是对所有的b a n k 进行操作。 当p r e c h a r g e 命令执行后,要经过r 。,时间才可以再次对该b a n k 执行 a c t i v e 命令。图4 8 和图4 9 分别是在r e a d 和w r i t e 命令后执行p r e c h a r g e 的时序。 图4 8r e a d 命令后用p r e c h a r g e 命令的时序图 a u t 0r e f r e s h 该命令每发一次产生一次刷新,是非连续性的,所以刷新时间一到就应该 发出一次。所有被激活的b a n k 必须执行p r e c h a r g e 命令后等待k 时间后才能 执行a u t or e f r e s h 命令。 刷新地址是内部自动产生的。在执行a u t or e f r e s h 操作之前,所有的b a n k 都必须处于空闲状态。 一 m 一 一 嘏 一 w 电子科技大学硕士论文 图4 9w r i t e 命令后用p r e c h a r g e 命令的时序图 l o a dm o d er e s i g l l 。e r 该命令通过a o a 1 1 的值来配置模式寄存器,只要没有掉电或被重新配置, 寄存器中的值会一直保持不变。模式寄存器是用来定义s d r a m 的具体操作模式 的,内容包括定义突发读写的数据长度,突发的类型,c a s 的大小,运行模式和写 模式等,如图4 1 0 如示。 模式寄存器的m 0 m 2 定义了突发读写的数据长度,m 3 定义突发的类型, 有顺序读写和交叉读写两种选择,m 4 m 6 定义c a s 的大小,m 7 和m 8 定义运行 模式,m 9 定义写模式,m i o 和m 1 l 为保留位,无定义。 。 | | 。 一 。 勰 m n 电子科技大学硕士论文 矗瓣诵弘f 麓镒镒稿萼叠, r 。3 。茹。i & j 矗警。k 蠢0 遴邋誊7 誊委i j 1 。d 日n l _ “ a i io m * 0 d 1 n i 。 【j 赫j4 一j “哪峨删潮脚一 l 。lp m q d “”nl m 、 s n g l el 胜m i o n 舡j 薹i 惹滋蓑 _ ,l 隰嗣 1 1o l h 图4 一1 0 模式寄存器的定义 2 s d r a m 的初始化 s d r a m 必须在上电后按照一定的流程进行初始化。一旦对s d r a m 供电并且 提供稳定的时钟后,需要等待l o o u s 的时间,在这段时间里只能执行n o p 命令。 l o o u s 之后,应该执行p r e c h a r g e 命令,并且是对所有的b a n k 操作,所以要求 当时所有的b a n k 都处于空闲状态。紧接下来,等待产生两次a u t or e f r e s h 后, 就可以对模式寄存器进行配置了。执行l o a dm o d er e s i g t e r 命令后等待f 的 时间,初始化流程就算结束了。 4 2 4 数据压缩处理模块 该系统将用于船舶运行状态信息的采集和处理。要保存的数据量是相当巨 大的。在存储设备给定的情况下,为了保存尽可能多的数据,该设计将对原始 数据进行压缩处理。压缩过程是在数据从s d r a l l i 读出来后,写入p c i 总线控制 器的双口r a m 中时完成的,这样同时也减小了传到p c 机上的每帧图像的数据 量,从而减少了每帧图像的传输时间,可以有效的提高图像的采集帧率。 m i_ltllt*llt”llt“il_ltm。jt m ii, n llt地i-t【丫 m il-,llt 皇王型堡奎兰堡圭堡奎 数据压缩处理模块就是完成这一功能,实现有效的数据压缩算法。 1 压缩算法选择 图像压缩算法种类繁多,有无损压缩和有损压缩两大类。在这两大类中又 分别下分了许多种类。应此,选择什么样的算法是该设计对数据进行处理的第 一步,一旦算法选定,接下来就可以在硬件中加以实现。 该设计中要保存的信息不能有丢失,必须能够完全恢复采集的原始数据, 才能够正确的反映船舶在各时期的运行状况。因此就不能使用有损压缩算法, 我们只能选用无损压缩算法。在图像处理中用的比较多的无损压缩算法有霍夫 曼编码和游程编码等。 霍夫曼编码 无损压缩的编码方法中,霍夫曼编码是一种较有效的编码方法。霍夫曼编 码是霍夫曼于1 9 5 2 年为压缩文本文件建立起来的,它的基本原理是频繁使用 的数据用较短的代码代替,较少使用的数据用较长的代码代替,以达到缩短平 均码长,从而实现数据的压缩。 霍夫曼编码采用以下方法进行:首先将信源符号按其出现概率的大小顺序 排列,然后把出现概率最小的两个符号的概率值相加,得到一个新的概率。第 二步,把这个新概率看成一个新符号的概率,和其他符号再按概率大小顺序排 列,再把最小的两个概率相加。重复上述步骤,直到最后只剩下两个符号的概 率为止。完成以上概率相加及顺序排列后,再反过来逐步向前进行编码,每一 步有两个各赋予一个二进制码,可以对概率大的赋码元0 ,对概率小的赋码元 1 ,亦可对概率大的赋码元1 ,对概率小的赋码元0 。 霍夫曼编码是一种变字长编码方法。每个数据的代码各不相同。这些代码 都是二进制码,且码的长度是可变的,霍夫曼编码在变字长编码方法中是最佳 的,其码字平均长度很接近信息符号的熵值。 霍夫曼编码的编码效率是相当高的,但在计算霍夫曼编码表时需要对原始 图像数据扫描两遍:第一遍扫描要精确地统计出原始图像中每个灰度值出现的 概率;第二遍是建立霍夫曼树并进行编码。由于需要建立二叉树并遍历二叉树 进行编码,数据压缩和还原速度都较慢。由于本系统对采集速度要求较高,该 设计就不采用此算法。 游程编码 与霍夫曼编码相比,游程编码的原理更加简单,其原理是:将一行中颜色 值相同的相邻象素用一个计数值和该颜色值来代替,例如,有这样几个8 位象 素值o x 5 5 、o x 5 5 、0 x 5 5 、o x 5 5 、o x 5 5 、o x 5 5 和0 x 5 5 ,我们可以用两个字节0 x 0 7 电子科技大学硕士论文 和0 x 5 5 来表示这些数据,从而达到数据压缩的目的。在解码的时候,我们也 能很容易地把它恢复为7 个连续的象素值0 x 5 5 。由此可见,当一帧图像是有很 多颜色相同的区域组成时,采用游程编码的效率是相当高的。 游程编码有一个致命的弱点:如果图像中每两个相邻点的颜色都不同,用 这种算法不但不能压缩数据,反而将使数据量增加。因此,在选用此算法前先 要考虑源图像的特点。该系统将要采集的图像都是很多颜色相同的区域组成 的,因此,采用游程编码是可行的,而且也将是高速、高效率的,能满足该系 统性能上的要求。 2 算法实现 该系统选择了游程编码来实现图像的压缩,下面阐述此算法在所选f p g a 中的具体实现。 在对源图像进行处理时有两种方案:一是对每一象素的r g b ( 2 4 位) 值进 行统一处理;二是对每一象素的r g b 三种原色( 各8 位) 值分别进行处理。 方案一:r g b 三原色统一处理 在总线控制器中一次突发操作采用4 个字节,保存2 4 位r g b 图像一个象 素的颜色值时只需要3 个字节,正好可以余下一个字节作为该象素值的计数值, 计数的最大值为2 5 5 ,数据形式如表4 3 所示。当从s d r a m 读取一个数后,先 与上次读取的象素的颜色值进行比较:如果两次的值相同,同时计数值小于 2 5 5 ,只需对计数值加1 ,而不用向p c i 总线控制器写数;如果两次的值不同, 或者计数值等于2 5 5 时,就将当前的计数值和上次的象素的颜色值合并一个3 2 位的d w o r d ( 第一个字节为计数值,后三个字节为象素值) 型的数写入p c i 总 线控制器的双口r a m 中,同时将计数值重新设置为1 ,开始新一轮计数。 以此进行下去,当读取完s d r a m 中的数据也就完成了压缩的过程。 计数值象素颜色值 1 2 5 5 r ( 0 2 5 5 ) g ( 0 2 5 5 ) b ( 0 2 5 5 ) 表4 3 数据形式 采用这种方案的优点是实现起来比较简单,处理速度快,当源图像中有大 量相同颜色值的象素的连续区域时,压缩效率很明显。当进行数据解压缩的时 候实现起来也很方便:每次读4 个字节的数据,第一个字节是该颜色值象素的 个数,后3 个字节就是颜色值。 电子科技大学硕士论文 但选用此方案,存在一个很大的缺点。当相邻象素间红、绿、蓝3 原色中 一种或两种不同而其它的原色相同时,采用方案一将得不到数据压缩的效果, 相反,会使每一象素增加一个字节的数据量。 方案二:红、绿、蓝分别处理 此方案与方案一的基本思路是相同的。都是用当前读取的象素的颜色值与 上次的数据作比较,根据比较的结果选择是累加计数值还是向p c i 控制器写结 果。不同之处在于这里对r g b 三原色分别计数和作比较。这样做的好处是当相 邻象素间红、绿、蓝3 原色中一种或两种不同而其它的原色相同时,也可以使 数据得到一定的压缩。 此方案实现起来比上一方案稍微复杂。首先,必须区分所得到的颜色值( 8 位) 对应于r g b 三原色中的哪一个,这是在用于计数的那个字节中实现的,也 就是把用于计数那个字节的高2 位作为r 、g 、b 的标志位;再考虑更一般的情 况,即存在大量独立颜色值( 与前后均不相同) 的象素点,为了不使数据显著 增加( 颜色值加计数值) ,影响压缩效果,再设置1 位判断当前字节是计数值 还是颜色值的标志位,此标志位用计数字节的第6 位表示,此位置1 ,表示该 字节后5 位为计数值( 计数值不超过3 2 ) ,置0 表示后5 为值小于3 2 的颜色值; 最后,当r 、g 、b 的计数值相同时,为了减少重复的计数值输出,就以方案一 的方法组织数据,唯一不同的是用作计数的那个字节的最高2 位必须设为 1 1 。根据以上分析,这里设计了多种数据包格式,如图4 1 2 、图4 1 3 和图4 1 4 所示。 76540 图4 1 2 一字节数据格式 类型( 7 6 ) : 0 0 一表示红色( r ) ; 0 卜一表示绿色( g ) ; 1 0 一表示蓝色( b ) : f ( 5 ) : 0 - - 一表示后3 2 位是颜色值,不是计数值; i 51 41 31 2870 图4 1 3 两字节数据格式 类型( 15 14 ) : 电子科技大学硕士论文 0 0 表示红色( r ) ; 0 卜表示绿色( g ) ; 1 0 表示蓝色( b ) ; f ( 1 3 ) : 卜一表示后b i t s ( 1 2 8 ) 为计数值; 3 l3 口2 92 82 4 2 31 61 5870 图4 一1 4 三字节数据格式 类型( 3 1 3 0 ) : 1 1 表示一个完整的象素颜色值( r g b ) ; 经过这样组织数据包后,在进行数据解压缩的时候,首先读取一个字节, 然后由该字节高3 位的来判断当前数据的形式,最终完成数据的恢复。 该设计采用了放案二的思路来实现数据的压缩。 3 算法流程图 图4 1 5 给出了在红色不变化下的编码流程框图,虚线部分表示省去了该 分支流程。 图4 1 5 红色不变化下的编码流程框图 电子科技大学硕士论文 4 压缩仿真结果 图4 1 5 红色不变化下的编码流程框图 圈4 一1 6 压缩仿真结果 电子科技大学硕十论文 4 2 5 仲裁模块 该模块根据用户设定的工作模式,对f p g a 内部各模块进行参数配置,并 对全局时序做出合理的控制。 4 2 6 系统功能仿真 图4 1 7 给出了s i g n a l t a pi i 调试程序的波形图: 4 3小结 图4 17 仿真波形 本章分析了硬件系统的组成,及f p g a 中的模块划分。重点阐述了s d r a m 的操作和f p g a 内部数据压缩算法的实现。 下面给出了压缩前后的效果图: 例4 18 源图 图4 1 9 压缩后的y c g 文件图4 2 0 解压的图像 图4 1 8 是压缩前的源图像( 8 0 0 x 6 0 0 ,大小为1 3 7 m ) ,图4 1 9 为压缩后 的y c g 文件( 大小为4 5 5 k ) ,压缩比约为3 :1 ,图4 2 0 为解压后的图像,与源 图比较满足无损压缩的要求。 电子科技大学硕士论文 5 1 驱动程序 第五章驱动程序与应用程序 驱动程序是一种让你的p c 与各种外设、各构成部件与其它硬件通信的程 序。它把标准的操作系统命令转化成特殊的外设专用命令。也有驱动程序被内 置于操作系统来控制内存、缓存与其它p c 基础设备。驱动程序为特定的硬件 所写,它知道该设备的性能,通过它来完成对特定硬件的操作。 该设计开发的图像采集卡是基于p c i 总线的即插即用设备( p n pd e v i c e ) , 开发p c i 接口卡关键的一部分是驱动程序的开发。应用程序必须在驱动程序的 支持下才能工作。驱动程序的基本任务是要完成电源管理、设备识别、获取内 存线形地址和i o 地址以及中断处理。 在这里我们将用到微软公司的全新驱动程序模式w d m ( w i n d o w sd r iv e r m o d e ) 。 5 i 1w d m 技术概述m 不同的操作系统将采用不同的驱动程序模式,在w i n d o w s 9 5 、w i n d o w s 9 8 中驱动程序为v x d 模式,在n t 中为k e r n e lm o d e 模式,从目前的发展趋势来 看,在w i n 2 0 0 0 下的驱动程序模式为w d m ( w i n d o w sd r i v e rm o d e ) 模式。 该设计是在w i n 2 0 0 0 下开发图像采集卡,所以开发的驱动程序是w d m 驱动 程序。w d m 是微软公司全新的驱动程序模式,支持即插即用、电源管理和w m i 技术,它的运行平台是w i n d o w s9 8 2 0 0 0 x p 操作系统。 开发w d m 离不开d d k 的支持,微软公司提供了w i n d o w s9 8d d k ,w i n d o w s 2 0 0 0d d k 和w i n d o w sx pd d k 三个版本,分别对应相应的操作系统。 w i n d o w s2 0 0 0 操作系统包括许多内核模式组件,它们的功能相互独立。 w i n d o w s2 0 0 0 中新增了组件即插即用管理器和电源管理器,它们仅仅支持 w i n d o w s2 0 0 0 驱动程序和w d m 驱动程序。 w d m 驱动程序是一种p n p 驱动程序( 一种遵循w i n d o w s2 0 0 0 即插即用协议 的内核模式驱动程序) ,它同时还遵循电源管理协议。w d m 驱动程序还细分为类 驱动程序( c l a s sd r i v e r ) 和微小驱动程序( m i n i d r i v e t ) ,类驱动程序管理 属于已定义类的设备,微小驱动程序给类驱动程序提供厂商专有的支持。 电子科技大学硕士论文 5 1 1 1内核模式驱动程序特点 内核模式驱动程序的设计目标与w i n d o w s2 0 0 0 的许多目标相符合特别是 系统i o 管理器部分。 平台间的可移植性 内核模式驱动程序的源代码可以移植到所有w i i 1 d o w sn t 平台。w d m 驱动程 序在定义中就规定其源代码可以在w i n d o w s9 8 ,w i n d o w s2 0 0 0 和w i n d o w sx p 之间相互移植。为了实现这种可移植性,驱动程序应该全部用c 语言编写,并 且只使用a n s ic 标准规定的语言元素,避免使用编译厂商专有的语言特征, 避免使用没有被操作系统内核输出的运行时库函数。 硬件和软件的可配置性 内核模式驱动程序应该避免对设备特征或某些系统设置做绝对假设,这些 系统设置会随着平台的改变而变化。为了实现可配置性,首先应该在代码中避 免直接引用硬件;另外,还应该支持w i n d o w s 管理诊断( w m i ) 控件;最后, 应该使用注册表作为配置信息的数据库,这可以使配置信息在系统重新启动后 仍然存在。 永远抢占优先和永远中断 w i n d o w s2 0 0 0 是多任务操作系统,可以为任意多个线程分配c p u 时间。在 大部分时间中,驱动程序例程执行在可以被其他线程( 同一个c p u 上) 抢先的 环境中。因此,驱动程序必须假设在任何时刻都可能失去控制权。 多处理器平台上的多处理器的安全 w i n d o w s2 0 0 0 可以运行在多处理器计算机上,多处理器的存在给设备驱动 程序带来了一个困难的同步问题。w i n d o w s2 0 0 0 提供了一个同步对象一自旋锁 ( s p i nl o c k ) ,驱动程序可以使用它来解决多处理器的同步问题。 基于对象 w i n d o w s2 0 0 0 内核是基于对象的,即驱动程序和内核例程使用的许多数据 结构都有公共特征,这些特征由对象管理器集中管理。驱动程序使用内核部件 输出的服务例程维护对象和对象中的域。 带可重用i 0 请求包( i r p ) 的包驱动i o i 0 管理器和设备驱动程序使用i r p 来管理i 0 操作的具体细节。首先, 某个内核模式部件创建一个i r p ,该i r p 可以是一个让设备执行一个操作、向 驱动程序发送一个命令或者向驱动程序询问某些信息的请求。然后,i o 管理 器把这个i r p 发送到驱动程序的输出例程上。最后,某个驱动程序例程完成该 4 2 电子科技大学硕士论文 i r p ,之后i o 管理器删除该i r p 并向原始请求者报告结束状态。 支持异步i 0 w i n d o w s2 0 0 0 允许应用程序和驱动程序在启动一个i o 操作后继续执行, 而此时i o 操作仍在进行。所以,需要长时间运行的i o 操作应该以异步方式 执行。即当驱动程接收到一个i r p 后,它首先初始化用于管理该i o 操作的任 何状态信息,然后安排i r p 的执行,而该i r p 将在以后的某个时刻完成,最后 返回调用者。 5 1 1 2w d m 驱动程序模型 在w d m 驱动程序模型中,每个硬件设备至少有两个驱动程序。其中一个称 为功能( f u n c t i o n ) 驱动程序,就是我们通常所说的硬件设备驱动程序。它负 责初始化i 0 操作,处理i o 操作完成时所带来的中断事件,为用户提供一种 设备适合的控制方式。 另一个驱动程序称为总线( b u s ) 驱动程序。他负责管理硬件与计算机的 连接。如p c i 总线驱动程序,它检测插入到p c i 槽上的设备并确定设备的资源 使用情况。 w d m 功能驱动程序通常由两个分离的执行文件组成。一个文件是类驱动程 序,它了解如何处理操作系统使用的w d g 协议,以及如何管理整个设备类的基 本特征。另一个文件称为微小驱动程序。类驱动程序合微小驱动程序合在一起 才成为一个完整的功能驱动程序。 一个完整的驱动程序包含许多例程,当操作系统遇到一个i r p 时,它调用 驱动程序中的相关例程来执行该i r p 的各种操作。有些例程是必需的,如 d r i v e r e n t r y 、a d d d e v ic e ,还有d is p a t c h p n p ,d is p a t c h p o w e r 和d is p a t c h w m i 等派遣函数。有些例程与要实现的功能有关,如需要对i r p 排队的驱动程序一 般都有一个s t a r t i o 例程,执行d m a 传输的驱动程序应有一个a d a p t e r c o n t r o l 例程。图5 1 描述了w d m 驱动程序的些例程。w d m 驱动程序的开发者的任务 就是如何选择所需要的例程。 电子科技大学硕士论文 基本驱动程序例程i 0 控制例程派遣函数 s f a r f l 0 o n i n t e r r u p t d p c f o r l s r a d a p t e r c o n t r o l 图5 1w d m 驱动程序例程 5 1 1 3 设备和驱动程序的层次结构 d i s p a t c h p n p d i s p a t c h p o w e r d i s p a t c h w m i d i s p a t c h r e a d d i s p a t c h w r i t e 粕m 驱动程序采用分层的结构模型,如图5 2 所示。图中左边是一个设备 对象堆栈,设备对象是操作系统为帮助软件管理硬件而创建的数据结构。处于 堆栈最底层的是物理设备对象p d o ( p b y s i c a ld e v i c eo b j e c t ) ,设备堆栈的中 间有一个功能设备对象f d o ( f u n c t i o n a ld e v i c eo b j e c t ) ,在f d o 的上面和下 面可能还会有一些过滤器设备对象f i d o ( f i l t e rd e v i c eo b j e c t ) ,位于f d o 上面的过滤器设备对象称为上层过滤器,位于f d o 下面的过滤器设备对象称为 下层过滤器。 操作系统的p n p 管理器按照设备驱动程序的要求构造设备对象堆栈。总线 驱动程序枚举总线上的设备,并为每个设备创建一个p d o 。 创建完p d o 后,p n p 管理器参照注册表中的信息查找与这个p d o 相关的过 滤器和功能驱动程序。系统安装程序负责添加这些注船表项,驱动程序包中控 制硬件安装的i n f 文件负责添加其它表项。这些表项定义了过滤器和功能驱动 程序在堆栈中的次序。p n p 管理器先装入最下层的过滤器驱动程序并调用其 a d d d e v ic e 函数。该函数创建一个f i d o 并把p d o 连接到f i d 0 上。p n p 管理器 继续向上执行,装入并调用每个下层过滤器、功能驱动程序、上层过滤器,直 到完成整个堆栈。 电子科技大学硕士论文 图5 2w d m 设备对象和驱动程序的层次结构 层次结构使i o 请求过程变得更加明了。影响到设备的每个操作都使用 i o 请求包。通常,i r p 先被送到设备堆栈的最上层驱动程序,然后逐渐过滤 到下面的驱动程序。每一层驱动程序都可以决定如何处理i r p 。 不同位置的驱动程序完成不同的功能。总线驱动程序管理计算机与p d o 所 代表的设备的连接,功能驱动程序管理f d o 所代表的设备,过滤器驱动程序用 于监视和修改i r p 流。 5 1 1 4 中断级别i r q l 在w i n d o w s 内核中,中断按其优先等级分为3 2 个级别,表5 一l 中列出了 中断级别的排列顺序。 表中优先等级的排列顺序为从上到下优先级依次提高。在这些中断级别 中,p a s s i v e l e v e l ,a p c l e v e l 和d i s p a t c h l e v e l 这3 级是属于软件中断 级,其他2 9 级均属于硬件中断。任何一个中断总可以被更高级的中断打断。 有时为了避免与硬件发生冲突和竞争,需要这些硬件操作在硬件中断级运行, 以屏蔽硬件中断。 顺序i r q l描述 0p a s s i v e l e v e l常规线程 软件中断 1a p cl e v e l异步过程调用 电子科技大学硕士论文 2 d i s p a t c h l e v e l线程调用,延迟过 程调用 3 2 6d i r q l硬件中断 2 7p r o r i l el e v e l配置文件定时器 硬件中断 2 8c l o c k 2l e v e l时钟 2 9i p il e v e l处理器之间中断 级 3 0p o w e rl e v e l电源故障级 3 1h i g hl e v e l最高级 表5 1 中断级别 w i n d o w s 的内存管理采用了虚拟内存的概念,有相当一部分的内存实际不 是在物理内存中,而是在硬盘中。当访问并不存在于实际物理内存中的地址时, w i n d o w s 的核心模块内存管理器会引起一个页故障,这是一个软件级别的中 断,发生在d i s p a t c h l e v e l 级别上,然后调用硬盘驱动程序把故障页从硬盘 读入内存中。如果这时驱动程序也运行在d r s p a t c h l e v e l 级上,并且需要访 问个会引起页故障的地址,就将发生如下结果:驱动程序需要等待地址有效, 而使地址有效的w i n d o w s 发出的页故障却被驱动程序屏蔽,即w i n d o w s 在等待 驱动程序的结束,这样就造成了两者的互相等待而引起蓝屏。 在此,对内存进行简单的分类。用分页内存( p a g e dp 0 0 1 ) 和非分页内存 ( n o n p a g e dp 0 0 1 ) 来表示两种不同的内存。分页内存是指可以被交换到硬盘 上的内存页,非分页内存是指不能被换出的内存页,即它存在于物理内存中, 不会引起页故障。 这里有一个根本性原则:在d i s p a t c h l e v e l 及以上级别上运行代码时, 访问豹内存为非分页内存。 5 i 1 5 设备接口 用旧的命名方法命名设备对象,并创建一个应用程序能够使用的符号连 接,存在两个主要问题。一是命名设备对象会带来潜在的安全问题。此外,访 问设备的应用程序需要先知道设备采用的命名方案。为了解决这些问题,w d m 引入了一个新的设备命名方案,该方案是语言中立、易于扩展的,可用于许多 硬件和软件厂商,并且易于文档化。该方案依靠个设备接口( d e v i c e 电子科技大学硕士论文 i n t e r f a c e ) 的概念,它是软件如何访问硬件的一个说明。一个设备接口被一 个1 2 8 位的g u i d 唯一标识。 如果要使设备接口对w i n 3 2 应用程序可见,w d m 驱动程序必须在a d d d e v i c e 例程中注册一个或多个设备接口。之后,在启动例程中激活设备接口,在停止 例程中禁止设备接口。 5 1 2 驱动开发工具 在该驱动程序开发中,使用了n u m e g a 公司的d r i v e r s t u d i o2 6 版本。 d r i v e r s t u d i 0 是一个开发工具包,包含v t 0 0 1s d ,d r i v e r w o r k s 和s o f t i c e 等开发工具,现在较高的版本为2 5 ,2 6 ,其中,2 6 版本可以用于w i n d o w sx p w d m 设备驱动程序的开发。用d r i v e r w o r k s 程序生成w d m 程序的框架对于开发 人员来说相对比较简单,但仍然满足d d k 对w d m 的要求,调用的还是d d k 提供 的基本函数。 v 1 d r i v e r w o r k s d r i v e r w o r k s 是驱动程序框架向导,可以自动生成通用的驱动程序项目框 架及源代码,简化开发过程。 2 d r i v e r m o n i t o r d r i v e r m o n i t o r 是d r i v e r s t u d i o 提供的开发工具之一。一方面,运行它即 可用来观察w d m 或n t 驱动程序在c h e c k e d 状态下的输出流;另一方面,可以 用它来加载、运行、停止和卸载n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 道路测量外包合同范本
- 民间私人抵押合同范本
- 装修材料回收协议合同
- 过桥公司股东合同范本
- 道路施工甲供合同范本
- 配送承包协议合同范本
- 车辆外借协议签订合同
- 物品闲置托管合同范本
- 租车信息服务合同范本
- 甲方版权授权合同范本
- 高二物理第一次月考卷【测试范围:第11~12章】(考试版A3)
- 2025年大一上学期java期末考试题及答案
- 团校考试试题及答案浙江
- 2025-2026学年湘美版(2024)小学美术二年级上册(全册)教学设计(附目录P208)
- 法国方言政策的沿袭与变革
- 2024年秦皇岛市市直机关遴选考试真题
- 2025年贵州省中考化学真题卷含答案解析
- 高压供电设备基础知识培训课件
- 机关事业单位工人《汽车驾驶员高级、技师》考试题(附答案)
- 2025年新高考1卷(新课标Ⅰ卷)语文试卷(含答案)
- 烟酒店经营许可合同模板
评论
0/150
提交评论