(计算机应用技术专业论文)基于usb摄像头的嵌入式图像采集系统的研究与实现.pdf_第1页
(计算机应用技术专业论文)基于usb摄像头的嵌入式图像采集系统的研究与实现.pdf_第2页
(计算机应用技术专业论文)基于usb摄像头的嵌入式图像采集系统的研究与实现.pdf_第3页
(计算机应用技术专业论文)基于usb摄像头的嵌入式图像采集系统的研究与实现.pdf_第4页
(计算机应用技术专业论文)基于usb摄像头的嵌入式图像采集系统的研究与实现.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机应用技术专业论文)基于usb摄像头的嵌入式图像采集系统的研究与实现.pdf.pdf 免费下载

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

文档简介

摘要 摘要 本文的研究内容是设计开发一个基于u s b 摄像头的嵌入式图像采集系统。这个图 像采集系统由u s b 摄像头驱动程序模块、上层图像采集程序模块、a v i 文件生成程序模 块构成。 本文设计开发了针对u s b 摄像头芯片z c 3 0 1 p l h 并且帧速得到改善的驱动程序。采 取下述方法来提高摄像头驱动程序的帧速:1 、基于自由软件s p c a 5 x x ,结合所用摄像头 芯片z c 3 0 1 p l h 对s p c a 5 x x 驱动程序进行合理裁剪;2 、双u r b 轮流通信的方法,双帧缓 冲的方法,以及对现有的v 4 l 协议改进的方法;3 、开发设计的驱动程序提供m m a p 0 系统调用,而不提供r e a d ( ) 系统调用,这样在上层应用程序申请获得图像时,使用m m a p 0 系统调用获得图像,把内核空间的设备内存地址空间映射到用户空间的地址空间,减少 了图像数据拷贝的次数,提高了图像采集的效率。 本文编写了符合改进的v i d e of o rl i n u x 标准的上层图象采集程序。其中改进的v i d e o f o rl i n u x 标准是指驱动程序不间断采集、缓冲图像数据,轮流保存在两帧缓冲区中,并 在一帧图像采集好后设定“图像采集好 旗语,用户态程序只需要发出一次“获得图像 请求,就可以通过阻塞等待该旗语,不断获得图像。 本文编写了a v i 文件生成程序模块。它实现的功能是根据系统获得的一幅幅j p e g 文 件生成a v i 视频流文件,然后保存到可移动存储介质中以实现视频回放。 本文设计开发的嵌入式图像采集系统能够在基于$ 3 c 2 4 4 0 a 微处理器和a t t n 1 i n u x 操作系统的平台下稳定运行,并能达到预期的目标。 关键词:u s b ;l i n u x ;摄像头;设备驱动程序;v i d e 0 4 1 i n u x ;图像采集;a v i 文件; a b s t r a c t a b s t r a c t t h ep r o c e s so fd e s i g n i n gai m a g e c a p t u r i n gs y s t e mw i t l lau s bw e b c a m e r ab a s e do n e m b e d d e ds y s t e mi sd e s c r i b e d t h i si m a g e c a p t u r i n gs y s t e mc o n t a i n st h r e em o d u l e s :u s b w e b c a m e r ad r i v e r ,u p p e ri m a g e - c a p t u r i n gm o d u l e ,a v if i l e g e n e r a t i n gm o d u l e aw e b c a m e r ad r i v e rw h i c ha i m sf o ru s bw e b c a m e r ac h i pz e 3 0 1 p l hi sd e s i g n e d t h e f l a m er a t eo ft h ed r i v e ri si m p r o v e d t h e r ea r et h r e em e t h o d sa d o p t e di no r d e rt oi m p r o v et h e w e b c a m e r ad r i v e r sf r a m er a t e f i r s t l y , a c c o r d i n g l yt ot h ec e r t a i nc a m e r ac h i p z c 3 01p l h ,t h e f r e es p c a 5 x xd r i v e ri st r i m m e dr e a s o n a b l y s e c o n d l y , d o u b l eu r ba l t e r n a t ec i r c u l a t i o na n d d o u b l ef r a m e sf o rb u f f e r i n gd a t aa n di m p r o v i n gt h ev 4 l p r o t o c o la r ea d o p t e di no r d e rt o i m p r o v et h ep e r f o r m a n c eo ft h ed e s i g n e dd r i v e r t h i r d l y , t h eu s bw e b c a m e r ad r i v e rw e d e s i g n e dh a sm m a p 0s y s t e mc a l lb u ti th a sn or e a d ( ) s y s t e mc a l l s ot h eu p p e ra p p l i c a t i o n a p p l i e sf o ri m a g eb ym e a n so fm m a p os y s t e mc a l l b e c a u s em m a p 0s y s t e mc a l lc o u l dm a p t h ed e v i c em e m o r ys p c a c ew h i c hb e l o n g st ok e r n e ls p a c et ot h eu s e rm e m o r ys p a c e ,a n d t h e r e f o r er e d u c et h et i m e so fc o p y i n gi m a g ed a t ab e t w e e nt h ek e r n e ls p a c ea n dt h eu s e rs p a c e , i m p r o v et h ee f f i c i e n c yo fi m a g e c a p t u r i n g t h eu p p e ri m a g e c a p t u r i n gp r o g r a m m ew h i c ho b s e r v e st h ei m p r o v e dv i d e of o rl i n u x s t a n d a r d t h ei m p r o v e dv i d e of o rl i n u xs t a n d a r df o l l o w s :f i r s t l y , d r i v e rc o n s t a n t l yc a p t u r e s i m a g e sa n db u f f e r si m a g ed a t aw i t hd o u b l ef l a m eb u f f e r s ,a n ds e t sf l a gw h i c hi su s e df o r m a r k i n g i m a g ea l r e a d yc a p t u r e d w h e naf r a m ei m a g ei sc a p t u r e d ;s e c o n d l y , u s e rm o d e p r o g r a m m ec a nc o n s t a n t l yg r a bi m a g e sb yg i v i n go n l yo n c e c a p t u r i n gi m a g e r e q u e s ta n d w a i t i n gf o rt h ef l a g 、析t hb l o c k i n gi t s e l f t h ea v if i l e - g e n e r a t i n gp r o g r a m m ei sd e s i g n e d i tc a ng e n e r a t ea na v iv i d e of i l eb a s e do n m a n yj p e gf i l e sc a p t u r e db yt h es y s t e m t h e nt h ea v iv i d e of i l ec o u l db es a v e di nt h er e m o v e d s t o r a g ei no r d e rt oi m p l e m e n tt h ev i d e or e p l a y a tl a s t ,t h ei m a g e c a p t u r i n gs y s t e mw ed e s i g n e dc a nw o r ks t a b l yu n d e rt h ec o n d i t i o no f $ 3 c 2 4 4 0 am i c r o p r o c e s s o ra n da l t l l - l i n u xo p e r a t i n gs y s t e m ,a n di tc o u l da c h i e v et h ei n t e n d e d g o a l f i l e ; k e y w o r d s :u s b ;l i n u x ;w e b c a m ;d e v i c ed r i v e r ;v i d e 0 4 1 i n u x ;i m a g e c a p t u r i n g ;a v i 独创性声明 本人声明所呈交的学位论文是芬人在导师指导下进行的研究工作及取 得的研究成果尽我所知,除了文中特别加以标注和致谢的地方外,论文 中不包含其他人已经发表或撰写过的研究成果,也不包含本人为获得江南 大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志 对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。 签名: 纠鱼 日 期 垫星:z : ! 关于论文使用授权的说明 本学位论文作者完全了解江南大学有关保留、使用学位论文的规定: 江南大学有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允 许论文被查阅和借阅,可以将学位论文的全部或部分内容编入有关数据库 进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文, 并且本人电子文档的内容和纸质论文的内容相一致。 保密的学位论文在解密后也遵守此规定。 签名: 钊衣 导师签名: 日期:勿谣7 f , 第一章绪论 第一章绪论 1 1 概论 随着计算机技术的发展,嵌入式系统已逐渐成为后p c 时代的主导,特别是3 2 位嵌 入式微处理器的出现,使得一些基于p c 的应用也得以在嵌入式系统上实现。目前图像 采集系统一般由个人计算机和专用的图像采集卡构成。利用计算机强大的处理能力和通 用的接口,使用专用的图像采集卡采集图像,应用非常广泛。但是p c 机体积庞大、成 本高,携带不便,因此在某些场合下p c 机就不适合用于图像采集系统。在这种背景下, 设计嵌入式图象采集系统来采集、存储并显示所需的图像,以备后续应用处理就有一定 的实际意义。在嵌入式图像采集系统中,图像采集设备通常是u s b 接口摄像头。因为 u s b 接口摄像头价格低廉,性能较好,加上l i n u x 下有v 4 l 标准( v i d e of o rl i n u x ) 支持对 其编程,很容易集成到嵌入式系统,被应用在很多应用系统中获取图像数据。 1 2 课题的研究内容及完成的研究工作 本课题的研究内容是设计开发一个基于u s b 摄像头的嵌入式图像采集系统。实现 个嵌入式图像采集系统需要编写底层驱动程序和上层应用程序。 目前针对l i n u x 平台的u s b 摄像头驱动程序的研究还不够深入,市场上提供的u s b 摄像头驱动程序很多都针对w i n d o w s 平台,而嵌入式系统中的操作系统大多都是l i n u x 。 另外嵌入式l i n u x 内核支持的u s b 摄像头芯片( o v 5 1 1 ) 在市场上已被淘汰。因此在开发 嵌入式图像采集系统的过程中,需要针对应用中使用的u s b 摄像头芯片来设计开发摄 像头驱动程序。现在有运行在l i n u x 操作系统上的支持多种d s p 处理芯片的u s b 摄像 头驱动程序( 比如开源的s p c a 5 x x ) 。但是s p c a 5 x x 驱动程序存在一些问题:l 、支持多 种芯片,程序实现繁琐;2 、驱动程序的设计实现采用现有的v i d e of o rl i n u x ( v 4 1 ) 标准, 难以充分利用u s b 带宽,帧速不高,不易满足实时监控等要求。 本课题需要完成的第一项工作就是设计开发针对u s b 摄像头芯片z c 3 0 1 p l h 并且帧 速得到改善的驱动程序。为提高摄像头驱动程序的帧速而采用的方法如下:1 、基于自 由软件s p c a 5 x x ,结合所用摄像头芯片z c 3 0 1 p l h 对s p c a 5 x x 驱动程序进行合理裁剪:2 、 双u r b 轮流通信的方法,双帧缓冲的方法,以及对现有的v 4 l 协议加以改进的方法; 3 、开发设计的驱动程序提供m m a p o 系统调用,而不提供r e a d ( ) 系统调用,这样在上层 应用程序申请获得图像时,使用m m a p o 系统调用获得图像,把内核空间的设备内存地 址空间映射到用户空间的地址空间,减少了图像数据拷贝的次数,提高了图像采集的效 率。 实现上层图像采集应用程序一般利用l i n u x 内核中v i d e 0 4 1 i n u x 模块提供的a p i 接口 函数,其中v i d e 0 4 1 i n u x ( 简称v 4 i ) 是l i n u x 中关于视频设备的内核驱动,为市场常见的 电视捕获卡和并口及u s b 接口的摄像头提供统一的编程接口。本课题需要完成的第二 项工作就是编写符合改进的v i d e 0 4 1 i n u x 标准的上层图像采集程序。其中改进的v i d e of o r 江南大学硕士学位论文 l i n u x 标准是指驱动程序不间断采集、缓冲图像数据,轮流保存在两帧缓冲区中,并在 一帧图像采集好后设定“图像采集好”旗语,用户态程序只需要发出一次“获得图像 请求,就可以通过阻塞等待该旗语,不断获得图像。视频编程的流程如下:( 1 ) 打开视 频设备;( 2 ) 初始化设备状态;( 3 ) 以内存映射方式进行视频采集;( 4 ) 对采集的视频 进行处理;( 5 ) 关闭视频设备。 本课题需要完成的第三项工作就是开发设计a v i 文件生成程序模块。它实现的功能 是根据若干幅j p e g 文件生成一个a v i 视频文件。a v i 视频文件生成程序模块的主要实现 思想是根据a v i 文件的格式要求,给相关字段赋值,再根据a v i 文件格式把若干幅i p e g 文件数据按照特定的方法组织到待生成的a v i 文件的m o v i 列表块中。a v i 文件生成程序 模块能够根据系统获得的一幅幅j p e g 文件生成a v i 视频流文件,实现视频回放( 视频回 放功能在安全监控、事故鉴定、车辆防盗等领域中有一定的现实意义) 。 综上所述,现在将所完成的研究工作总结如下: 一、设计开发针对u s b 摄像头芯片z c 3 0 1 p l h 并且帧速得到改善的驱动程序。 二、编写符合改进的v i d e of o rl i n u x 标准的上层图象采集程序。 三、设计a v i 文件生成程序模块。它实现的功能是根据系统获得的一幅幅i p e g 文件 生成a v i 视频流文件,然后保存到可移动存储介质( 比如u 盘) 中实现视频回放。 1 3 课题研究的意义 该课题来源于这样一个项目设计开发具有下述功能的嵌入式系统:1 、能够利 用u s b 摄像头实时采集图像并保存为i p e g 文件;2 、能够在a l t n 开发板的液晶屏上显示 一幅幅j p e g 图像;3 、能够进行两幅图像的匹配识别( 利用相关匹配算法) ;4 、系统能 够与远端p c 机进行网络通信,利用嵌入式系统的网络传输模块,将嵌入式系统端的图 像文件传输到远端p c 机,实现远程监控。 本课题研究的意义在于:1 、基于u s b 摄像头的图象采集系统的实现在整个系统实 现中具有重要的地位:2 、通过对这个课题的研究,掌握了嵌入式系统的基本开发流程, 研究了v i d e 0 4 1 i n u x 方面和a v i 文件格式方面的内容,以及l i n u x 设备驱动方面的知识, 尤其是l i n u x 系统下u s b 设备驱动方面的内容。 2 第二章嵌入式系统和相关实现技术简介 第二章嵌入式系统和相关实现技术简介 2 1 嵌入式系统的基本概念 由于嵌入式系统的外延极广,因此很难给它下一个准确的定义。目前常说的嵌入式 系统概念的重心放在“系统 上,指能运行操作系统的软硬件综合体。总体上嵌入式系 统可以分为软件和硬件两部分,硬件一般由高性能的微处理器和外围接口电路组成,软 件一般由操作系统和其上运行的应用软件构成。 2 1 1 嵌入式系统的定义、特点及组成结构 1 、嵌入式系统的定义 嵌入式系统是面向用户、面向产品、面向应用的,嵌入式系统必须能够对软、硬件 进行裁剪,满足应用系统的功能、可靠性、成本、体积等要求,并可以根据实际的使用 效果进行功能扩展。f 1 】 2 、嵌入式系统具有如下特点 2 1 ( 1 ) 嵌入式系统是面向用户、面向产品、面向应用的; ( 2 ) 嵌入式系统是将先进的计算机技术、半导体技术、电子技术和各个行业的具 体应用相结合后的产物; ( 3 ) 嵌入式系统中可运行多任务的操作系统,且系统精简,可实现小内核( 比如 u c o s ,u c l i n u x ) ; 3 、嵌入式系统组成结构 由于嵌入式系统由硬件和软件两部分组成,所以其分类可以从硬件和软件两方面进 行划分。 ( 1 ) 嵌入式系统硬件 嵌入式系统的核心是各种类型的嵌入式处理器,嵌入式处理器与通用处理器最大的 不同点在于:嵌入式c p u 大多工作在为特定用户群所专门设计的系统,它将通用c p u 中许多板卡完成的任务集成到芯片内部,从而有利于嵌入式系统在设计时趋于小型化, 同时还具有很高的效率和可靠性。嵌入式处理器的体系结构经历了从c i s c ( 复杂指令 集) 到r i s c ( 精简指令集) 的转变,位数有4 位、8 位、1 6 位、3 2 位逐步发展到6 4 位。嵌入式处理器是嵌入式系统硬件部分的核心,近年来嵌入式微处理器的主要发展方 向是小体积、高性能、低功耗。专业分工也越来越明显,出现了专业的i p c ( i n t e l l e c t u a l p r o p e r t yc o r e 知识产权供应商) 如a r m 、m i p s 等,这些属于微处理器( m i c r op r o c e s s o r u n i t ,m p u ) ,用于计算机通信领域的嵌入式d s p 处理器( d i g i t a ls i g n a lp r o c e s s o r , d s p ) 和高度集成的嵌入式片上系统( s y s t e mo nc h i p ,s o c ) 。目前几乎每个半导体制造商 都生产嵌入式处理器,并且越来越多的公司开始拥有自主的处理器的设计部门,流行的 结构有3 0 多个系列,其中以a r m 、p o w e r p c 、m i p s 等使用得最为广泛。 ( 2 ) 嵌入式软件 3 江南大学硕士学位论文 嵌入式软件是针对特定应用领域,基于某个固定的硬件平台,用来达到用户预期目 标的计算机软件。为了嵌入式系统的开发更加方便和快捷,需要专门负责管理存储器分 配、中断管理、任务调度等功能的软件,这就是所谓的嵌入式操作系统。嵌入式操作系 统是用来支持嵌入式应用的软件,是嵌入式系统中极为重要的组成部分,它通常包括与 硬件相关的底层驱动程序、系统内核、设备驱动接口,通信协议、图形用户界面( g u i ) 等。与通用操作系统相比较,嵌入式操作系统在系统实时性、硬件依赖性、软件固化性 以及应用专用性等方面,具有更加鲜明的特点。嵌入式系统根据应用场合分为两大类: 一类是面向消费电子产品的非实时操作系统,如l i n u x ,应用设备p d a 、机顶盒等;另 一类则是面向控制、通信等领域的实时操作系统,如v x w o r k s 等。嵌入式系统中的软 件除了嵌入式操作系统外还包括嵌入式应用软件,嵌入式应用软件和普通软件有一定的 区别,它不仅要求在准确性、安全性和稳定性等方面要满足实际应用的需要,并且还要 尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。 2 1 2 嵌入式系统的开发流程 嵌入式系统发展到今天,对应于各种微处理器的硬件平台一般都是通用的、固定的 和成熟的,这就大大减少了由硬件引入错误的机会。此外,由于嵌入式操作系统屏蔽了 底层硬件的复杂性,使得开发者通过操作系统提供的a p i 函数就可以完成大部分的工 作,因此大大简化了开发的过程,提高了系统的稳定性。嵌入式系统通常是一个资源受 限的系统,因此直接在嵌入式系统的硬件平台上编写软件比较困难,有时候甚至是不可 能的。一般需要交叉开发环境( c r o s sd e v e l o p m e n te n v i r o n m e n t ) 的支持。嵌入式系统 的交叉开发环境一般包括交叉编译器、交叉调试器和系统仿真器,其中交叉编译器用于 在宿主机上生成能在目标机子上运行的代码,而交叉调试器和系统仿真器则用于在宿主 机和目标机之间完成嵌入式软件的调试。交叉开发通常采用宿主机目标机模式,宿主机 ( h o s t ) 是一台通用计算机( p c 机或者工作站) ,它通过串口或以太网口与目标机通信。 宿主机的软硬件资源都比较丰富,不但包括功能强大的操作系统( 如l i n u x ) ,而且还有 各种各样优秀的开发软件,能够大大提高嵌入式应用软件的开发速度和效率。目标机 ( t a r g e t ) 一般在嵌入式应用软件开发期间使用,用来区别与嵌入式系统通信的宿主机, 它可以是嵌入式应用软件的实际运行环境,也可以是能够替代实际运行环境的仿真系 统。在采用宿主机目标机模式开发嵌入式应用系统时,首先利用宿主机上丰富的资源和 良好的开发环境开发和仿真调试目标机上的软件,然后通过串口或是以太网口将交叉编 译生成的目标代码传输并装载到目标机上,并在监控程序或者操作系统的支持下利用交 叉调试器进行分析和调试,最后目标机在脱离宿主机单独运行。 2 2u s b 设备- 基础 u s b 设备是一个非常复杂的东西,官方u s b 文档( 可由h n p :w w w u s b o r g 获取) 中有详细的描述。幸运的是,l i n u x 内核提供了一个称为u s b 核心( u s bc o r e ) 的子系 统来处理大部分的复杂性。u s b 设备由配置、接口和端点组成,u s b 驱动程序通常绑 定到u s b 接口上,而不是整个u s b 设备。下面介绍几个重要的概念: 4 第二章嵌入式系统和相关实现技术简介 1 端点【3 叫 u s b 通信最基本的形式是通过一个名为端点( e n d p o i n t ) 的东西。u s b 端点只能往 一个方向传送数据,从主机到设备( 称为输出端点) 或者从设备到主机( 称为输入端点) 。 端点可以看作是单向的管道。u s b 端点有四种不同的类型,分别具有不同的传送数据的 方式:( 1 ) 控制端点:它用来控制对u s b 设备不同部分的访问。它们通常用于配置设 备、获取设备信息、发送命令到设备,或者获取设备的状态报告。这些端点一般体积较 小。每个u s b 设备都有一个名为“端点0 ”的控制端点,u s b 核心使用该端点在设备 插入时进行设备的配置。u s b 协议保证这些传输始终有足够的保留带宽以传送数据到设 备。( 2 ) 中断端点:当u s b 宿主要求设备传输数据时,中断湍点就以一个固定的速率 来传送少量的数据。它们通常还用于发送数据到u s b 设备以控制设备,不过一般不用 来传输大量的数据。u s b 协议保证这些传输始终有足够的保留带宽以传送数据。( 3 ) 批 量( b u l k ) 端点:它传输大批量的数据。这些端点通常比中断端点大得多( 它们可以一 次持有更多的字符) 。它们常见于需要确保没有数据丢失的传输的设备。u s b 协议不保 证这些传输始终可以在特定的时间内完成。如果总线上的空间不足以发送整个批量包, 它将被分割为多个包进行传输。这些端点通常出现在打印机、存储设备和网络设备上。 ( 4 ) 等时端点( i s o c h r o n o u s ) :它同样可以传送大批量的数据,但数据是否到达是没有 保证的。这些端点用于可以应付数据丢失情况的设备,这类设备更注重于保持一个恒定 的数据流。实时的数据收集( 例如音频和视频设备) 几乎毫无例外都使用这类端点。 2 接口【6 】 u s b 端点被捆绑为接口。u s b 接口只处理一种u s b 逻辑连接,例如鼠标、键盘或 者音频流。一些u s b 设备具有多个接口,一个u s b 接口代表了一个基本功能,而每个 u s b 驱动程序控制一个接口,因此对于具有多个接口的u s b 设备来说,l i n u x 需要有多 个不同的驱动程序来处理一个硬件设备。 3 配置 u s b 接口本身被捆绑为配置。一个u s b 设备可以有多个配置,而且可以在配置之 间切换以改变设备的状态。 概言之,u s b 设备由许多不同的逻辑单元组成。这些逻辑单元之间的关系可以简单 地描述如下:( 1 ) 设备通常具有一个或者更多的配置;( 2 ) 配置经常具有一个或者更多 的接口;( 3 ) 接口通常具有一个或者更多的设置;( 4 ) 接口没有或者具有一个以上的端 点。 2 3u s b 驱动体系结构 通用串行总线( u s b ) 是一种外部总线结构,特点是接口统一、方便扩展、支持热插 拔( h o tp l u g ) 和p n p ( p l u g a n d p l a y ) ,简化了计算机与不同类型外设间的连接。u s b 是一 种分层总线结构,并且由一个主机控制器来控制,u s b 主机控制器( h o s tc o n t r o l l e r ) 负 责询问每一个u s b 设备是否有数据需要发送,u s b 不支持设备的直接通信。 5 江南大学硕士学位论文 图2 1 给出了l i n u x 中u s b 驱动的体系结构1 7 】。l i n u xu s b 主机驱动由三部分组成: u s b 主机控制器驱动、u s b 驱动和不同的u s b 设备类驱动【8 】。其中u s b 主机控制器驱 动( h c d ) 是u s b 主机直接与硬件交互的软件模块,它为上层提供统一的接口,屏蔽掉硬 件具体细节。u s b 驱动( u s b d ) 是整个u s b 主机驱动的核心,主要为u s b 设备类驱动 提供相关的接口、提供应用程序访问u s b 系统的文件接口。而u s b 设备类驱动是最终 与应用程序交互的软件模块,主要为访问特定的u s b 设备和应用程序提供接口。l i n u x 内核中自带了主机控制器驱动( h c d ) 和u s b 驱动( u s b d ) ,因此在l i n u x 下编写u s b 设备的驱动程序,从严格意义上讲就是使用u s b 驱动( u s b d ) 子系统定义的数据结构, 宏和函数来编写数据的处理功能【9 j 。 - - - 1 卜 图2 - 11 i n u xu s b 驱动体系结构 fig 2 - 1l i n u xu s bd r i v e rh i b e r a r c h y 2 4l i n u x 驱动程序原理 设备驱动程序在l i n u x 内核中扮演着特殊角色。它是一个独立的黑盒子,使某个特 定的硬件可以响应一个定义良好的内部编程接口,同时完成隐藏设备的工作。在l i n u x 系统里,对用户程序而言设备驱动程序隐藏了设备的具体细节,对各种不同设备提供了 一致的接口。一般来说是把设备映射为一个特殊的设备文件,用户程序可以像对其它文 件一样对此设备文件进行操作。 设备驱动程序可以分为三个主要组成:( 1 ) 自动配置和初始化子程序,负责检测所 要驱动的硬件设备是否存在和是否能正常工作。如果该设备正常,则对这个设备进行初 始化。( 2 ) 服务于i o 请求的子程序,又称为驱动程序的上半部分。这部分程序在执行 的时候,系统仍认为它和进行调用的进程属于同一个进程,只是由用户态变成了核心态, 具有进行此系统调用的用户程序的运行环境。( 3 ) 中断服务子程序,又称为驱动程序的 下半部分。在l i n u x 系统中并不是直接从中断向量表中调用设备驱动程序的中断服务子 程序,而是由l i n u x 系统来接收硬件中断,再由系统调用中断服务子程序,中断可以产 生在任何一个进程运行的时候,因此中断服务程序的调用不依赖于任何进程的状态。 6 第二章嵌入式系统和相关实现技术简介 在系统内部i 0 设备的存取通过一组固定的入口点来进行,这组入口点是由每个设 备的设备驱动程序来提供的。这组入口点使用f i l eo p e r a t i o n s 结构来描述。u s b 接口摄 像头的驱动程序需要提供基本的i o 操作接口函数o p e n 、m m a p 、c l o s e 及对i o 控制接 口函数i o c t l 的实现等。最后需要把它们定义在s t r u c tf i l ep p e r m i o n s 结构变量中。这样当 应用程序对设备文件进行诸如o p e n 、c l o s e 、m m a p 等系统调用操作时,l i n u x 内核将通 过f i l eo p e r a t i o n s 结构变量访问驱动程序提供的函数。 2 5v i d e 0 4 l i n u x 标准 v i d e 0 4 1 i n u x ( 简称v 4 1 ) 是l i n u x 中关于视频设备的内核驱动,它为涉及视频设备的应 用程序编程提供一系列接口函数,这些视频设备包括现今市场上流行的视频捕捉卡和 u s b 摄像头等。1 1 6 , 3 0 利用v i d e 0 4 1 i n u x 获取视频图像一般有以下几步:( 1 ) 打开视频设 备;( 2 ) 设置设备的属性,比如图像的亮度,对比度等等;( 3 ) 开始采集图像数据;( 4 ) 对采集的图像进行处理:( 5 ) 关闭设备【l o - 1 2 1 。 下面介绍一些v i d e 0 4 l i n u x 支持的重要的数据结构: ( 1 ) s t r u c tv i d e o ; 包含摄像头的基本信息,例如设备名c a p a b i l i t y v i d e oc a p a b i l i t y 称、支持的最大最小分辨率、信号源信息等,分别对应着结构体中成员变量name 【3 2 】、maxw idth 、m a x h e i g h t 等; ( 2 ) s t r u c tv i d e op i c t u r e ;v i d e o 包含设备采集图象的各种属性,如_picture b r i g h t n e s s ( 亮度) 、h u e ( 色调) 、c o n t r a s t ( 对比度) 、w h i t e n e s s ( 色度) 、d e p t h ( 深度) 等; ( 3 ) s t r u c tv i d e o; 用于内存映射;m m a p v i d e om m a p ( 4 ) s t r u c tv i d e om b u f ;利用m m a p 进行映射的帧信息,实际上是输入到摄像头存 储缓冲区中的帧信息,包括s i z e ( 帧的大小) 、f r a m e s ( 最多支持的帧数) 、o f f s e t s ( 每帧相对 基址的偏移) 。 2 。6a v i 文件简介 a v i ( a u d i ov i d e oi n t e r l e a v e d 的缩写) 是一种r i f f ( r e s o u r c ei n t e r c h a n g ef i l ef o r m a t 的缩写) 文件格式,多用于音视频捕捉、编辑、回放等应用程序中。通常情况下,一个 a v i 文件可以包含多个不同类型的媒体流( 典型的情况下有一个音频流和一个视频流) , 不过含有单一音频流或单一视频流的a v i 文件也是合法的。 先来介绍r i f f 文件格式。r i f f 文件使用四字符码f o u r c c ( f o u r - c h a r a c t e rc o d e ) 来表征类型,比如r i f f 、a v i 、l i s t 等。r i f f 文件中最开始的4 个字节是一 个四字符码r i f f ,表示这是一个r i f f 文件;紧跟着后面用4 个字节表示此r i f f 文 件的大小;然后又是个四字符码说明文件的具体类型( 比如a v i 、w a v e ) ;最后就是 实际的数据【1 3 , 1 4 。r i f f 文件的实际数据中,通常还使用了列表( l i s t ) 和块( c h u n k ) 的形式来组织。列表可以嵌套子列表和块。列表( li s t ) 的结构为:( l i s t ,l i s t s i z e , l i s t t y p e ,l i s t d a t a ) ;其中l i s t 是一个四字符码,表示这是一个列表;l i s t s i z e 占用4 字节,记录了整个列表的大小;l i s t t y p e 也是一个四字符码,表示本列表的具体类型; l i s t d a t a 是实际的列表数据。块( c h u n k ) 的结构为:( c k l d ,c k s i z e ,c k d a t a ) ;其中c k l d 7 江南大学硕士学位论文 是一个表示块类型的四字符码;c k s i z e 占用4 字节,记录了整个块的大小;c k d a t a 为实 际的块数据。a v i 文件类型用一个四字符码a v i 来表示。整个a v i 文件的结构为: 一个r i f f 头+ 两个列表( 一个用于描述媒体流格式、一个用于保存媒体流数据) + 一 个可选的索引块 2 3 】。a v i 文件的展开结构大致如下: r i f f ( a v i l i s t ( h d r l a v i h ( 主a v i 信息头数据) l i s t ( s t r l s t r h ( 流的头信息数据) s t r f ( 流的格式信息数据) 【s t r d ( 可选的额外的头信息数据) 】 【s t m ( 可选的流的名字) 】 ) ) l i s t ( m o v i 数据块 ) 【i d x l ( 可选的a v i 索引块数据) 】 ) 2 7 本章小结 本章主要介绍了嵌入式系统的基本概念和实现嵌入式图像采集系统所涉及的相关 技术。具体来说包括以下内容:首先介绍嵌入式系统的定义、特点及组成结构,以及嵌 入式系统的开发流程,然后介绍了u s b 设备基础,u s b 驱动体系结构,l i n u x 驱动程序 原理,掌握这些内容在设计开发u s b 驱动程序时很重要,最后介绍了v i d e 0 4 1 i n u x 标准 和a v i 文件格式简介,这两部分的内容是编写上层图像采集应用程序和a v i 文件生成程 序模块的基础。 8 第三章系统开发平台介绍 第三章系统开发平台介绍 3 1a r m 微处理器概述 a r m ( a d v a n c e dr i s cm a c h i n e s ) i l 可以认为是一个公司的名字,也可以认为是对一 类微处理器的通称,还可以认为是一种技术的名字。1 9 9 1 年a r m 公司成立于英国剑桥, 主要出售芯片设计技术的授权。目前采用a r m 技术知识产权( i p ) 核的微处理器,即通常 所说的a r m 微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无 线系统等各类产品市场。采用r i s c 架构的a r m 微处理器一般具有如下特点:体积小、 低功耗、低成本、高性能;支持t h u m b ( 1 6 位) a r m ( 3 2 位) 双指令集,能很好的兼容8 位1 6 位器件;大量使用寄存器,指令执行速度更快;大多数数据操作都是在寄存器中 完成;寻址方式灵活简单,执行效率高;指令长度固定。 3 2 系统硬件平台q t 2 4 4 0a r m 9 2 0 t 开发板简介 l :处理器:$ 3 c 2 4 4 0 a ,其中主频4 0 0 m h z ,a r m9 2 0 t 内核; 2 :r o m :1 6 m b i tn o rf l a s h ,1 6 b i t 宽度; 3 :电子盘:5 1 2 mb i tn a n df l a s h ,8 b i t 宽度; 4 - r a m :5 1 2 mb i ts d r a m ,1 3 3 m h z ,3 2 b i t 宽度( 两片组成) ; 5 :电源:7 - 2 4 v 宽电压输入,l t l 7 6 5 高效d c d c 降压,标配1 2 v 电源; 6 :网络:1 0 m b p s 低功耗嵌入式专用以太网网络芯片c s 8 9 0 0 a c q 3 ,接口为标准 r j 4 5 插座,集成网络变压器,安全可靠; 7 :串口:3 路串口,两路带握手信号,可接调制解调器或者g p r s 。 8 :液晶接口:支持c s t n ,t f t 等多种l c d ; 9 :u s bh o s t :2 个u s bh o s t 接口,u s bf u l ls p e e d ,可外接h u b 扩展; l o :u s bd e v i c e :l 路u s bd e v i c e 接口,u s bf u l ls p e e d ; ll :j t a g 接口:a r m 标准2 0 芯j t a g 接口; 1 2 :r t c 时钟:$ 3 c 2 4 4 0 a 内部集成,外部提供r t c 电池,插座安装,可更换; 1 3 :电路不采用任何加密措施,如c p l d 等器件,确保用户能1 0 0 用于项目; 3 3 操作系统软件平台概述 系统开发采用的操作系统平台是a r m l i n u x ,版本号是2 4 1 8 。下面简单介绍搭建主 机开发环境和重新编译内核的过程。 因为对于嵌入式系统的开发,没有足够的资源在本机( 即板上系统) 运行开发工具 和调试工具,所以嵌入式系统软件的开发通常采用交叉编译调试的方式。交叉编译调试 环境建立在宿主机( 即一台p c 机) 上,对应的开发板叫做目标板。开发时使用宿主机 上的交叉编译、汇编及连接工具形成可执行的二迸制代码,然后把可执行文件下载到目 标机上运行。调试时的方法很多,可以使用串口,以太网口等。进行嵌入式系统开发的 首要工作就是要安装一台装有指定操作系统的p c 机作宿主开发机器,对于嵌入式 9 江南大学硕士学位论文 l i n u x ,宿主机上的操作系统一般要求为r e d h a tl i n u x 。在l i n u x 系统下配置如下开发环 境:安装工具链c r o s s 2 9 5 3 m r b z 2 ,建立交叉编译环境;配置m i n i c o m 用于串口调试; 安装用于p c 机与目标板传输文件的通信软件z t e l n e t 一0 9 1 7 m z i 3 8 6 r p m 。 完成主机开发环境搭建的工作之后,需要重新配置i i n u x 内核并编译【l5 1 。在配置内 核的时候仅加载设置了一些与开发设计嵌入式图像采集系统相关的选项,比如u s b s u p p o r t ( 各种u s b 设备的支持) ,m u l t i m e d i a d e v i c e s ( 多媒体设备的支持) 支持中的v i d e o f o r l i n u x 等。然后编译内核得到新的l i n u x 内核文件。将新的内核文件烧写到目标板并重 启目标板系统。至此,开发设计基于u s b 摄像头的嵌入式图像采集系统所需的软件配 置工作已完成。 3 4 本章小结 本章主要涉及系统开发软硬件平台方面的内容。首先对系统硬件平台q t 2 4 4 0 a r m 9 2 0 t 开发板作个简单介绍,然后简单介绍搭建主机开发环境和重新编译内核的过 程,从而构建出开发嵌入式图像采集系统所需要的平台。 l o 第四章系统软件设计 第四章系统软件设计 4 1 系统软件功能模块 本文的研究内容是设计开发一个基于u s b 摄像头的嵌入式图像采集系统。这个图 像采集系统由u s b 摄像头驱动程序模块、上层图像采集程序模块、a v i 文件生成程序模 块构成。 开发设计的u s b 摄像头驱动程序是针对u s b 摄像头芯片z c 3 0 1 p l h 并且帧速得到改 善的驱动程序。在实现驱动程序模块时采用的方法如下:1 、基于自由软件s p c a 5 x x 结合 所用摄像头芯片z c 3 0 1 p l h 对s p c a 5 x x 驱动程序进行合理裁剪;2 、双u r b 轮流通信的方 法,双帧缓冲的方法,以及对现有的v 4 l 协议改进的方法【1 6 。驯;3 、开发设计的驱动程 序提供m m a p 0 系统调用,而不提供r e a d ( ) 系统调用,这样在上层应用程序申请获得图像

温馨提示

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

评论

0/150

提交评论