http://blog.csdn.net/leo115/article/details/7331349

我要做一个s3c6410 的摄像头视频采集的项目,由于我接手的这套开发板,内核编译的使用可能没有配置摄像头头驱动程序,所以我尝试了好多时间安装摄像头驱动,因为是新手,所以吃的苦头比较多,在前期的诸多尝试之后,经一学长帮助,立马入门了。我这套板子原本自带了一个2X10插口的摄像头模块,是ov9650但是编译驱动的时候怎么都不成功,我实力不到!为了图快,我编译了内核自带的USB摄像头驱动,这个还是很快的,所有的arm板都支持!

http://eatdrinkmanwoman.spaces.live.com/blog/cns!97719476F5BAEDA4!1336.entry

http://weijb0606.blog.163.com/blog/static/131286274201063152423963/

本文所说的摄像头(Webcam),特指USB摄像头。

  在Windows下,摄像头驱动由厂商开发并提供。但在Linux下,因商业利益有限,只有极少厂商愿意提供摄像头驱动支持。这并不妨碍Linux下摄像头的使用——广大第三方志愿者维护着大大小小的驱动。之前做过一个嵌入式皮毛项目,虽然摄像头驱动不关我的事,在好奇心驱使下简要探索了一番。结果是有些胸闷,它们像蜘蛛丝一样杂乱。写本文的动机是想理清一下主线,给后来者提供一点有限的参考,但无法保证下面的文字完全正确。

  常见的摄像头驱动有以下几个系列: OVCam drivers(ov5xx)

  该系列驱动是针对OmniVision OV5xx系列芯片,此类芯片被广泛运用于各种USB摄像头中,在嵌入式开发板上尤其常见。凡是使用了OV511/OV511+/OV518 /OV6620/OV6630/OV7610/OV7620/OV7 620AE等图像传感器的摄像头都可以在该驱动下工作。

  项目主页:http://alpha.dyndns.org/ov511/

  Philips USB Webcam Driver(pwc) 该驱动主要用于Philips及pwc芯片兼容摄像头。由于原开发者与Philips公司签有保密协定,该驱动以二进制形式提供,后来被踢出内核,引起一场口水战:是用户需求重要还是保持内核纯洁重要?所幸后续开发者从原项目上创建了一个新的分支,使得该项目继续存活。

  项目主页:http://www.saillard.org/linux/pwc/

  QuickCam USB camera driver (qc-usb) 该驱动主要用于Logitech公司的QuickCam Express系列和其它兼容型号摄像头。最初由Georg Acher开发,当时命名为qce-ga。Jean-Frederic Clere参考该驱动创建出了第一个Video4Linux兼容驱动。从那开始,不断有开发者加入,使得该驱动逐渐能够支持新的摄像头和芯片。在此期间,该驱动更名为qc-usb,更为广泛地支持其它QuickCam USB摄像头,而不再是局限于Express系列。

  项目主页:http://qce-ga.sourceforge.NET/

  QuickCam Messenger & Communicate driver(quickcam) 这是另一个针对QuickCam摄像头的驱动,它仅支持某一些型号,并且与qc-usb驱动不兼容。项目主页:http://home.mag.cx/messenger/

  SPCA webcam driver(gspca/spca5xx) 该系列驱动适用于Sunplus芯片摄像头,也适用于其它芯片,如目前国内山寨摄像头一哥“中星微”(Z-Star)芯片。Michel Xhaard是该项目的维护者,他在60岁左右的时候(大约是2003年)从一种普通常见的驱动入手,进而不断修改开发成一个支持250种以上摄像头的通用驱动。他还写了流媒体服务器spcaserv与客户端spcaview。不少高校所谓的嵌入式无线网络视频传输项目,就是从这两个东西来的。

  项目主页:http://mxhaard.free.fr/spca5xx.html

  Linux UVC driver(uvc) 该驱动适用于符合USB视频类(USB Video Class)规范的摄像头设备,它包括V4L2内核设备驱动和用户空间工具补丁。大多数大容量存储器设备(如优盘)都遵循USB规范,因而仅用一个单一驱动就可以操作它们。与此类似,UVC兼容外设只需要一个通用驱动即可。

  USB摄像头大体上可以二分为UVC cameras和non-UVC cameras。推荐购买UVC cameras。UVC是一个开放的标准,拥有维护良好的驱动,它属于内核代码的一部分。插入摄像头后就可以工作,而无须编译或安装额外的驱动。non- UVC cameras通常情况下不比UVC cameras工作出色,前者的驱动并不遵循通用的协议,需要针对每种摄像头做出单独的处理,这往往需要一个逆向工程的探索过程。

  判断一个摄像头是否属于UVC规范可以使用下面方法:

  1.使用lsusb命令或其它硬件信息查看工具找出摄像头的设备号(Vendor ID)和产品号(Product ID)。如Logitech Quickcam for Notebooks Pro摄像头是046d:08cb;

  2.查找是否有视频类接口信息

  lsusb -d 046d:08cb -v | grep "14 Video"

  如果该摄像头兼容UVC,则会输出类似信息

  bFunctionClass 14 Video

  bInterfaceClass 14 Video

  bInterfaceClass 14 Video

  bInterfaceClass 14 Video

  若无以上信息,则是non-UVC设备。

  项目主页:http://linux-uvc.berlios.de/

  在Linux下摄像头驱动有三种存在形式,内置于内核(within the kernel),做为一个外挂的模块(module),或者是预编译的二进制程序(pre-compiled binary)。

  Linux内核树会不断合并优秀的驱动。从2.4内核起,ov5xx驱动就已经是内核代码的一部分。从2.6.26开始,Linux内核原生包含uvc 驱动。2.6.27内核又吸收进了gspca/spca5xx系列驱动。常见的Linux发行版所配置的内核,一般都已将这些驱动选项打开,而无需用户另外编译。内核的.config文件中有许多配置变量等式,用来说明内核配置的结果。y表示本编译选项对应的内核代码被静态编译进 Linux内核;m表示本编译选项对应的内核代码被编译成模块;n表示不选择此编译选项。

  以Fedora12/boot下的config文件为例

  cat /boot/config-2.6.31.12-174.2.3.fc12.i686 | grep CONFIG_USB_GSPCA

  CONFIG_USB_GSPCA=m

  CONFIG_USB_GSPCA_CONEX=m

  CONFIG_USB_GSPCA_ETOMS=m

  CONFIG_USB_GSPCA_FINEPIX=m

  CONFIG_USB_GSPCA_MARS=m

  CONFIG_USB_GSPCA_MR97310A=m

  CONFIG_USB_GSPCA_OV519=m

  CONFIG_USB_GSPCA_OV534=m

  CONFIG_USB_GSPCA_PAC207=m

  CONFIG_USB_GSPCA_PAC7311=m

  CONFIG_USB_GSPCA_SN9C20X=m

  CONFIG_USB_GSPCA_SN9C20X_EVDEV=y

  CONFIG_USB_GSPCA_SONIXB=m

  CONFIG_USB_GSPCA_SONIXJ=m

  CONFIG_USB_GSPCA_SPCA500=m

  CONFIG_USB_GSPCA_SPCA501=m

  CONFIG_USB_GSPCA_SPCA505=m

  CONFIG_USB_GSPCA_SPCA506=m

  CONFIG_USB_GSPCA_SPCA508=m

  CONFIG_USB_GSPCA_SPCA561=m

  CONFIG_USB_GSPCA_SQ905=m

  CONFIG_USB_GSPCA_SQ905C=m

  CONFIG_USB_GSPCA_STK014=m

  CONFIG_USB_GSPCA_SUNPLUS=m

  CONFIG_USB_GSPCA_T613=m

  CONFIG_USB_GSPCA_TV8532=m

  CONFIG_USB_GSPCA_VC032X=m

  CONFIG_USB_GSPCA_ZC3XX=m

  可以看到gspca系列驱动被编译为模块。当插入摄像头后,使用dmesg命令可以打印出以下信息:

  usb 1-1.2: new full speed USB device using ehci_hcd and address 6

  usb 1-1.2: New USB device found, idVendor=046d, idProduct=08af

  usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0

  usb 1-1.2: configuration #1 chosen from 1 choice

  gspca: probing 046d:08af

  zc3xx: probe 2wr ov vga 0x0000

  zc3xx: probe sensor -> 0011

  zc3xx: Find Sensor HV7131R(c)

  gspca: probe ok

  这说明该摄像头被识别,且自动挂载了gspca系列下的zc3xx驱动。

  如果由于某种原因,已配置的内核中没有包括摄像头驱动,可以重新配置内核选项,用新编译的内核替换原有的旧内核。或者是依据设备号及产品号,直接到对应驱动的项目主页,下载源码进行编译。

  最后总结一下

  如果你想买一个摄像头,推荐买Logitech的,买符合UVC驱动的,可以到这里挑一款。

  如果你已经有了一个摄像头,先插进去看看,Linux对它有没有反应。记录dmesg输出信息,记录lsusb输出设备号,以设备号为关键字上Google搜索。

  参考资源 http://www.tldp.org/HOWTO/Webcam-HOWTO/

  http://www.chineselinuxuniversity.Net/courses/kern el/articles/19988.shtml

  http://www.quickcamteam.net/

Linux 下摄像头驱动支持情况(arm linux 同样适用)相关推荐

  1. Linux 下摄像头驱动支持情况

    http://eatdrinkmanwoman.spaces.live.com/blog/cns!97719476F5BAEDA4!1336.entry http://weijb0606.blog.1 ...

  2. linux下摄像头驱动分类

    在Windows下,摄像头驱动由厂商开发并提供.但在Linux下,因商业利益有限,只有极少厂商愿意提供摄像头驱动支持.这并不妨碍Linux下摄像头的使用--广大第三方志愿者维护着大大小小的驱动.之前做 ...

  3. linux下camera驱动分析_《Linux设备驱动程序》(五)——字符设备驱动(下)

    上一节介绍了字符驱动中的一些概念,这一节我们将会基于系统内存编写一个字符设备驱动,加深对上一节中的概念的理解. 本节主要学会的内容: 字符设备注册 对设备节点进行cat和echo操作 驱动设计 编写驱 ...

  4. linux下I2C驱动发送IO时序,Linux I2C 驱动阅读的碰到的一些网上没有提到的东西

    # re: Linux I2C 驱动阅读的碰到的一些网上没有提到的东西  回复  更多评论 2009-04-11 13:39 by 初学都 楼主,你好.我看了你那篇<Linux I2C核心.总线 ...

  5. linux下i2c驱动架构全面分析,linux I2C驱动 :整体架构(1)

    有一篇很不错的文章,可以看这篇: 本文更重要的是一些要点的记录: I2C 驱动分为: I2C 核心.I2C总线驱动. I2C 设备驱动 I2C 核心: 提供I2C总线驱动和设备驱动的注册.注销方法等等 ...

  6. linux下IIC驱动开发分析

    1.  IIC规范 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.IIC总线产生于在80年代,最初为音频和 ...

  7. 在Linux下如何驱动联想D-link DFE-530TX(也叫D-link DFE-530TX Rev B)网卡

    在Linux下如何驱动联想D-link DFE-530TX(也叫D-link DFE-530TX Rev B)网卡 2001-05-18 18:22 发布者:郑良 阅读次数:435 在Linux下如何 ...

  8. Linux下网卡驱动安装及故障排除

    Linux下网卡驱动安装及故障排除 赛迪网 2007-4-26 9:10:00文/forgiven 网卡是Linux服务器中最重要网络设备.据统计,Linux网络故障有35%在物理层.25%在数据链路 ...

  9. linux下让cp2102支持高于921600bps波特率的方法

    本文主要介绍通过修改内核驱动的方法,使得cp2102支持高于921600bps波特率的方法. 1.windows下使用cp2102 usb转ttl模块调试rk3588板卡(默认波特率为1500000) ...

  10. linux下I2C驱动体系结构及在FL2440开发板上的具体实现

    最近一段时间,我在网上看了一些关于linux下i2c的文档,对i2c有了一些较浅层次了解.写这篇博客,主要是对现在已经掌握知识的巩固. Linux下I2C驱动体系结构 Linux下I2C驱动体系结构由 ...

最新文章

  1. NET工程师求职面试必杀技
  2. HDU1824 2-sat
  3. TFT_LCD液晶屏驱动设计与验证
  4. 前端学习(3280):iterator
  5. 从MySql 数据库中导出数据并生成指定格式xml文件
  6. 特斯拉上海超级工厂已在建设动力系统厂房
  7. slab 着色如何最大限度地利用 Cache Lines 或 Cache Rows?
  8. Spark机器学习(7):KMenas算法
  9. Spark内核解析之二:Spark 部署模式
  10. linux ubuntu 查看历史命令
  11. 数学专业考研计算机,过来人谈数学专业考研:万学之基 万物皆数也
  12. 使用python代码调用三汇语音卡硬件拨打电话
  13. 猫眼爬取专业评分的python技术
  14. 计算机专业笔记本硬盘需要多少,笔记本电脑固态硬盘要多大的合适_教你购买适合的固态硬盘...
  15. 加密项目是否采用DAO模式 首先考量这8个因素
  16. android打印功能,Android通过OTG线连接打印机实现打印功能
  17. Rust企业落地探索
  18. c语言移动光标到指定坐标,C语言实现控制台中光标随意移动
  19. 如何将本地的代码上传到github
  20. Matlab数字图像处理 实验1、数字图像的傅里叶变换

热门文章

  1. The Last Non-zero Digit
  2. neo4j学习总结--第三课 Cypher(CQL)命令一
  3. 关于finecms v5 会员头像 任意文件上传漏洞分析
  4. 10个网站为初学者学习JavaScript
  5. countifs函数怎么用,excel函数的操作步骤
  6. codeforces 1538G Gift Set
  7. 解决Visio另存为(或者导出)pdf字符间距变化/不均等字母间距的问题
  8. 2021不堪回首,2022满路荆棘,但依然乐观努力
  9. android侧滑菜单 动画,Android 打造完美的侧滑菜单/侧滑View控件
  10. 真正免费的天气API,无需注册申请key