当前位置: 首页 > article >正文

高通CRM的v4l2驱动模型

概述下crm中v4l2框架的初始化创建流程:

对于CRM主设备的v4l2框架创建过程:

1、分配和初始化v4l2 device对象

2、分配和初始化media device对象,然后将v4l2 device中mdev绑定到media device上

3、分配和初始化video device对象,将其中v4l2 device指向前面创建的v4l2 device对象;

将其中entity对象添加到media device中entities的链表中。创建video device时会创建设备结点/dev/video0,用于用户空间对内核空间的访问。

对于子设备的的v4l2 框架创建流程:

子设备有很多,cam-caps、cam-isp、cam-ope等等,他们依次进行初始化创建。

以cam-caps为例:

1、分配和初始化v4l2 subdev对象,其中包括四个主要成员:

list、v4l2_dev、entity、devnode。

(1)struct media_entity entity; //用于挂到media_device的entities链表上

(2)struct list_head list; //用于挂在v4l2_device的subdevs链表上

(3)struct v4l2_device *v4l2_dev; //指向一个v4l2_device对象,跟主设备指向的是同一个v4l2_device对象

(4)struct video_device *devnode; //创建设备节点/dev/v4l2-subdevX时创建的video_device

其中v4l2_dev指向主设备创建的v4l2 device对象。

list是链表头,它将挂载v4l2_device的subdevs链表上。

entity会挂到主设备创建的edia device的entities链表上。

在创建v4l2 subdev对象时,会创建一个video device,而devnode会执行创建设备video_device,结点名称为/dev/v4l2-subdev0。用户空间通过这个结点和内核空间交互。

其他的子设备和cam-caps按照相同的方式进行分配的创建初始化,并完成挂载。


http://www.kler.cn/a/163414.html

相关文章:

  • 即插即用篇 | YOLOv8 引入 代理注意力 AgentAttention
  • Java面试要点02 - 自动装箱与拆箱的原理与性能解析
  • Kafka 快速入门(一)
  • hive数据查询语法
  • stm32 踩坑笔记
  • 【问题解决】Tomcat由低于8版本升级到高版本使用Tomcat自带连接池报错无法找到表空间的问题
  • 【嵌入式C语言】《字符串-----数字》转换函数总结
  • 国产化软件突围!怿星科技eStation产品荣获2023铃轩奖“前瞻优秀奖”
  • 【MySQL】聚合函数和分组(查找)
  • 基于深度学习路径规划RRT*-训练图像预处理
  • 制作一个RISC-V的操作系统四-嵌入式开发介绍
  • KNN朴素贝叶斯(根据已知推测未知)
  • 计算一组x和y(一维数组)
  • 3D渲染和动画制作软件KeyShot Pro mac附加功能
  • Opencv UI自动化应用人脸识别
  • 设计模式--建造者模式
  • Matplotlib中的titles(标题)、labels(标签)和legends(图例)
  • Android studio生成二维码
  • 浅谈前端代码里的命名规范与注释
  • 大一C语言作业 12.8
  • 图片处理OpenCV IMDecode模式说明【生产问题处理】
  • Qt工程文件分离、Qtimer定时器、Qt Creator 常用快捷键
  • jsp 个人网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • Hazel引擎学习(十二)
  • C++初阶-string类的模拟实现
  • Linux中的文件系统