韦东山项目视频之摄像头驱动1 V4L2框架分析

本文详细分析了Linux内核V4L2框架在摄像头驱动中的应用,介绍了从硬件相关层到核心层的驱动注册过程,包括video_device结构体的分配、设置和注册,以及file_operations的定义。通过vivi虚拟视频驱动为例,阐述了open、read、write及ioctl操作的执行流程,并探讨了如何通过ioctl设置硬件属性。
摘要由CSDN通过智能技术生成

一、摄像头驱动 V4L2框架分析

摄像头驱动是属于字符设备驱动程序

V4L2:  vidio for linux version 2,我们分析的是linux3.4.2内核。

回顾二期,怎么写驱动?

1.构造一个file_operations:.open=drv_open .read=drv_read
2.告诉内核:register_chrdev(主设备号,名字,&file_operations)
3.入口函数:调用register_chrdev
4.出口函数:卸载
一般采用register_chrdev的代替方法:分配、设置cdev,cdev_add

而对于复杂的驱动,采用分层的概念。
例如LCD驱动中分为两层:上层通用的核心层内核已经帮我们做好,即在fbmem.c
1.构造file_operations(open read write 。。)
2.注册 

 3.入口、出口

我们做的是硬件相关层,供上层file_operations调用
1.分配一个fb_info 结构体
2.设置
3.注册
4.硬件相关的操作

因此,对于这种复杂的驱动,我们的做法:
1.分配某个结构体
2.设置
3.注册
4.硬件相关

现在分析V4L2框架:

把usb设备接到系统前台,会有打印信息,根据打印信息在内核里找出驱动,用dmsg命令查看;
grep "Found UVC" * -nR 搜索 在uvc_driver.c里,这是个硬件相关的驱动。

分析代码,猜测V4L2  框架 肯定也是分为至少两层  。


app 调用 open read write -->调用 v4l2_fops 里的 open read write->调用硬件相关层的video_device 里提供的函数
----------------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值