v4l2框架分析

本文介绍了V4L2(Video for Linux Two)框架的分层概念,从如何编写驱动程序开始,详细讲解了驱动的构造、注册过程。通过分析LCD设备驱动的分层结构,阐述了分层驱动的优势。接着,重点讨论了V4L2框架的硬件相关层(如uvc_driver.c)和核心层(如v4l2_dev.c),展示了如何在硬件相关层注册video_device结构体。此外,还分析了虚拟视频驱动vivi.c的实现步骤。总结了应用程序调用open、read等函数时,驱动程序如何响应并执行硬件操作。对于ioctl函数的调用,驱动会处理用户空间的参数,进行属性设置和优先级调整。
摘要由CSDN通过智能技术生成
1.如何写驱动程序:
  1.构造file_operations结构体
实现其中的open,read,write成员。
  2.告诉内核:register_chrdev(主设备号,&file_operations,name);
  3.入口函数,出口函数。


2.对于复杂的字符设备驱动程序,使用分层概念。
如对于LCD设备驱动程序分为两层:fbmem.c和硬件相关层两层。
fbmem.c中:完成分配,设置,注册file_operations结构体。
硬件相关层中:分配、设置、注册fb_info结构体,以及一些硬件相关的操作。
当应用程序调用open等函数时,会调用fbmem.c中的file_operations中的open成员,里面又调用硬件相关中的fb_info结构体中用于操作硬件的函数。


3.怎么写分层驱动:分配某结构体,设置,注册,硬件相关操作。


4.V4L2框架也是基于这种分层模型:有核心层和硬件相关层。
dmesg查看内核打印信息。
在硬件相关层uvc_driver.c中的video_register_device函数,分配设置注册了一个video_device结构体。
反推得知核心层为v4l2_dev.c:
cdev_alloc();
cdev->ops=v4l2_fops;//file_operations结构体,供应用层调用。
cdev_add();


5.虚拟视频驱动分析&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值