(计算机应用技术专业论文)基于嵌入式微处理器的视频图像采集系统设计.pdf_第1页
(计算机应用技术专业论文)基于嵌入式微处理器的视频图像采集系统设计.pdf_第2页
(计算机应用技术专业论文)基于嵌入式微处理器的视频图像采集系统设计.pdf_第3页
(计算机应用技术专业论文)基于嵌入式微处理器的视频图像采集系统设计.pdf_第4页
(计算机应用技术专业论文)基于嵌入式微处理器的视频图像采集系统设计.pdf_第5页
已阅读5页,还剩67页未读 继续免费阅读

(计算机应用技术专业论文)基于嵌入式微处理器的视频图像采集系统设计.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2 0 0 4 级天津师范大学计算机应用专业研究生 摘要 随着计算机技术的高速发展,嵌入式系统已经进入了我们生活的方方面面, 从手机、m p 3 等手持设备到电视、电话等家用电器都有嵌入式系统的影子。特 别是很多大公司相继推出自己的微处理器后,嵌入式系统的发展更加突飞猛进。 同时在现代高速发展的3 g 网络时代,数字化多媒体技术伴随着嵌入式系统的发 展而快速发展起来,在线电视,可视电话等宽带多媒体设备都将成为人们生活的 一部分。在以往的多媒体设备中,很多利用d s p 来作为多媒体设备的处理器, 虽然在处理能力和功耗上也能够满足要求,但是价格居高不下并非人所愿,然而 利用其他价格偏低的处理器在处理能力和功耗上又不能达到要求。 随着纳米微电子技术突破,以a r m 为代表的3 2 1 6 位嵌入式r i s c 微处理器 在通信、网络、工业控制、仪器仪表、信息家电及其消费类电子等各个领域都得 到了广泛的应用。同时为了提高系统的速度,使视频效果实时性更强可以利用 f p g a 用硬件的逻辑电路来完成部分前端处理工作。f p g a 凭借其较低的投入成 本,较高的并行处理速度和较大的灵活性在当前也得到了广泛应用,特别是在图 像处理中,f p g a 有其独特的优势。 本文主要利用s a m s u n g 的a r m 9 处理器$ 3 c 2 4 1 0 作为视频采集的总控制器, 移植w i n d o w sc e 操作系统作为该系统的总控制单元,然后通过u s b 总线接收 来自f p g a 通过c m o s 图像传感器采集并进行过前端处理图像数据并进行后续 处理。本系统在可视电话,宽带多媒体设备等方面都可以广泛应用。 本文主要涉及w i n d o w sc e 操作系统移植及u s b 驱动开发,实现与f p g a 通 信,利用f i g a 和a r m 协作对采集的图像进行处理,通过增益控制、移动检测 等算法得到采集数据为以后的图像压缩及宽带传输提供了条件。 关键词:嵌入式系统,a r m ,f p g a ,w m d o w sc e ,c m o s 图像传感器 1 v 2 0 0 4 级天津师范大学计算机应用专业研究生 a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to fc o m p u t e r , t h ee m b e d d e ds y s t e mh a sp u s h e di n t o e v e r ya s p e c to f o u rl i v e m a n ya p p a r a t u s e sw eu s ee v e r y d a y , f r o mp o r t a b l ea p p a r a t u s s u c h 蠲m o b i l ep h o n e , m p 3 t oh o m ea p p a r a t u sl i k et e l e v i s i o n , r e f r i g e r a t o r y , 娥w i t h e m b e d d e ds y s t e mi n s i d e e s p e c i a l l yw i t hm a n yc o m p a n i e st a k i n go u tt h e i ro w n m i c r o p r o c e s s o r , t h ee m b e d d e ds y s t e mh a sb e e na c c e l e r a t i v ed e v e l o p e d t h e r e f o r et h e , t i c t a lm u l t i m e d i ah a sd e v e l o p e dq u i d d yi nt h e3 ge 扭n o w a d a y s , s o m et h eb r o a d b a n dm u l t i m e d i aa p p a r a t u ss u c h 勰n e t w o r kt e l e p h o n e , n e t w o r kt d e v i s i o nb e 舢e n 蹦c h o i c ef o rp e o p l et or e l a x f o r5 0 i i l t ef o r m e ro l l e s , d s ph a sb e e nw i d e l yu s e di n t h e m , w h i c hc a l lr e a c ht h er e q u i r e m e n ti ns o m ee x t e n t , b u ti tc o s t st o om u c ha n dt a k e s t o om u c hp o w e r , w h i c hc a n tb es a t i s f i e dw i t hc l i e n t s a st h eg r a t eb r e a k t h r o u g hi ni l a n o m c t c rm i e r o - e l e e l r o n i e s ,t h e3 2 1 6b i t e m b e d d e dr i s cm i c r o p r o c e s s o rl i k ea r mi s w i d e l yu s e di n t h ef i e l d so f c o m m u n i c a t i o n , n e t w o r k , i n d u s t r yc o n t r o l ,i m t r u m e n t , l a o m cw i r i n g ,c o s t l y e l e c t r o r f i e sa n ds on o i no r d e rt oc n l l a n c et h er a t eo fs y s t e ma tt h es a n l ct i m e , w e 蹴 t h el o g i cc i r c u i to f f p g at op r e p r o e e s st h ei m a g ed a t ai no r d e rt om a k ct h er e a l - t i m e v i d e o f p g ah a si t ss p e c i a ls u p e r i o r i t y , l o w e ri n p u tc o s t , h i g h e r p a r a l l e lp r o c e s s 印e e d , a n dm o l r l :f l e x i b i l i t y , w h i c hm a k e si tu s e dw i d e l y , e s p e c i a l l yi ni m a g ep r o e 鹤s i n g t h i sa r t i c l et a k e st h ea r m 9 p r o c e s s o rs 3 c 2 4 1 0 , p r o d u c e db y $ a m s t m g , a 3t h o m a i nc o n t r o l l e rt oc o l l e c tt h ev i d e od a t a , a n dt r a n s p l a n tt h ew i n d o w sc eo l li ta s o p e r a t i o ns y s t e mo ft h es y s t e mt oc o n t r o lt h ed a t ac o l l e c t i n ga n dl a t e rp r o c e s s i n g t h e nu s et h eu s bb u st or e c e i v et h ei m a g ed a t at h a tc o l l e c t e df r o mc m o $ s e l l s o l a n d p r e p r o e e s s e db yf p g a t h i ss y s t e mc o u l db ew i d e l yu s e di nv i d e op h o n ea n db r o a d b a n dm u l t i m e d i ai nt h ef u t u r e t h i sa r t i c l em a i n l yw 幽t o t r a n s p l a n tt h ew m d o w sc es y s t e 衄at o $ 3 c 2 4 1 0a n d d i dt h ed e v e l o p m e n to fu s bd r i v e rt oc o m m u n i c a t ew i t hf p g a t h i ss y s t e m p r o c c s s e 8t h ei m a g ed a t ab yc o l 0 】p 啪l e dw i t ht h ef p g aa n da r m a n dt h es y s t e m u s es o m ea l g o r i t h m ss u c h 翘p l u sc o n t r o la n dm o t i o nd e t e c t i o n , w h i c hm a k e st h e i m a g ec o m p r e s s i n ga n dd a t at r a n s m i t t i n gm o r cc o n v i n e n t k e yw o r d s :e m b e d d e ds y s t e m , a r m ,f i o a , w i n d o w sc e ,c m o ss e n s o r v 2 4 级天津师范大学计算机应用专业研究生 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我 所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研 究成果,也不包含为获得墨洼竖整盘鲎或其它教育机构的学位或证书而使用过的材料 与我一同工作的同志对本研究所傲的任何贡献均已在论文中作了明确的说明并表示了谢意 签名: 学位论文版权使用授权书 本人完全了解天津师范大学有关保留、使用学位论文的规定,即:学校有权将学位论文 的全部或部分内容编入有关数据库进行检索,并采用影印、缩印或扫描等复制手段保存、汇 编以供查阅和借阋。同意学校向国家有关部门或机构送交论文的复印件和磁盘 ( 保密的论文在解密后应遵守此规定) 签名:导师签名:日期: m 2 0 0 4 级天津师范大学计算机应用专业研究生 第一章绪论 1 1背景 早在在古代人类就学会用画画等方法将看到的景象记录下来。随着胶片的 发明相机成为了很多人的时尚玩物,2 0 世纪末以来,微电子技术和计算机技术 迅猛发展给数字图像处理提供了先进的技术手段,目前图像处理已广泛应用于 航天,交通,工业控制,数据安全等领域。图像处理的发展将向着高速、高分 辨率、立体化、多媒体化、智能化和标准化方向发展 咱们正步入3 g 时代,网络速度的提高进一步刺激各种消费类电子的发展。 为了应对臼益增多的多媒体应用,基频处理器已经无法满足需求。如果有基频 处理器来处理这些任务,软件工作将非常巨大,开发周期很长。随着各类网络 和通信媒体成为生活的时尚,以嵌入式微处理器组成的系统也随之成为各类产 品的首选的实现方式 嵌入式系统( e m b e d d e ds y s t e m ) 是指以应用为中心,以计算机技术为基础, 软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗等有严 格要求的专用计算机系统,是一个将先进计算机技术、半导体技术、电子技术 和各个行业的具体应用结合的产物,它凭着面向特定应用,移动性高,功耗低, 可靠性高,性价比高,实时性强,支持多任务应用的特点,结构简单而且实用 性强的特点,不断地被广泛的使用在各行各业。嵌入式微处理器是嵌入式系统 的核心,一般可以分为m c u 、m p u 、a r m 、d s p 、s 0 肼p g a 等,随着e d a 技术的发展,可编程逻辑器件的逻辑门密度的不断提高和设计工具软件不断加 强与优化,f p g a 能够实现越来越多的功能,目前已经能够将r i s c 处理器内核, d s p 算法、数字a s i c 器件及其数字1 1 c o r e 等诸多逻辑器件嵌入到f p g a 。 1 2发展现状 随着计算机技术、数字图像处理技术、c c d 技术以及数字电子技术的发展 和完善,图像采集与处理技术逐步成熟,并逐步走进工业现场。但是在现在这 个网络时代,视频电话,视频会议及第三代移动通信中多媒体视频等方面的技 2 0 0 4 级天津师范大学计算机应用专业研究生 术需求对图像处理的要求更高。 如今,随着信息时代的来临,传统的语音通信已经难以满足现代人日益增 长的通信需求,在数据和多媒体技术迅猛发展的今天,人们又在追求更高品质 的集视频、声音、文字等为一体的全新通信方式。以往要进行远距离的视频通 信只能靠因特网通过视频聊天的方式进行。能不能将这种视频直接通过我们使 用的电话甚至手机来实现昵? 在网络技术高速发达的今天这种要求是完全可以 实现的,要进行这种视频交流,图像的实时采集和处理是不可少的。 实时图像处理的特点就是运算量大处理速度快,为达到既定的处理目的往 往不仅要完成大量结构相对简单的低层算法也要实现十分复杂的高层运算目前 主流制造商生产的d s p 已能满足算法控制结构复杂运算速度高寻址方式灵活和 通信性能强大等需求,但是d s p 成本之高使很多老百姓望而却步。a r m 公司 推出a r m 9 系列处理器价格便宜功耗低,同时处理能力并不亚于d s p ,这样使 得可视电话进入百姓家成为现实同时在采集图像时利用便宜,功耗低,速度 快的f p g a 来实现并做一些前端处理工作,这样更能提高系统的处理速度实时 性更强。并且以后通过a s i c 技术将该f p g a 和c m o s 图像传感器在一起使得 成本更低和体积更小,然后通过a r m 处理器来采集图像数据,这样的可视电 话的实现就更加容易了 1 3 课题提出及意义 基于以上分析,提出a r m + f p g a 的图像处理方案,具体的处理框图如下: 8 位数据线 c o n f i g u r er e m o t ec o n n e c t i o n 对话框 1 5 2 0 0 4 级天律师范大学计算机应用专业研究生 中,选择d o w n l o a d 下拉框为“e t h e r n e t ,在c o n f i g u r ee t h c r n e td o w n l o a ds e r v i c e 对话框的a v a l i a b l ed e v i c e s 窗口中选中“s m d k 2 4 1 0 3 9 6 1 2 ”然后将确保网段和 其他的设置正常后就可以通过d o w n l o a d i n i t i a l i z e 进行镜像文件的下载了。 e n t e r9 0 u rs e l e c t i o n : $ g s t e mr e a d 箩l p r e p a r i n gf o rd o _ m l o a d + o e 咿r e o o w n l o a d : u s i n gd e v i c er a l n e :。s h l ) k 2 j 1 1 0 :3 9 6 1 2 * e b e o t s e n d b o o t m e f l n d w a i t f o r t f t p 翱n tb o o t 哐t o2 5 5 2 5 5 2 5 5 2 5 5 、。,t 糍 图2 8 烧写提示 当烧写完成就可以看到w i n d o w sc e 的启动画面了。然后再通过j t a g 将 2 4 1 0 n b o o tr e l e a s e b i n 烧入到系统中,系统就可以在上电后就启动了f 1 2 1 。 2 3 u s b 驱动开发 2 3 1w i n d o w sc e 驱动程序简介 驱动程序的作用主要是初始化并驱动内部和外围的硬件设备,或者为它 们提供接口,以将操作系统和设备连接起来,使其能够识别不同的设备并为 相应的应用程序提供设备服务,它在操作系统中有着重要的地位 w i n d o w sc e 系统与其它操作系统一样,也提供了设备驱动程序,以驱动 内部或者外围硬件设备。w i n d o w sc e 系统支持广泛的设备驱动程序,也提供 一些灵活小巧的驱动程序开发模型,这些模型是c e 系统具有良好的适应性。 但w i n d o w sc e 是主要为嵌入式系统而设计的,其运行机制与应用于普通p c 机的操作系统很不相同,其驱动程序开发工具和开发方法也有着较大区别 m 6 l 。本文详细讲解一下w i n d o w sc e 的u s b 驱动开发。 目前,w i n d o w sc e 系统提供了两种设备驱动模型:本机设备驱动、流接 口驱动。不同驱动模型只能通过它们所支持的软件接口来区别,而不是它们 所适用的设备。驱动程序模型决定了驱动程序所输出的软件接口。本机设备 驱动程序适合于集成到基于w i n d o w sc e n e t 平台的设备。每种本机设备驱动 程序都有自己的结构和目的。这种驱动模型专为底层内置硬件而设计的,如 键盘、屏幕等。这些驱动是g w e s 的一部分,所以它们不表现在一个d l l 的动 1 6 2 0 0 4 缓天津师范大学计算机应用专业研究生 态链接库上面。因为本机设备驱动程序都有精确的和特殊的目标,微软提供 了定制接1 3 的方式来支持内部设备驱动程序,这类驱动程序总是在w i n d o w s c e n e t 平台启动时被加载。与本机驱动程序想对应,流接口驱动程序是一般 类型的设备驱动程序。流接口驱动程序是用户一级的动态链接库( d 1 1 ) 。在流 接口驱动程序中所实现的一组固定函数称为流接口函数。这组函数可以使得 应用程序可以通过文件系统中特殊文件而与设备进行交换信息。这种类型的 驱动支持几乎全部的可以连接到w i n d o w sc e n c t 平台外部的设备,其中包括 u s b 设备。用这种类型驱动的设备如串口、扫描仪等。通用串行总线驱动 ( u s b d ) 将通用串行总线兼容设备与w i n d o w sc e n e t 平台连接起来,这类驱动 与w i n d o w sc e n e t 系统中的其它模块联合起来应用【川【l 羽。本课题主要是利用 u s b 的接口来采集摄像头数据,这种外部设备采用流接口驱动的模式来编写 驱动程序比较方便,所以本文主要介绍流接口驱动模型。 2 3 2 流接口驱动程序模型 1 流接口驱动程序的工作结构 w i n d o w sc e 将通过串口、并口、p c m c i a 等接口进行批量数据传输的设 备统称为数据流接口设备,支持这种设备工作的驱动程序即为流接口驱动程 序。c e 下的流接口设备被映射为一个特殊的文件,应用程序通过打开、读取、 写入、关闭等文件系统接口来实现对设备的读写操作,所以设备名与文件系 统的文件名需要共享命名控件。为了识别流接口设备这种特殊的文件,c e 采 用了一种独特的命名规范,一个有效的流接口设备名由三部分组成:( 1 ) - 个 大写字母组成的前缀( p r e f i x ) ;( 2 ) 一个用来标志设备的索引编号;( 3 ) 在结尾 的一个冒号 设备名前缀可以是任意三个大写字母的摔列组合,但在一个c e 平台上必 须是唯一的,例如c o m 代表串口,l p t 代表并口等等。前缀保存在注册表该 设备子键下名l l q p r e f i x 的值中,这个注册表值一般由设备安装程序创建。前缀 相同流接口设备通过索引来进行区分,每个c e 系统可以安装最多1 0 4 相同类 别的驱动实体,分别以1 、2 、9 、o 进行编号,设备管理器在加载流接口 驱动程序时,会检查当前设备链表中索引的使用情况,然后分配一个未被使 1 7 2 0 0 4 级天津师范大学计算机应用专业研究生 用的索引号给驱动程序。冒号是专门用来指示流接口设备这种特殊的文件 的,普通数据文件命名不允许使用。 表2 1流接口驱动程序接口函数功能说明 x x xi n i t 设备管理器调用这个函数来i n i t 设备 x x x d e i n i t设备管理器调用这个函数来d ei n i t 设备 x x xo p e n 打开一个设备准备读写,应用程序通过函数 c r e a t e f i l e 来间接调用这个函数 x x xc l o s e 关闭有设备上下文 x x xr e a d 从设备读数据 x x xw h t e 向设备中写数据 x x xs e e k 移动数据指针 x x x _ l o c o n t r o l向设备发送一个命令 x x x _ p o w e r u p给设备打开电源 x x x p o w e r d o w n切断电源。只有在软件可s h u to 瞰备中可用 与本机驱动程序不同的是,所有的流接口驱动程序共享一个接口集:数 据流接口,该接口由1 0 个入1 2 1 ( e n t r yp o i n t s ) 组成,对应于每个流接口驱动程 序内的l o 个功能,表3 1 绘出了l o 个接口函数,例如应用程序通过c r e a t e f i l e 0 来打开或存取串口 c o m i :”,就会产生一个对串口驱动程序中c o mo p e n ( ) 的调用,完成后返回一个句柄,该句柄被常规的w i n 3 2 文件功能所用,作为 阐述传递给w r i t e f i l e ( ) 、r e a d f i l e 0 等a p i 使用,再分烈由驱动程序的 c o m 删r e ( ) 、c o mr e d o 等函数进行实际处理,最后,通过c l o s e h a n d l e 0 来关闭该句柄,相应的,c o mo o s e 0 会被调用,释放占用的内部资源【2 7 1 。 流接口驱动程序由设备管理器加载、控制和卸载。对于内嵌式的流接口 设备,设备管理器在启动时根据h k e yl o c a lm a c h i n e 、o r i v e r s x b u i l t i n 键 的内容进行加载:对于可安装能被检测到的流接口设备,相关的驱动程序则 是在设备连接到c e 平台并被检测到之后。根据注册表的表项进行加载:最后, 应用程序可以通过l o a d d r i v e n ( ) 在执行时请求加载一个驱动程序。 流接口驱动程序是以动态链接库形式存在的,由设备管理嚣统一加载、 管理和卸载。与具有单独目的的内部设备驱动程序相比,所有的流接口驱动 程序都使用同一组接口并调用同一个函数集,我们将这个函数集称作流接口 1 8 2 0 0 4 级天律师范大学计算机应用专业研究生 函数。流接口驱动程序是为了连接到基于w i n d o w sc e n e t 平台的外围设备而 设计的,为了与外围设备进行交互,流接口驱动程序通常使用本机设备驱动 程序所提供的d d s i 函数,因为外部设备就是连接到连接器上面的,如果外围 设备被映射成系统内存空间的一部分,流接口驱动程序也可以直接与外围设 备进行交互。流接口驱动程序的主要任务是把外设的使用传递给应用程序, 这是通过把设备表示为文件系统的一个特殊文件实现的。 l 应田程庄i 文等会;甏;! 五习一 文件系统l o c l l 。 一 流接口 i 室往丕统卜 , 模式驱 内核卜叫设备管理器卜一 动程序 广国i1 中断事件 一 软件 f 接口 硬件 硬件平台 图2 9 流接口驱动程序工作结构 虽然流接口驱动程序具有普遍的特性,但是可以使用不同的方法来实 现。另外,尽管流接口驱动程序通常是由设备管理器程序加载和卸载的,但 是有时应用程序也执行加载和卸载的任务。图2 9 说明了流接口驱动程序的工 作结构,应用程序通过文件系统的a p i 函数调用流接口函数,然后流接口驱 动程序调用本机驱动或通过设备管理器与系统内核或外围设备打交道。 2 3 3u s b 摄像头的流接口驱动程序 w i n c e 下设备的初始化分为两个阶段:d e v i c e e x e 的初始化:外设的枚 举和加载。其流程是:上电一启动b o o t l o a d e r - - 启动n k 一启动注册表i n i t 键 ( d e v i c e 强e 启动) 一初始化数据结构,f o ,电源管理等一加载b u s e n u m d l l ( 总 线枚举器) 一枚举注册表下d r i v e r b u i l d i n 的所有子键。这里的枚举过程就是循 环调用a c t i v a t e d e v i c e e x 0 函数加载驱动的过程。在o s 启动完毕后,我们可以 用p b 的r e m o t er e g i s t r yt o o l 查看hi ,m ,d r i v e r s a c t i v e 包含的子键,看哪些驱 动随启动而加载。 1 9 2 0 0 4 级天津师范大学计算机应用专业研究生 从w i n d o w sc e n e t 驱动程序的复杂性角度,设备驱动程序分两种:分 层驱动和单体驱动对w i n d o w s c e 的u s b 驱动程序可以以这两种方式中的一 种来实现。单体与分层只是从代码的形式上做的分类。分层驱动代码上分为 p d d 与m d d ,m d d 模型驱动程序执行下列任务:连接p d d 层并定义它希 望调用的函数;把不同的函数集提供给操作系统;处理像中断处理这样的复 杂任务;与g w e s 模块和内核通信。依赖平台的f d d 层和m d d 与硬件都有 接口,这就意味着必须适合目标平台的需要。一个p d d 由针对具体硬件的函 数组成,而这些函数与一个m d d 层相对应。m d d 函数实现独立的任务。丽 m d d 则通过使用这些任务来实现其目标。因为p d d 层是硬件相关的,因此必 须生成一个好的p d d 并输出到平台硬件。微软为各种各样的内部设备提供了 凡个样本p d d 层。一般的微软已经实现了m d d ,可能也实现了p d d ,我们只 需要对p d d 做些修改就能使用,比如音频的驱动,显示的驱动单层驱动是 把p d d 与m d d 写在一起,没有做严格的区分,通常这种驱动比较简单,比如: a t a d i s k 。单体和分层是驱动实现方式上的分类,而本地和流式则是驱动模 型上的分类,所谓本地驱动就是操作系统有保留专门的接口,所谓流式是指 编写的d l l 文件里可以导出各种流式接口函数。为了方便起见,该系统就采用 单层的流模式u s b 驱动来实现该系统摄像头与嵌入式系统的连接。 u s b 设备驱动程序主要负责利用系统提供的底层接口配置设备和设备 进行通讯。底层的函数本身又由两部分组成,通用串行总线驱动程序( u s b d ) 模块和较低的主控制器驱动程序( h c d ) 模块。h c d 负责最最底层的处理, u s b d 模块实现较高的u s b d 函数接口u s b 设备驱动主要利用u s b d 接口函 数和他们的外围设备打交道。在单层驱动中将两部分合并起来,调用这些链 接库文件既可以完成对外部设备的读写操作。 测试系统为w i n d o w s c e n e t 4 2 ,驱动程序形式为流接口驱动,基本框架 是一个m l 动态连接库。使用e m b e d d e dv i s u a lc 抖4 0 或者p l a t f o r mb u i l d e r4 2 都可以编译,但是由于e v c 用起来比较快,只要将调用u s b 函数需要的头文 件以及l i b 文件的路径设置好就可以。所以使用e v c 对该驱动进行开发。 下面按照u s b 驱动的开发步骤来对摄像头的驱动进行加载; 1 建立一个w c ed y n a m i c l i n kl i b r a r y 2 0 0 4 级天津师范大学计算机应用专业研究生 开发板的硬件配置为s a m s u n ga r m 9 $ 3 c 2 4 1 0 ,故连接的l i b 为 a r m v 4 i r e l e a s e 版本的u s b c l i e n t 1 i b 。 2 书写一个e x p o r td e 坟件( 不是必要的,有这个可以保证符号的导出) , 输出各个驱动需要的函数符号: 3 依据u s b 驱动加载的流程,添加完成各个函数,并进行测试这 部分,将填写的函数为: ( 1 ) u s b i n s t a l l d r i v e r 设备插入后,系统在取得v i d p i d 后将自动在注册表中寻找是否有这一 项,如果没有,则出现提示输入设备名称对话框;依据注册表或者输入名称 找到驱动程序d 1 1 文件后,将首先调用u s b i n s t a l l d r i v e r 函数,该函数使用 u s b d d l l 中的函数注册设备,并依据v i d p i d 设置注册表项,这样在这个项 不丢失的时候,下次插入将能够自动找到,如果这个函数的v i d p i d 和实际 设备不符,将返回失败; ( 2 ) u s b d v v i c e a t t a c h u s b i n s t a l l d d v e r 成功之后,系统才调用u s b d e v i c e a t t a c h 函数;对于u s b 设备,在u s b d e v i c e a t t a c h 函数中,主要进行3 个工作:( 1 ) u s b 设备接口配置 的枚举和保存,备后面传输工作使用:( 2 ) 调用a c t i v e d e v i c e 函数激活一个流 接口,使应用程序可以和驱动交互;( 3 ) 调用r e g i s t e r n o t i f i c a t i o n r o u t i n e 函数 注册一个设备状态回调函数,这里被注册的函数的主要功能是在设备移除时 通知驱动程序停止设备,释放占用的资源;a c t i v e d e v i c e 函数调用的时候, 依据参数l p s z d e v k e y 找到驱动程序文件,在注册表的 h k e yl o c a lm a c h i n e 、d r i v 盯s 、a c t i v e 键中增加这个设备,并且将u s b 驱 动程序的上下文指针放到这里( 即该函数的第2 个参数) ,并且指定一个索引 ( 设备序号) ,将驱动程序加载到d e v i c em a n a g e r 的进程空间。这时d e v i c e m a n a g e r 将发送一个新设备插入的消息,调用该流接口驱动的c a m _ i n i t 函数。 u s b d e v i c e a t t a c h 函数中的第一个工作- 1 ,s b 设备接口配置的枚举和保存 ( 3 ) c a m _ i n i t 接着c a m n i t 函数被调用,参数就是a c t i v e d e v i c e 函数的参数l ,然后依 2 0 0 4 级天津师范大学计算机应用专业研究生 据这个参数,在注册表中找到u s b 驱动程序的上下文,并返回,这样对该流 接口驱动的操作,就可以找t u u s b 驱动的上下文,并且交换数据 以上这些工作完成之后,u s b 设备的信息被保存,并且u s b 驱动程序上 下文也被流接口驱动所记载。流接口u s b 驱动的加载完成。我们就看见那个 输入驱动程序名称的对话框消失了。如果前面6 个步骤中任何一步不成功, 将不会使用这个驱动程序,会反复弹出这个对话框,提示输入驱动程序名称, 直到这些过程全部正确完成。 驱动加载完成后,用户程序再用c r e a t e f i l e 卡 开设备的时候,将返回驱动 程序上下文给用户程序,这样用户程序和驱动就可以交互了,并且这个驱动 程序上下文是含有该u s b 设备相关信息的,所以,可以使用u s b d 函数来操 作u s b 设备,并且将u s b 设备的数据返回给应用程序。 在加载时,我们已注册了u s b d e v i c e n o t i f i c a t i o n 回调函数,在u s b 设备 移除的时候调用该函数。注册回调时候使用函数l p r e g i s t e r n o t i f i c a t i o n r o u t i n e 的第3 个参数是驱动程序上下文指针,就是在调用这个回调函数时候的参数 u s b d e v i c e n o t i f i c a t i o n 传入的参数是驱动程序上下文,我们依据这个就 可以向设备发送信息以停止设备,停止驱动程序正在进行的线程,关闭事件, 临界区等信号,释放申请的内存。这样,就完成了驱动程序的卸载。 ( 4 ) c a m _ d e i n i t 对于流接口驱动,在卸载的时候会调用c a md e i n i t 函数,这个函数的参 数也是驱动程序上下文,我们也可以在这里完成资源释放工作,这里选择在 u s b d e v i c e n o t i f i c a t i o n 释放,所以c a md e i n i t 就不用填写了 ( 5 ) u s b u n i n s t a l l d r i v e r 再设备资源释放之后,将调用u s b _ u n i n s t a u d r i v e r 函数,使用u s b d 里 面的操作注煅表的函数清理注册表中添如韵h k e y _ l o c a l _ m a c h i n e 、l m v e 船认c “v e 中的项目。u s b 驱动程序不通过注册表a p i 来操作注册表,而 是通过u s b d 提供的函数。这些函数正确填写之后,驱动程序就可以加载了 4 保存u s b 的设备信息 其次的程序需要解决对处理芯片的控制,u s b 铷议本身很复杂,但方便 2 0 0 4 级天律师范大学计算机应用专业研究生 在提供了统一的接口方式,使得驱动程序在使用设备的时候,工作简化到了 类似操作串行接口。u s b 设备可以看作提供了多个串口的设备,依据u s b 的 规范,我们将每个串口称作端点( e n d p o m t ) ,要和这个端点通信,我们就要打 开到这个端点的连接,这个连接就是管道( p i p e ) 。如图2 1 0 所示: 打开端点之后,就可以像串口一样进行数据传输了。u s b 有4 种不同类型 的传输方式:控制传输( c o n t r o lt r a n s f e r ) ,批量传输( b u l kt r a n s f e r ) ,中断传 输( i n t e r r u p tt r a n s f e r ) 和实时传输( i s o c h t r a n s f e r ) 。对应每种传输w i n d o w s c e n e t 下都提供了函数。 图2 1 0u s b 设备连接示意图 由于一个设备可能要适应多种情况,端点的设置会有多套,以备使用。 端点设置称为接口( i n t e r f a c e ) 。u s b 设备展现给我们能够找到的东西就是这些 i n t e r f a c e ,我们选择要用的i n t e r f a c e ,就可以找到e n d p o i n t ,再打开e n d p o i n t , 就可以传输数据了。所以,在驱动程序开始的时候,需要记录下这些i n t e r f a c e 。 该摄像头的端点0 是控制端点,用来设置参数以及起停设备;端点1 是实时传 输端点,用来传输视频。端点1 有8 套不同的设置,主要区别就在于一次传输 的数据帧的大小,所以在u s b d e v i e e a t t a c h 的时候,要记录这些设置到驱动程 序中,后面才能够选用。 u s b d e v i c e a t t a c h 函数传入的第一个参数l p c u s b _ d e v i c el p u s b d e v , 里面就包含了这些设置信息,在这里就有8 个i n t e r f a c e ,通过l p u s b d e v 指针, 把这8 个i n t e r f a c e 的内容读出来,存到驱动程序的变量中,这个工作就完成了 后面,传输视频的时候,就从驱动程序变量中选择一个i n t e r f a c e ,然后依据 这个i n t e r f a c e ,就找到了端点,接着就可以打开管道,传输数据了 u s b d e v i c e a t t a c h 函数中,通过p a r s e s t r e a m i n t e r f a c e s 函数来保存这些 2 0 0 4 级天津师范大学计算机应用专业研究生 i n t e r f a c e 。详细内容的参见代码。主要结构如下: f o r ( i = o ;i l p c o n f i g s o d w n u m i n t e r f a c e s ;i + + ) l p l f = & l p u s b d e v 一 l p c o n f i g s l p i n t e r f a c e s i ; i f ( ( 1 p l f - d e s c r i p t o r b i n t e r f a c e c l a s s 一- - - - b l f s t r m ) & & o p i f d e s e r i p t o r b i n t e r f a c e s u b c l a s s b l f s u b s t r m ) ) 保存接口) ) 其q a d w n u m i n t e r f a c e s 为折纸总数,l p i n t e f f a c e s i 存放的就是设置的内 容,本身是一个复杂的结构体,里面有描述端点等信息的相关内容。由于 i n t e r f a c e c l a s s 值为o x i f , i n t e r f a c e s u b c l a s s 值为0 】【肮 5 实时视频数据传输 i s s u e c o n t r o l t r a n s f e r 和i s s u e v e n d o r t r a n s f e r 是用来进行控制传输的,因为 i s s u e c o n t r o l t r a n s f e r 的第一个参数是h p i p e ,在使用i s s u e c o n t r o l t r a n s f e r 之前, 必须用o p e n p i p e 打开管道。o p e n p i p e 函数需要端点描述作为参数。 因为i s s u e v e n d o r t r a n s f e r 提供了更为方便的途径。它默认从端点0 进行控制传 输。如果是其他端点的控制传输,是要用i s s u e c o n t r o l t r a n s f e r 的。 w i n d o w sc e n e t 下,u r b 不用我们自己创建,只要准备好数据缓冲,使 用i s s u e l s o c h t r a n s f e r 函数,系统就帮我们完成了这个过程。w i n d o w sc e n e t 的u s b d 层以下完成u s b 数据队列的功能,而呈现给驱动程序使用的函数就 是i s s u e l s o c h t r a n s f e r 。它需要的参数之一为u s bp i p e ,所以,在进行传输之 前,先要打开对应端点的管道( o p e n p i p e ) 。 在u s b d e v i c e a t t a c h 的时候,已经保存了这个设备的若干i n t e r f a c e 接口 ( 包含了端点设置的信息) 。依据这个信息,使用s e t i n t e r f a c e 设置接1 2 1 ,选择一 个i n t e r f a c e ;使用o p e n p i p e 打开管道,依据选择的i n t e r f a c e 找到端点描述符, 然后o p e n p i p e 。这个部分的代码在程序s e t s t r e a m i n t e r f a c e 函数中 设置接口和打开管道完成之后,就可以进行实时传输了。这个程序里面 i s s u e l s o c h t r a n s f e r 是来源予微软的一个例子程序,这个函数是仿照 u s b c l i e n t c p p 里面的i s s u e v e n d o r t r a n s f e r 写出来的。 2 0 0 4 级天津师范大学计算机应用专业研究生 在程序的o v 5 l x r e a d o n e f r a m e i 函数中,p d a t a b u f f 申请t 9 6 1 0 字节的空 问,d w f r a m e l e n 1 0 1 0 次传输每次的长度。这里都设置为9 6 1 实测的时 候并不是每次传输都能够有9 6 1 0 字节

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论