1 / 9
文档名称:

Linux系统下USB摄像头驱动开发.docx

格式:docx   大小:23KB   页数:9页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Linux系统下USB摄像头驱动开发.docx

上传人:我是开始 2019/8/13 文件大小:23 KB

下载得到文件列表

Linux系统下USB摄像头驱动开发.docx

文档介绍

文档介绍:摘要介绍了在系统下开发符合标准的摄像头驱动的方法,并对该标准提出不间断采集的改进思路,配合双、双帧缓冲等方法,提高采集速度。关键词设备驱动摄像头不间断采集摄像头以其良好的性能和低廉的价格得到广泛应用。同时因其灵活、方便的特性,易于集成到嵌入式系统中。但是如果使用现有的符合标准的驱动程序配合通用应用程序,难以充分利用带宽,帧速不高,不易满足实时监控等要求。本文首先介绍在系统下摄像头驱动编制的一般方法,然后说明在此基础上如何提高帧速。 1系统中的摄像头驱动程序设备驱动程序完全符合通用设备驱动的准则,不同的是内核提供了一些特别的函数,方便驱动注册、销毁自己,例如_和_;。 。在目前的核心中,视频部分的标准是简称4。这个标准其实定义了一套接口,内核、驱动、应用程序以这个接口为标准进行交流。目前的4涵盖了视、音频流捕捉及处理等内容,摄像头也属于它支持的范畴。因此,摄像头的驱动应当与内核提供的视频驱动挂钩。即首先在驱动中声明一个_结构,并为其指定文件操作函数指针数组.,向系统注册。在应用程序发出文件操作的相关命令时,核心根据这些指针调用相应函数,并将该结构作为参数传递给它们。这样,就完成了驱动和核心之间的通信。例如范文先生网收集整理__={……};//声明_,指出挂接驱动_511_={……};//声明本驱动的文件操作函数指针_*=_;//从文件指针中提取出_结构在_结构中,有一个私有指针,可以将它指向一块保留内存。在这块内存中,保存着本驱动、本设备的相关初始化信息。这块内存的申请、初始化、指针指向等工作都是在驱动的枚举函数中完成。这样,在枚举函数将控制权返还给系统后,因为内核不销毁保留内存,所以驱动仍然保留着自己的信息。这点与系统中驱动有异曲同工之处。当然,在驱动卸载函数中,应当将申请的各块内存全部释放。 ,.1总线标准定义了控制、中断、批量、等时等四种管道。对于时间性极强但是准确度要求不高的视频捕捉应用来说,摄像头应当使用等时传输方式。为了尽可能快地得到图像数据,应当在中指定__标志。->_=__;//尽可能快地发出本系统中任何传输都通过实现。为提高速度,可以考虑扩大的缓冲,这样可以降低每个事务中握手信息所占比例,提高有效数据的传输速度。但是受限于总线带宽和具体的设备芯片,单纯扩大的缓冲不能无限制地解决问题。具体分析一下传输在操作系统中的实现每次传输都要包括的建立、发出、回收、数据整理等阶段,这些时间不产生有效数据。因此可以建立两个,在等待一个被回收时,也就是图像正在被传感器采集时,处理、初始化另一个,并在回收后立刻将其发出。两个交替使用,大大减少了额外时间。工作流程如图1所示。这个过程是在的完成例程中实现的,有两点需要注意首先处理再次初始化的代码时间不能长,否则会造成完成例程的重人,如果确实来不及,可以在完成例程中设定标志,例如数据采集好旗语,由应用程序使用阻塞来查询该旗语并做处理;其次由于可能会在完成例程中停留较长时间,系统负担较大,,有限度地减轻系统负担。 ,文件操作通常是由、等系统调用来完成。这些系统调用在驱动中的解决方法就是用__、__等函数在核态、户态内存空间中互相拷贝。但是