首页 > 其他分享 >Camx架构-Camera kernel Driver & debugging

Camx架构-Camera kernel Driver & debugging

时间:2024-06-04 14:29:18浏览次数:12  
标签:node debugging Camx kernel request UMD camera V4L2 设备

目录

V4L2 framework

camera drivers

CRM 功能性

CRM log analysis

使能CRM log:

camera启动期间列举子设备:

userspace  连接或者取消已获得的device handles(UMD 等效于CSLLink/CSLUnlink)

userspace open request (UMD等效于CSLOpenRequest)

在SOF期间,request manager的操作:

如何将UMD sequence ID映射到kernel requestID

例如:CRM 申请ISP的request1和request2

UMD submit request

UMD submit request for realtime pipeline,并稍后在IFE/ISP中获取buf_done.

UMD submit request for offlinePreview pipeline,并稍后在ICP中获取buf_done.

SOF freeze log


V4L2 framework

camera request manager(CRM)遵循 V4L2 设备体系:

  1.  需要为userspace创建一个media node,以枚举所有被注册过的子设备(subdevices  or entities);
  2. 创建一个video node 用来管理session和requests;
  3. 创建一个bridge entities,这个子设备是被注册在media device node;
  4. 将realtime modeules之间不同的request settings同步。

 V4L2的 subdevices

SENSOR, IFE, ICP, LRME, JPEG, FD, CPAS, CSIPHY, ACTUATOR, CCI, FLASH,EEPROM, and OIS drivers are created after device bootup

以下这句log就表示CSL成功调用V4L2的子设备接口控制:

camxcslhwinternal.cpp:2786 CSLHwInternalDefaultIoctl() Ioctl succeeded for device /dev/v4l-subdev1 (Type:CSLHwIFE, FD:12, Index:0)

设备分类:

根据hw的功能,camera相关设备可以分为realtime和nonrealtime两种。所有管理内存到内存的硬件devices被称为non realtime devices;所有进行实时streams数据驱动被成为realtime devices。

KMD driver体系

1.V4L2子设备node:如图所示camera kernel drivers用V4L2子设备接口支持UMD/CSL来建立session并与hw建立通信,这为KMD提供了single point IO control entry。

2,camera node interface:为被UMD获取的每一个设备提供node session context和state machine的pool;session node与UMD node具有一一对应的映射关心。CAMX CSL 可以从session manager

获得设备session context。

​​​​​​​​​​​​​​

3,Camera node/context state machine

4,V4L2 bridge initialization sequence

camera drivers

CRM以前称为bridge derive,所有的V4L2子设备都被注册到bridge driver(根据camera devices)。

子设备注册具体内容:

1.V4L2子设备被注册到bridge drive

标签:node,debugging,Camx,kernel,request,UMD,camera,V4L2,设备
From: https://blog.csdn.net/weixin_39732855/article/details/139408360

相关文章

  • OpenCloudOS Kernel SIG 月度动态:发布 OCK 6.6.30-4 版本,新增特性支持
    作为OpenCloudOS核心SIG之一,KernelSIG负责OpenCloudOS内核的路线规划、方案讨论、技术能力输出,为OpenCloudOS提供更加稳定、可靠的内核基座。一、整体进展1、发布OCK6.6.30-4版本,合入Intel、龙芯、Phytium、兆芯等特性支持;2、OpenCloudOSKernel文档内容更新,实......
  • Advanced .Net Debugging 9:平台互用性
    一、介绍这是我的《Advanced.NetDebugging》这个系列的第九篇文章。这篇文章的内容是原书的第二部分的【调试实战】的第七章【互用性】。互用性包含两个方面,第一个方面就是托管代码调用COM,此情况叫做COM互用性(也叫做COMInterop);第二个方面就是托管代码调用从DLL中......
  • Notes: Understanding the linux kernel Chapter 9 Process Address Space
    ProcessAddressSpaceWhenaUserModeprocessasksfordynamicmemory,itdoesn’tgetadditionalpageframes;instead,itgetstherighttouseanewrangeoflinearaddresses,whichbecomepartofitsaddressspace.Thisintervaliscalleda“memoryre......
  • 深入探讨Function Calling:在Semantic Kernel中的应用实践
    引言上一章我们熟悉了OpenAI的functioncalling的执行原理,这一章节我们讲解一下functioncalling在SemanticKernel的应用。在OpenAIPromptExecutionSettings跟LLM交互过程中,ToolCallBehavior的属性之前我们的章节有介绍过ToolCallBehavior:属性用于获取或设置如何......
  • Nginx R31 doc-17-debugging 调试
    前言大家好,我是老马。很高兴遇到你。我们为java开发者实现了java版本的nginxhttps://github.com/houbb/nginx4j如果你想知道servlet如何处理的,可以参考我的另一个项目:手写从零实现简易版tomcatminicat手写nginx系列如果你对nginx原理感兴趣,可以阅读:从零......
  • 安装centos开机出现Kernel panic - not syncing: Attempted to kill init无法启动解决
    一、安装centos开机出现Kernelpanic-notsyncing:Attemptedtokillinit无法启动的解决方法  装系统总会遇到各种新鲜问题,不过不要紧,只问题才能提升解决问题的能力,今天重新装了个CENTOS6.5的64位版,可能是进行了分区(boot单独挂载到了一个分区),开机时centos报错:Kernelp......
  • Linux内核Kernel启动过程
    在上一篇计算机启动过程文章中介绍了计算机启动的基本流程,本篇文章主要介绍Linux内核Kernel的启动过程。一、内核启动的基本流程sequenceDiagramparticipantBootloaderparticipantKernelparticipantInitProcessBootloader->>Kernel:加载内核映像Kernel->>Kernel:内......
  • Semantic Kernel入门系列:利用Handlebars创建Prompts functions
    引言本章我们将学习通过HandlebarsPromptsTemplate来创建Promptsfunctions。什么是Handlebars?Handlebars是一个流行的JavaScript模板引擎,它允许你通过在HTML中使用简单的占位符来创建动态的HTML。它使用模板和输入对象来生成HTML或其他文本格式。Handlebars模板看......
  • 2022-05-18-空间静态kernel核密度、空间动态kernel核密度工具更新
    在前版本基础上,针对有用户反映当数据有极端大的异常值时,画出的图不美观,具体表现在等高线集中在某一小块区域的问题,对此做出改进如下:增加坐标轴范围的选项,该选项的范围为1-100,代表将数据从小到大排列后,取前百分之多少的量,以剔除极端大值。当数据中没有极端大值时,该项填100,当极端大......
  • 2022-05-07-无条件、空间静态、空间动态kernel核密度工具
    今天要介绍的是一个目前论文中常用到的方法:无条件kernel核密度、空间静态kernel核密度和空间动态kernel核密度。Kernel核密度估计属于非参数估计方法,不过分依赖模型,可以用来研究各地区的不平衡分布问题。假设f(x)是随机变量X的的密度函数,Xi为独立同分布的观测值,x为均值,h为带宽。......