USB摄像头驱动框架分析
usb摄像头驱动程序,里面涉及硬件的操作。比如说,想设置亮度的时候,需要把亮度的参数发给硬件。去得到真正视频数据的时候,需要访问硬件得到数据。usb摄像头驱动程序框架与虚拟摄像头驱动程序的框架是一样的。
1、构造一个usb_driver
2、设置
probe:
2.1 分配video_device : video_device_alloc
2.2 设置
.fops
.ioctl_ops(里面需要设置11项)
如果需要内核提供的缓冲区操作函数,还需要构造一个videobuf_queue_ops
2.3 注册 :video_register_device
id_table: 表示支持哪些usb设备
当将usb设备接到板子上后,如果该设备能够被driver所支持,也就是说吻合这个id_table,此时probe函数就会被调用。在probe函数里面就可以做自己想做的事情了。
linux内核已经自带有usb摄像头的驱动程序,它支持UVC规格的摄像头
UVC:usb video class
基本上对于Windows下面,那种即插即用的usb摄像头,就吻合UVC规范的,不需要自己再去安装驱动程序。
UVC驱动所在路径:drivers\media\video\uvc\(3.4.2内核)
uvc_driver.c分析:
1、usb_register(&uvc_driver.driver)
2、
struct uvc_driver uvc_driver = {
.driver = {
.name = "uvcvideo",
.probe = uvc_probe,//当它发现所能支持的设备时,就会调用该函数
.disconnect = uvc_disconnect,
.suspend = uvc_suspend,
.resume = uvc_resume,
.reset_resume = uvc_reset_resume,
//假设我们接上了一个usb摄像头,这个摄像头在uvc_ids里面,那么内核就会调用uvc_probe函数
.id_table = uvc_ids,
.supports_autosuspend = 1,
},
};
uvc_probe
uvc_register_chains(dev)
uvc_register_terms(dev, chain);
uvc_register_video(dev, stream);
video = video_device_alloc();
video->fops = &uvc_v4l2_fops;
video_register_device(video, VFL_TYPE_GRABBER, -1); //到这个地方又回到了以前我们分析的video_register_device这个函数了。
-----------------------------------------------------------------------------------------------
接下来简要看一下,usb摄像头的硬件框图:
USB摄像头驱动框架分析的更多相关文章
- USB摄像头驱动框架分析(五)
一.USB摄像头驱动框架如下所示:1.构造一个usb_driver2.设置 probe: 2.1. 分配video_device:video_device_alloc ...
- Linux USB驱动框架分析(2)【转】
转自:http://blog.chinaunix.net/uid-23046336-id-3243543.html 看了http://blog.chinaunix.net/uid-11848011 ...
- Linux USB驱动框架分析 【转】
转自:http://blog.chinaunix.net/uid-11848011-id-96188.html 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结 ...
- 2.1 摄像头V4L2驱动框架分析
学习目标:学习V4L2(V4L2:vidio for linux version 2)摄像头驱动框架,分析vivi.c(虚拟视频硬件相关)驱动源码程序,总结V4L2硬件相关的驱动的步骤: 一.V4L ...
- Linux USB驱动框架分析【转】
转自:http://blog.csdn.net/jeffade/article/details/7701431 Linux USB驱动框架分析(一) 初次接触和OS相关的设备驱动编写,感觉还挺有意思的 ...
- Hi3559AV100外接UVC/MJPEG相机实时采图设计(一):Linux USB摄像头驱动分析
下面将给出Hi3559AV100外接UVC/MJPEG相机实时采图设计的整体流程,主要实现是通过V4L2接口将UVC/MJPEG相机采集的数据送入至MPP平台,经过VDEC.VPSS.VO最后通过HD ...
- Linux USB摄像头驱动【转】
本文转载自:http://www.itdadao.com/articles/c15a509940p0.html 在 cortex-a8 中,可接入摄像头的接口通常可以分为两种, CAMERA 接口和 ...
- 2.5 USB摄像头驱动程序框架
学习目标:根据vivi驱动架构和linux-2.6.31/linux-2.6.31.14/drivers/media/video/uvc/Uvc_driver.c驱动源码,分析usb摄像头驱动程序框架 ...
- Linux USB 摄像头驱动
在 cortex-a8 中,可接入摄像头的接口通常可以分为两种, CAMERA 接口和 USB 接口的摄像头.这一章主要是介绍 USB 摄像头的设备驱动程序.在我们印象中,驱动程序都是一个萝卜一个坑, ...
随机推荐
- 扎西平措 201571030332《面向对象程序设计 Java 》第一周学习总结
<面向对象程序设计(java)>第一周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 ...
- zz阿里妈妈深度树检索技术(TDM)及应用框架的探索实践
分享嘉宾:何杰 阿里妈妈 高级算法专家 编辑整理:孙锴 内容来源:DataFun AI Talk 出品社区:DataFun 注:欢迎转载,转载请注明出处 导读:阿里妈妈是阿里巴巴集团旗下数字营销的大中 ...
- CF-1208 C.Magic Grid
题目 大意:构造一个n行n列的矩阵,使得每一行,每一列的异或和都相等,n是4的倍数. 先看4*4的矩阵,我们很容易构造出符合要求的矩阵,比如 0 1 2 3 4 5 6 ...
- js/java 获取、添加、修改、删除cookie(最全)
一.cookie介绍 1.cookie的本来面目 HTTP协议本身是无状态的.什么是无状态呢,即服务器无法判断用户身份.Cookie实际上是一小段的文本信息(key-value格式).客户端向服务 ...
- 代码问题【LDES//AAAI2019】
paper:Li Y, Zhu J, Hoi S C H, et al. Robust Estimation of Similarity Transformation for Visual Objec ...
- JDBC数据库连接测试工具
贴代码 import java.io.PrintStream; import java.sql.*; import java.util.Properties; public class ZJdbcPi ...
- python-10-列表、元组嵌套
前言 元组.列表前面章节有讲解实例,本节内容是列表.元组的多嵌套. 一.列表嵌套 1.列表嵌套操作1 # 列表的嵌套 li = ['xiaolong', '小林', ['小龙', 'xiaol'], ...
- VMWare 怎样复制/copy部署好的一台虚拟机
1:修改 vi /ect/udev/rules.d/70-persisten-net.rules 2:执行命令:uuidgen eth0 3:vi /etc/sysconfig/network-scr ...
- Algorithm: CRT、EX-CRT & Lucas、Ex-Lucas
中国剩余定理 中国剩余定理,Chinese Remainder Theorem,又称孙子定理,给出了一元线性同余方程组的有解判定条件,并用构造法给出了通解的具体形式. \[ \begin{aligne ...
- Focal Loss tensorflow 实现
def focal_loss(pred, y, alpha=0.25, gamma=2): r"""Compute focal loss for predictions. ...