V4L2框架

V4L2框架

 

V4L2有三层,应用层(SCI),核心层(V4L2_dev.c),硬件相关层(uvc_driver.c)

一、应用层(SCI)

通过调用open,read,write,ioctl函数访问到底层设备驱动

二、核心层(V4L2_dev.c)

这层是通过字符设备驱动实现一套标准V4L2_fops.这个结构体中的所有成员将对应调用到硬件相关层video_device->fops(程序员实现的)中的成员函数。

三、硬件相关层(uvc_driver.c)

提供给程序员一套调用接口函数,如 V4L2_device_register    video_device_alloc    video_register_device

 

怎么写V4L2驱动

1、分配/设置/注册 V4L2_device (注册函数V4L2_device_register   作用:辅助作用,用于初始化自旋锁,引用计数)  

2、分配video_device  (用video_device_alloc函数)

3、设置:

a 、vfd->v4l2_dev=v4l2_device(第一步分配的v4l2_device)

b、设置vfd->fops(被上层的V4L2_fops调用),设置vfd->ioctl_ops(ioctl调用)

c、APP可能通过IOCTL来设置/获得亮度等信息,驱动程序里,谁来接收/存储/设置到硬件?

属性:v4l2_ctrl    提供信息

管理:v4l2_ctrl_handler   步骤如下

v4l2_ctrl_handler_init    初始化

 v4l2_ctrl_new_std  v4l2_ctrl_new_custom  创建一个v4l2_ctrl  并放入v4l2_ctrl_handler链表

v4l2_dev->ctrl_handler=handler   这样就跟video_device关联起来了

4、注册video_device  用函数video_register_device

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值