Camx架构-Camera kernel Driver & debugging

本文详细介绍了V4L2框架下的CRM(Camera Request Manager)如何协调camera驱动,包括CRM如何处理子设备,管理session,以及CRM在SOF期间的工作流程。CRM在相机启动时枚举子设备,用户空间通过CRM与硬件交互,提交实时和非实时管道请求。同时,文章还讨论了CRM日志分析,如使能CRM日志、设备连接和断开、请求提交等操作,以帮助调试和理解camera内核驱动的工作机制。
摘要由CSDN通过智能技术生成

目录

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 driver的根设备上;

2.V4L2子设备的embedded media注册到bridge driver的根设备上;

3.提供SOF或者触发 到drivers 以应用新的settings;

4.与CSL/KMD通信关于即将要来的request;

5.跟踪每个devices可用的request;

6.出现error,要求设备重新使用特定的request。

​​​​​​​

CRM 功能性

CRM作用:

1,在不同pipeline不同设备之间同步reque;

2,从CSL bubble flag接收即将到达的request的相关信息,(双摄case下是同步开关)

3,用每帧SOF时间戳通知CSL;

4,对于以下情况的CRM序列示例,CRM可以针对例如局部闪光的闪光灯帧之类的情况诱发跳跃帧:

5,处理realtime devices的flush请求

session create:CAM_REQ_MGR_CREATE_SESSION

当从CSL调用create——session时,CRM将创建一个唯一的“session——handle”,这个handle被用于跨UMD和KMD来标识给定session。

作为session creation的一部分,CRM还将设置input request queue,创建workqueue用于处理任务并初始化内存管理参数(例如安全/非安全的memory context banks)

Devices linking – CAM_REQ_MGR_LINK

single session中所有real-time devices都被作为media controller graph连接的一部分,CSL通过bridge driver链接session中具有实时功能的模块。

例如,在下图中,拓扑将sensor和IFE与bridge devices相连,并形成实时图。 bridge driver可以遍历图中链接的所有realtime entities,

并通过子设备在每个链接实体上针对指定请求的子设备公开的操作顺序应用设置。

此处提到的链接仅用于桥接器,以标识链接的模块。 该链接不表示模块之间的数据流/传输。

Example topology for the connection of sensor and IFE

Example topology for front/back camera with flash

UMD call sequence the setup a link

CRM sequeue 包括如下步骤:

 1,Create session

2,Set up link with connected devices (optionally, connect to another link for dual cam sync)

3,Open new request

4,Devices notify CRM of packet availability for the request

5,IFE notifies CRM of SOF trigger/error etc.

6,On trigger, if any requests are ready, CRM asks devices to apply the request

CRM可以获取已连接设备的注册操作,CRM储存和处理每一台设备的request——table和内部queue的信息,而且订阅了每个device感兴趣的事件,其中比较重要的一件就是IFE订阅了SOF事件。

以下堆栈说明了CAM_REQ_MGR_LINK的调用堆栈:

__cam_isp_ctx_link_in_acquired: 2307 next state 3

__cam_isp_ctx_link_in_acquired+0x44/0x170

cam_context_handle_crm_link+0x54/0x108

__cam_node_crm_link_setup+0x30/0x80

cam_req_mgr_link+0xd00/0xee8

cam_private_ioctl+0x234/0x958

__video_do_ioctl+0x220/0x338

video_usercopy+0x320/0x650

video_ioctl2+0x14/0x20

v4l2_compat_ioctl32+0x78/0x90

compat_SyS_ioctl+0x128/0x248

__sys_trace_return+0x0/0x4

当IFE 触发CRM workqueue时调用以下stack:

cam_req_mgr_cb_notify_trigger+0x1c/0x180

__cam_isp_ctx_notify_sof_in_activated_state+0x74/0x158

__cam_isp_ctx_handle_irq_in_activated+0x184/0x348

cam_context_handle_hw_event+0x34/0xa0

cam_tas
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

塞外totem

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值