- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux系统下USB摄像头驱动多缓冲与图像采集研究 摘要:通过对基于中星微ZC0301芯片的USB摄像头符合Video for Linux和Video for Linux Version Two标准的两个驱动程序的分析研究,给出了符合这两种标准的USB摄像头驱动程序在图像数据多帧缓冲和图像采集设计中的不同点,并实现了相应的图像采集程序。 关键词:Linux;摄像头;驱动程序;Video for Linux;Video for Linux Two;多缓冲 中图分类号:TP316文献标识码:A文章编号:1009-3044(2008)33-1485-04 The Investigation of Multi-Buffer in USB Camera Driving Program and Image Capture in Linux System ZHANG Wen-ya (School of Information Science Technology, Southwest Jiaotong University, Chengdu 610031, China) Abstract: This paper analyzes two USB camera drivingprograms of Vimicro companys ZC0301 chip.One is in conformity with the Video for Linux principle and the other is in conformity with the Video for Linux Two principle.The difference between the two programs about multi-buffer and image capture is given,and the image capture program is implemented. Key words: Linux; camera; device driver; Video for Linux; Video for Linux Two; multi-buffer 1 引言 USB摄像头目前已得到广泛应用。因其灵活、方便的特性,易于集成到嵌入式系统中。比如视频聊天、网络监控和可视电话等。在我们开发的无线网络摄像机系统中,USB摄像头直接连接到嵌入式开发版,先用摄像头进行图像采集,再通过嵌入式模块进行进一步的处理。摄像头驱动程序一般在设计中采用符合V4L(Video for Linux)标准的驱动程序配合相应的应用程序,用的比较多的是开源的spca5xx驱动程序,但随着Video for Linux Version Two标准的出现,在一些驱动中也采用符合V4L2(Video for Linux Version Two)标准的驱动程序配合相应的应用程序。作者在开发过程中使用的是基于中星微ZC0301芯片的摄像头。通过在设计过程中对这款摄像头分别基于这两种标准的驱动程序的研究,给出了这两种驱动程序在多缓冲和图像采集方面处理的不同点,并分别给出相应的图像采集程序框架,以期加深读者对驱动程序的理解,根据实际开发需要更好的进行应用程序方面的设计。符合V4L的驱动程序参考开源的gspcav1驱动程序,符合V4L2的驱动程序参考linux2.6内核内的zc0301驱动程序。 2 使用多缓冲提高效果 在Linux系统中,文件操作通常是由read、write等系统调用来完成。通过在驱动中用copy_to_user,copy_from_user等函数在内核态、用户态内存空间中互相拷贝数据。但我们主要处理的是大批量的图像数据,采用上面的方法,频繁的进行读写,会增加时间开销。因此一般采用内存映射的方法来解决。mmap 方法是 file_operation 结构的一部分, 当发出 mmap系统调用时被引用。首先申请足够大的内核态内存,将其作为图像数据缓冲空间,URB带回的图像数据在这里暂存;然后使用函数将其逐页映射到用户空间中。用户态的图像处理程序使用mmap() 函数,直接读写内核态图像缓冲内存,这样可以大大减少额外开销,提高效率。 2.1 符合V4L标准的驱动中的多帧缓冲 在gspcav1驱动程序中,采用双帧缓冲,即在核态内存申请两帧图像缓冲内存。 gspcav1的设备数据结构 struct usb_spca50x { struct video_device *vdev; struct usb_device *dev; char *fbuf; struct spca
有哪些信誉好的足球投注网站
文档评论(0)