关于linux系统的USB Camera驱动说明
2016-01-21 09:31
525 查看
对于在嵌入式linux设备上使用USB摄像头,很多人还很陌生,不知道是怎样的工作原理
我已经在XC2440上实现了针对USB摄像头的多种应用程序,包括预览、拍照、录像、远程视频监控等
最近有很多用户问我关于USB摄像头的问题,可能在理解上都有误区,以为要自己写驱动
我写个简短的介绍,说明USB Camera驱动和应用的关系
USB摄像头原理就是用一个DSP芯片驱动一个CMOS,这个DSP芯片可以提供USB通讯协议,CMOS的所有配置操作都是由DSP控制完成的,CMOS数据流通过USB传给上位机
从我们用户角度来看,就是把CMOS的CPI接口转成USB接口,但我们不必关心CMOS是怎样工作的,并且软件接口都是统一的
重点强调:USB Camera驱动是linux系统中的,和QT无关,应用程序只是调用linux中的驱动接口,QT只是提供了一个UI框架
几点说明:
1. 我们用的linux内核中已经集成了USB Camera驱动,只需要加入配置选项即可,详见linux内核驱动移植手册的第十八节
2. 光盘里提供的zImage镜像已经包含USB Camera驱动,可直接使用
3. 现在所使用的USB Camera一般都是UVC(免驱)的,不用关心Camera内部使用什么芯片,在配置里只选择UVC即可
4. USB Camera的驱动是标准V4L2结构的驱动,是linux内核中一直都有的,我们不必关心驱动(有兴趣的可以分析),只关心如何写应用程序调用驱动接口
5. 驱动在文件系统下生成的设备是/dev/video0,如果再插一个camera就是/dev/video1,以此类推
对于USB摄像头的要求:(就是电脑摄像头)
1. 支持MJPEG格式的数据流
我们用的平台和程序只能使用MJPEG格式,由于USB接口协议的限制,不能使用YUYV格式。但有很多摄像头不支持MJPEG,购买之前一定要先了解是否支持MJPEG
2. 至少30万像素
在前几年,电脑摄像头大部分是30万像素(也有10万的),因为程序中要拍摄640X480的照片,所以最小要30万像素。现在有高清的,130万~500万,价格也较高,但是高清的一般的都支持MJPEG
我已经在XC2440上实现了针对USB摄像头的多种应用程序,包括预览、拍照、录像、远程视频监控等
最近有很多用户问我关于USB摄像头的问题,可能在理解上都有误区,以为要自己写驱动
我写个简短的介绍,说明USB Camera驱动和应用的关系
USB摄像头原理就是用一个DSP芯片驱动一个CMOS,这个DSP芯片可以提供USB通讯协议,CMOS的所有配置操作都是由DSP控制完成的,CMOS数据流通过USB传给上位机
从我们用户角度来看,就是把CMOS的CPI接口转成USB接口,但我们不必关心CMOS是怎样工作的,并且软件接口都是统一的
重点强调:USB Camera驱动是linux系统中的,和QT无关,应用程序只是调用linux中的驱动接口,QT只是提供了一个UI框架
几点说明:
1. 我们用的linux内核中已经集成了USB Camera驱动,只需要加入配置选项即可,详见linux内核驱动移植手册的第十八节
2. 光盘里提供的zImage镜像已经包含USB Camera驱动,可直接使用
3. 现在所使用的USB Camera一般都是UVC(免驱)的,不用关心Camera内部使用什么芯片,在配置里只选择UVC即可
4. USB Camera的驱动是标准V4L2结构的驱动,是linux内核中一直都有的,我们不必关心驱动(有兴趣的可以分析),只关心如何写应用程序调用驱动接口
5. 驱动在文件系统下生成的设备是/dev/video0,如果再插一个camera就是/dev/video1,以此类推
对于USB摄像头的要求:(就是电脑摄像头)
1. 支持MJPEG格式的数据流
我们用的平台和程序只能使用MJPEG格式,由于USB接口协议的限制,不能使用YUYV格式。但有很多摄像头不支持MJPEG,购买之前一定要先了解是否支持MJPEG
2. 至少30万像素
在前几年,电脑摄像头大部分是30万像素(也有10万的),因为程序中要拍摄640X480的照片,所以最小要30万像素。现在有高清的,130万~500万,价格也较高,但是高清的一般的都支持MJPEG
相关文章推荐
- Linux内核模块传参
- Linux下静态库和动态库(共享库)的制作与使用
- 各个版本linux的经典资料
- linux下基于ipmsg协议的飞鸽传书(一)
- linux内核面试题一
- Linux独立中断栈学习笔记及验证实验(ARM、x86)
- linux 多点触控协议
- 盘点Linux内核源码中使用宏定义的若干技巧(2)
- Linux驱动学习笔记之触摸屏驱动
- 关于虚拟机下Linux操作系统与2440开发板的配置那点事
- Linux下安装Matlab2014及破解
- 从零开始学Linux[一]:基本命令
- Arch Linux安装笔记(3)图形界面篇
- 在linux下挂载ISO镜像文件
- linux 下使用man查看命令帮助时 [] <>什么含义
- linux中内存泄漏的检测(三)定制化的new/delete
- Linux下Opencv的安装及配置使用
- linux中内存泄漏的检测(二)定制化的malloc/free
- linux中内存泄漏的检测(一)最简单的方法
- Linux中exec命令相关