一、
Linux
系统中的
USB
摄像头驱动程序
USB摄像头以其良好的性能和低廉的价格得到广泛应用。同时因其灵活、方便的
特性,易于集成到嵌入式系统中。但是如果使用现有的符合Video for Linux标准的驱动程序配合通用应用程序,难以充分利用USB带宽,帧速不高,不易满足实时监控等要求。本文首先介绍在Linux系统下USB摄像头驱动编制的一般方法,然后说明在此基础上如何提高帧速。
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> |
USB
设备驱动程序完全符合通用设备驱动的准则,不同的是内核提供了一些特别的
API
函数,方便驱动注册、销毁自己,例如
usb_reSister()
和
usb_dereSister()
;
2
.
4
版的内核还提供了对于
hotplug
的支持。
1
.
1 USB
摄像头驱动的一般编写方法
摄像头属于视频类设备。在目前的
Linux
核心中,视频部分的标准是
Video for Linux(
简称
V4L)
。这个标准其实定义了一套接口,内核、驱动、应用程序以这个接口为标准进行交流。目前的
V4L
涵盖了视、音频流捕捉及处理等内容,
USB
摄像头也属于它支持的范畴。
因此,
USB
摄像头的驱动应当与内核提供的视频驱动挂钩。即首先在驱动中声明一个
video_device
结构,并为其指定文件操作函数指针数组.
fops
,向系统注册。在应用程序发出文件操作的相关命令时,核心根据这些指针调用相应函数,并将该结构作为参数传递给它们。这样,就完成了驱动和核心之间的通信。例如:
static struct video_device vdev_template
=
{……}
;
/
/声明
video_device
,指出挂接驱动
|